Jenkins + GitLab 实现CI自动集成

  • A+
所属分类:Linux

1、Jenkins上安装GitLab插件

Manage JenKins -> Manage Plugins,然后在Available中搜索gitlab,然后选择进行安装然后重启Jenkins。

040620 1037 JenkinsGitL1 - Jenkins + GitLab 实现CI自动集成

 
 

按照后可以在Installed 中看到

040620 1037 JenkinsGitL2 - Jenkins + GitLab 实现CI自动集成

 
 

2、配置gitlab访问认证

在jenkins系统中选择系统设置

040620 1037 JenkinsGitL3 - Jenkins + GitLab 实现CI自动集成

 
 

找到gitlab选项,写入填写相关信息

Connection name : 显示名字,

Gitlab host URL :gitlab 服务器地址,根据需求填写可以时域名、IP地址,如果时https的,请填写https://xxxx

Credentials : 访问仓库的权限,如果以前没有加过,我们选择后面的Add进行添加

040620 1037 JenkinsGitL4 - Jenkins + GitLab 实现CI自动集成

 
 

添加gitlab权限,推荐使用Token方式。

Kind 我们选择gitlab api token

040620 1037 JenkinsGitL5 - Jenkins + GitLab 实现CI自动集成

 
 

获取Token,登录到gitlab ,点击用户设置

040620 1037 JenkinsGitL6 - Jenkins + GitLab 实现CI自动集成

 
 

然后选择Access Token,输入一个名字,然后选择有效期,然后设置权限,点击Create personal access token就会生产一个token

 
 

040620 1037 JenkinsGitL7 - Jenkins + GitLab 实现CI自动集成

 
 

把生产的token填写到Jenkins的那个窗口中报错,然后在返回的设置界面记得选择这个添加的权限。,然后可以选择连接测试,如果没问题会返回Success,最后别忘记sava 保存

040620 1037 JenkinsGitL8 - Jenkins + GitLab 实现CI自动集成

 
 

新建一个自由风格的Jenkins任务,在触发器我们选择Build when a change is pushed to GitLab 这一行,并记录下这一行的这个url地址,选择高级创建一个token,用于gitlab向jenken推送消息,然后保存。

040620 1037 JenkinsGitL9 - Jenkins + GitLab 实现CI自动集成

 
 

登录gitlab,找到对应的项目,导航到settings,选择integrations

填写上一个步骤获取的两个值,设置触发动作,然后Add webhook,如果报错Url is blocked,博客有另外一张文章解决

040620 1037 JenkinsGitL10 - Jenkins + GitLab 实现CI自动集成

 
 

 
 

完成后可以在下面找到,点击测试选择要测试的动作,无问题后会返回HTTP:200

 
 

040620 1037 JenkinsGitL11 - Jenkins + GitLab 实现CI自动集成

 
 

 
 

同时在Jenkinss上也会看到,任务执行

040620 1037 JenkinsGitL12 - Jenkins + GitLab 实现CI自动集成

 
 

此时gitlab就和Jenkins联动起来了,你在push 代码到gitlab就会触发Jenkins任务,下面就是根据自己的需求编写build过成了,我这里是我的一个小环境,build过程比较暴力,纯脚本编写

因为我们一个django项目,clone 代码,发布运行。

 
 

简单截个图,使用git工具把代码拉取到本地

040620 1037 JenkinsGitL13 - Jenkins + GitLab 实现CI自动集成

 
 

Build: 直接执行脚本

040620 1037 JenkinsGitL14 - Jenkins + GitLab 实现CI自动集成

 
 

脚本内容

#!/bin/bash

cd /var/lib/jenkins/workspace/coding_update

/usr/local/bin/pip3 install -r requirements.txt

chown -R apache:apache /var/log/opslog/

/etc/init.d/ops stop

sleep 1s

/etc/init.d/ops start

 
 

 
 

 
 

 
 

头像

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: