整理记录我在学习Jenkins自动化部署期间的一些注意事项和使用命令,待完善中。(看来是已经烂尾了)
使用Docker安装Jenkins
在使用Docker安装Jnekins之前,请先准备好maven、node环境。
我使用的是jenkins/jenkins
的镜像,直接使用如下命令拉取docker镜像即可。
docker pull jenkins/jenkins
然后,使用下面这段缝合了多个教程的命令创建docker容器。
docker run -d -uroot \
-p 28080:8080 \
-p 25000:50000 \
-v /home/natuki/environment/jenkins:/var/jenkins_home \
-v /home/natuki/environment/jenkinsWar/jenkins.war:/usr/share/jenkins/jenkins.war \
-v /etc/localtime:/etc/localtime \
-v /home/natuki/environment/maven:/usr/local/maven \
-v /home/natuki/environment/node:/usr/local/node \
--name jenkins jenkins/jenkins
参数 | 解释 |
---|---|
-d | 后台运行 |
-uroot | 在容器中使用root用户,避免权限问题 |
-p 28080:8080 | 将容器8080端口映射到本机28080端口,用于Web访问 |
-p 28081:50000 | 参数表示将容器50000端口映射到本机25000端口,供Master和Agent连接使用 |
-v /home/natuki/environment/jenkins:/var/jenkins_home | 将容器的jenkins_home目录挂载到本机,便于容器被修改时还能使用上一次的配置 |
-v /home/natuki/environment/jenkinsWar/jenkins.war:/usr/share/jenkins/jenkins.war | 可选,挂载Jenkins的war包到容器,在需要更新到新版本Jenkins时,可以去官网下载war包替换 |
-v /etc/localtime:/etc/localtime | 使容器与本机时间设置一致 |
-v /home/natuki/environment/maven:/usr/local/maven | 挂载maven目录到容器 |
-v /home/natuki/environment/node:/usr/local/node | 用于挂载node目录到容器 |
容器内已经自带OpenJDK11,无需额外挂载。
然后,启动jenkins容器
docker start jenkins
配置Jenkins国内镜像
为了避免Jenkins初次启动安装官方推荐插件时,受墙内网速的影响,可以配置镜像源,这里以清华大学jenkins镜像源为例。
首先进入容器执行bash。
docker exec -it jenkins /bin/bash
然后在/var/jenkins_home目录下编辑hudson.model.UpdateCenter.xml文件,将内容修改为:
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>
除此之外,还需要编辑/var/jenkins_home/updates目录下的default,json文件,直接执行命令替换即可:
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
进入Web管理端
初次使用时,通过查看docker容器日志的方式获得管理员密码。
docker logs jenkins
然后以部署jenkins的服务器IP\:28080的方式访问Web管理端。
安装过程省略,通常来说按照系统推荐配置即可。
安装插件
需要额外安装的Jenkins插件:
- Maven Integration plugin
- Publish Over SSH
部署前端Vue项目
建议将dist目录压缩成tar包后再通过SSH推送到服务器解压部署,避免直接上传dist目录时部分文件丢失。
本地Shell构建命令:
cd /var/jenkins_home/workspace/projectName
ln -sf /usr/local/node/bin/node /usr/bin/node
ln -sf /usr/local/node/bin/npm /usr/bin/npm
npm config set registry https://registry.npmmirror.com
npm install
npm run build:prod
tar -cvf dist.tar dist/
将编写好的cleanProject.sh(用于清空服务器部署的旧版前端dist目录)通过SSH推送到服务器后,执行如下命令:
cd /www/www/projectName/frontend
sh cleanProject.sh
编译后的dist.tar通过SSH推送到服务器后,执行如下命令解压tar包:
cd /www/www/projectName/frontend
tar -xvf dist.tar
rm -rf dist.tar
(待完善)