模拟环境:
jenkins:192.168.10.20:8080
gitlab:192.168.10.101
一、配置gitlab token
点击头像下拉框-【Settings】-【Access Tokens】
Name: 随便写
Scopes:勾选api
点击下方确认按钮,创建Token
复制下方【Feed token】备用
二、安装jenkins的gitlab插件
安装后重启jenkins
三、配置jenkins的gitlab配置
【系统管理】-【系统配置】-【Gitlab】
Connection name:随便写
Gitlab host URL:写gitlab的访问地址
Credentials:点击【添加】
Domain:选择【全局凭证】
类型:【GitLab API token】
范围:【全局】
API token:填写 上面gitlab里复制的token
添加后,Credentials选择【GitLab API token】
然后测试连接-【保存】
四、新建jenkins任务
新建软件项目,参考配置
配置项目参数
保存Url连接,要填写到gitlab里
五、配置gitlab触发
选择【Settings】-【Webhooks】
URL:输入jenkins里【构建触发器】提示的url
Trigger:勾选【Push events】
保存【Save Changes】
测试触发
选择创建好的Project Hooks【Test】-【Push events】
返回200就代表成功,可以去jenkins里查看输出
六、贴上jenkins被触发构建项目的脚本
本地将gitlab里的html代码打包成tar.gz格式的压缩包【nginx-build.sh】
然后用ansible【nginx-deploy.yaml】复制到目标主机,最后远程执行创建容器的脚本【nginx-deploy.sh】
[root@zhuhao script]# cat nginx-build.sh #!/bin/bash WORK_DIR=/var/lib/jenkins/workspace/nginx-3 DATE_TIME=`date +%Y-%m-%d-%H-%M-%S` TAR_NAME=nginx-${DATE_TIME}.tar.gz WEB_DIR=/root/deploy/html cd ${WORK_DIR} && tar -cvf /opt/${TAR_NAME} ./* echo ${TAR_NAME} > /root/server/script/tarname ansible-playbook /root/server/script/nginx-deploy.yaml -e tarname=`cat /root/server/script/tarname`
[root@zhuhao script]# cat Dockerfile From node1:5000/zh_nginx COPY html /usr/share/nginx/html
[root@zhuhao script]# cat nginx-deploy.sh #!/bin/bash cd /root/deploy docker stop nginx-web docker rm nginx-web docker build -t nginx-web . docker run --name nginx-web -d -p 88:80 nginx-web
[root@zhuhao script]# cat nginx-deploy.yaml --- - hosts: nginx-node tasks: #- name: copy deploy.sh # copy: src=/root/server/script/nginx-deploy.sh dest=/root/deploy/nginx-deploy.sh - name: copy Dockerfile copy: src=/root/server/script/Dockerfile dest=/root/deploy/Dockerfile - name: copy tar copy: src=/opt/{{ tarname }} dest=/root/deploy/{{ tarname }} - name: copy verison copy: src=/root/server/script/tarname dest=/root/deploy/tarname - name: tar -xvf shell: tar -xf /root/deploy/{{ tarname }} -C /root/deploy/html/ - name: run script nginx-deploy script: /root/server/script/nginx-deploy.sh
[root@zhuhao script]# cat tarname nginx-2020-09-26-00-41-27.tar.gz
2020年9月26日21:06:22