模拟环境:
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