Jenkins+gitlab手动部署
环境:
Jenkins:172.16.88.221 (安装Jenkins和git命令)
gitlab:172.16.88.221 (安装gitlab)
远程部署机器:172.16.88.220 (安装nginx测试用)
1、安装插件
#打开jenkins页面
#添加插件:系统管理 - 插件管理
#需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter
#添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。
#添加主机:系统管理 - 系统设置 找到Publish over SSH,配置远程部署的服务器。
下面的是远程服务器的ip
把Jenkins的公钥添加到远程服务的/root/.ssh/authorized_keys里面。
2、新建一个自由风格项目
#添加完主机之后,新建一个项目,开始配置构建操作
3、打包方式
打包方式1:使用http方式打包
选择了之后如果账号密码正确和链接正确的话,红色的提示语会消失的,默认打包的是master分支。
打包方式2:ssh方式
使用ssh方式打包添加用户方式:
4、测试打包:
复制这个路径去服务器上面可以看到打包下来的文件:
[[email protected] test]# ll /data/jenkins/workspace/test 总用量 8 -rw-r--r-- 1 root root 10 8月 20 11:13 index.html drwxr-xr-x 2 root root 4096 8月 20 11:15 tdir
5、打包之后远程传输方式
我Git代码目录结构是这样的:
需求:
1. 只远程传输tdir目录、index.html和tmp下的文件
2. 不需要传输target目录, 不传输tmp目录下的tmp1.txt文件。
方式1:打包完之后通过构建环境方式部署
即:运行构建后通过SSH发送文件或执行命令
目前远程服务器220上面部署目录什么都没有:
保存构建:确认日志有没报错
构建之后:
方式2:通过执行本地脚本或者命令去部署
如使用下面的功能也是可以实现上面的需求的:
rsync -av ./ --exclude=target/ --exclude=tmp/tmp1.txt [email protected]:/usr/share/nginx/html
./ :默认是打包之后的项目工作目录
我上面拉去的是简单的文件代码,所以直接复制导前端目录即可。
如果是Java或者其他的代码可以写一个脚本去执行。