doina

一个小菜鸟运维工程师.

Jenkins 整合 Gitlab

配置Gitlab

创建一个新项目
《Jenkins 整合 Gitlab》

上传服务器秘钥到gitlab
# 生成秘钥
[root@deploy ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:NRuBl+TBQow5l3nb+E/MCg95tpZRF/+amoRTaBIhTXw root@deploy
The key's randomart image is:
+---[RSA 2048]----+
|      .O+*+.     |
|      +.XoEo   . |
|       o.==+    o|
|         oo=. . o|
|        S +o.+ ..|
|         o+o= + .|
|          o*.B o |
|           o*.+  |
|           .o.   |
+----[SHA256]-----+

[root@deploy ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAABAQC1kOUt1qRxd/rJJkOIYOeM9u0twE9pZq4txKwEtAy3lT2LCcxgWbcjC0VBI84FO9XE8BKA/oEA1wCErVevnDoYfLT99x8t6SLc8bKZ9SOSAAt1LO5HkzaaBDnuoXyVRduWJHlN9zS7lGYxbEY1AHYWwA3hDl3Y/SPUC6ulwCU7QnbOn8GE7qGXW8BDdeTyIEXqn3pFYFTa7TiqnjR9w3iqzso32Yo/sDeEsdsm6uw8uEVUexBqeUdjB6OP35JLpnwaGhoXeiIW87fCtk37PFzb5quZB2yoBKTJHFU8lC+Ihh/Z/iGOyU0mmjvq8ot8P5RfDPFtpFc4Oipm3c3etNd root@deploy
将公钥上传到gitlab

《Jenkins 整合 Gitlab》

初始化项目
[root@deploy ~]# mkdir -p /data/Ansible/
[root@deploy ~]# cd /data/Ansible/
[root@deploy Ansible]# git config --global user.name "baiyongjie"
[root@deploy Ansible]# git config --global user.email "misterbyj@163.com"

[root@deploy Ansible]# git clone ssh://git@101.89.82.106:59888/root/Ansible.git code
Cloning into 'code'...
The authenticity of host '[101.89.82.106]:59888 ([101.89.82.106]:59888)' can't be established.
ECDSA key fingerprint is SHA256:KgiTZyrCxFQwHivVyAYc1XrpvfWVliLaC+S0cg2fwYE.
ECDSA key fingerprint is MD5:b8:f9:75:c9:53:c1:48:6e:90:65:c5:5b:e7:5c:bd:ba.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[101.89.82.106]:59888' (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.

[root@deploy Ansible]# cd code/
[root@deploy code]# echo "##### jenkins test"  > README.md 
[root@deploy code]# git add .
[root@deploy code]# git commit -m 'add readme'
[master (root-commit) 3b6717d] add readme
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
[root@deploy code]# git push -u origin master    
Counting objects: 3, done.
Writing objects: 100% (3/3), 227 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git@101.89.82.106:59888/root/Ansible.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
配置Gitlab,为整合Jenkins做准备

创建访问令牌,设置方法如下图
《Jenkins 整合 Gitlab》

复制访问令牌,备用
《Jenkins 整合 Gitlab》

复制Gitlab仓库地址,备用
《Jenkins 整合 Gitlab》

配置Jenkins

选择系统管理->管理插件->可选择插件->搜索 gitlab
《Jenkins 整合 Gitlab》

插件安装完成后会显示
《Jenkins 整合 Gitlab》

然后继续安装Gitlab Authentication和Gitlab Hook
《Jenkins 整合 Gitlab》

配置jenkins连接gitlab,选择左侧的系统管理,然后选择中间的系统设置
《Jenkins 整合 Gitlab》

然后点击左上角的配置,选择Gitlab
《Jenkins 整合 Gitlab》

配置GitLab,Connection Name随便填,Git Host URL填GitLab的访问地址,然后点Add—jenkins,如图:
《Jenkins 整合 Gitlab》
《Jenkins 整合 Gitlab》

Credentials选择刚创建的GitLab Api Token,然后点下Test Connection,看下是否成功,如成功点击最下面的保存
《Jenkins 整合 Gitlab》

配置Git plugin
《Jenkins 整合 Gitlab》

创建一个测试工程,选择自由风格
《Jenkins 整合 Gitlab》

源码管理选择git,选择Add-Jenkins,配置Gitlab的账号密码
《Jenkins 整合 Gitlab》
《Jenkins 整合 Gitlab》

配置自动触发,点击构建触发器,先勾选Build when a change is pushed to GitLab,点击高级,然后再点击一下Generate就会生成一个Secret Token,如下
《Jenkins 整合 Gitlab》

点击左下角的保存按钮。记录两个东西,一个是Build when a change is pushed to GitLab那一行中,GitLab CI Service URL:后面的 URL;
还有一个就是刚刚生成的Secret Token,这俩在后面配置GitLab工程时需要用到

配置Gitlab工程

在gitlab进入那个叫Ansible的项目,点击设置,点击导入所有仓库,在URL里填写刚刚记下来的URL,在安全令牌里填写刚刚记下来的Secret Token,如图:
《Jenkins 整合 Gitlab》

然后点击下面绿色的增加Web钩子,如多出一个如下图的web钩子
《Jenkins 整合 Gitlab》

如果提示 Urlis blocked: Requests to localhost are not allowed,这需要开启允许钩子访问本地网络
《Jenkins 整合 Gitlab》

对刚刚生成的web钩子点击test,选择push events,然后就会出现200的成功字样,如图:
《Jenkins 整合 Gitlab》

如果你再点击一下test上面的edit,就会看到钩子最近调用情况,再点击view details的话,就会看到具体的调用细节,如图:
《Jenkins 整合 Gitlab》

测试自动构建

在服务器上push代码,

[root@deploy code]# echo "测试jenkins是否会自动构建" > auto-jenkins
[root@deploy code]# git add .
[root@deploy code]# git commit -m 'test autojenkins'
[master 2290848] test autojenkins
 1 file changed, 1 insertion(+)
 create mode 100644 auto-jenkins
[root@deploy code]# git push origin master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 320 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git@101.89.82.106:59888/root/Ansible.git
   3b6717d..2290848  master -> master

到Jenkins查看构建记录,发现push动作已经出发了Jenkins的自动构建
《Jenkins 整合 Gitlab》

查看构建的控制台输出日志,重点看commit message和Finished
《Jenkins 整合 Gitlab》

结束语.

至此,Jenkins结合Gitlab就已经做完了,
每次开发push代码后触发jenkins的自动构建,
可以在下面的构建步骤里增加一些shell,ansible-playbook等来帮助我们完成自动部署等操作.

点赞

发表评论

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据