CICD
CI(持续集成): 将各个开发人员的工作集合到一个代码仓库中,成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中,通常,每天都要进行几次,主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。
CD(持续交付): 通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中,这旨在解决开发和运维团队之间可见性及沟通较差的问题,它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。
CD(持续部署): 是一种更高程度的自动化,无论何时对代码进行重大更改,都会自动进行构建/部署,持续部署扩展了持续交付,以便软件构建,在通过所有测试时自动部署。
服务器信息
名称 | 地址 | 访问路径 | 登录信息 |
---|---|---|---|
gitlab | 192.168.1.216 | http://192.168.1.216:880/users/sign_in | root/hn#28099668@! |
jenkins | 192.168.1.216 | http://192.168.1.216:8080/ | root/hn#28099668@! |
dev-docker | 192.168.1.210 | http://192.168.1.210:9000/ | admin/hn28099668 |
Jenkins
jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
构建jar包并运行
目标: 1.代码提交到git指定分支后,由jenkins自动打包并部署到服务器
Jenkins配置
在 jenkins 的 Dashboarb 页面选择:[新建任务] –> <填写任务名称> –> [构建一个maven项目] –> [确定]
General
【描述】–> <随意非必须>
源码管理
【源码管理】–> [Git] –> [Add Repository] –> <填写项目仓库的http地址> –> 【Credentials】- 添加git的账号密码作为凭证 –> <修改需要发布的分支名默认为master>
构建触发器
[触发远程构建 (例如,使用脚本)] –> <身份证令牌处填写任意字符串>
使用浏览器访问:http://192.168.1.216:8080/job/air-dev/build?token=hniot 触发构建(注,访问此链接如果未登录则不能生效)
免登录的链接为: http://192.168.1.216:8080/buildByToken/build?job=air-dev&token=hniot
Build
【Root POM】–> <pom文件相对于git仓库的路径> –> <Goals and options为打包时指定环境:clean install -Pprod -Dmaven.test.skip=true(生产环境)> –> [保存],例如:
如图路径为:pom.xml,如果pom.xml在air-module-system目录下则值为:air-module-system/pom.xml
Dashboard
配置完成,通过手动构建,查看构建日志查看是否成功
将jar包发送到指定服务器上
构建前动作配置【Pre Steps】
构建后动作配置【Post Steps】–> [Add post-build step] –> [Send file or execute commands over SSH] –> <选择提前配置好的服务器> –> <填写jar包路径> –> <填写到目标服务器的路径> –> <填写完成后需要执行的命令>
配置服务器信息: Dashboard –> 系统管理 –> 系统配置 –> Publish over SSH下添加即可
jar包路径:**/为通配符匹配任意目录,具体jar包的路径可通过观察控制台输出即可找到,也可使用通配符的方式去扫描
命令为执行目标服务器的脚本时应注意检查脚本的执行权限

获取指定jar包的pid并杀死进程的sh脚本(killjar.sh):
#!/bin/bash
#获取正在运行中的jar包
name=$1
pid=`ps -ef | grep java | grep $name | awk '{printf $2}'`
if [ -z $pid ]
then
echo "$name not started"
else
kill -9 $pid
echo "$name stop success"
fi
调用方式为(jarname为jar包的名称): ./killjar.sh jarname
gitlab配置
配置构建部署的触发器
【项目仓库】 –> [设置] –> [Webhooks] –> <URL填写免登录的路径> –> <勾选对应事件> –> [添加webhook] –> [添加完成后可拉到最下面进行测试]
构建vue项目
Dashboard
[新建任务] –> <填写任务名称> –> <构建一个自由风格的软件项目>
源码管理
构建环境
<Provide Node & npm bin/ folder to PATH> –> <选择对应的node版本>
注node版本配置方式:Dashboard –> 系统管理 –> 全局工具配置 –> NodeJS
构建
<增加构建步骤> –> <执行shell> –> <填写对应的打包命令>
npm install
npm run build
rm -rf ./dist.tar.gz;
tar -zcvf dist.tar.gz ./dist
构建后操作
<增加构建后操作步骤> –>
下面的Exec command作用为在root/air/ui下将tar包移到/data/docker/air/dist,移动前先将源文件进行备份,移动后解压
cd air/ui;
rm -rf /data/docker/air/bak/dist/*;
mkdir -p /data/docker/air/bak/dist;
mv /data/docker/air/dist/* /data/docker/air/bak/dist/;
mv /root/air/ui/dist.tar.gz /data/docker/air/;
cd /data/docker/air/;
tar -zxvf dist.tar.gz ;
chmod -R 755 /data/docker/air/dist