Jenkins整合Gitlab
1.配置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的凭证
此处使用的用户名和密码就是gitlab代码库登录的账号密码,添加完后保存并且应用。
新建一个项目,在配置里选择源码管理
此处的URL就是gitlab里项目代码的HTTP地址,证书就选择刚才添加的凭证。添加完后保存并应用。
测试gitlab初始化项目到jenkins里。点击创建,就能看到下面的进度条。
点击进度条,然后点击控制台输出,就能看到刚才项目的构建情况。
配置Gitlab,为整合Jenkins做准备
创建访问令牌,设置方法如下图
复制访问令牌,备用
复制Gitlab仓库地址,备用
2.配置Jenkins
选择系统管理->管理插件->可选择插件->搜索 gitlab
插件安装完成后会显示
然后继续安装Gitlab Authentication和Gitlab Hook
配置jenkins连接gitlab,选择左侧的系统管理,然后选择中间的系统设置
然后点击左上角的配置,选择Gitlab
配置GitLab,Connection Name随便填,Git Host URL填GitLab的访问地址,然后点Add—jenkins,如图:
Credentials选择刚创建的GitLab Api Token,然后点下Test Connection,看下是否成功,如成功点击最下面的保存
配置Git plugin
创建一个测试工程,选择自由风格
源码管理选择git,选择Add-Jenkins,配置Gitlab的账号密码
配置自动触发,点击构建触发器,先勾选Build when a change is pushed to GitLab,点击高级,然后再点击一下Generate就会生成一个Secret Token,如下
点击左下角的保存按钮。记录两个东西,一个是Build when a change is pushed to GitLab那一行中,GitLab CI Service URL:后面的 URL;
还有一个就是刚刚生成的Secret Token,这俩在后面配置GitLab工程时需要用到。
3.配置Gitlab工程
在gitlab进入那个叫Ansible的项目,点击设置,点击导入所有仓库,在URL里填写刚刚记下来的URL,在安全令牌里填写刚刚记下来的Secret Token,如图:
然后点击下面绿色的增加Web钩子,如多出一个如下图的web钩子
如果提示 Urlis blocked: Requests to localhost are not allowed,这需要开启允许钩子访问本地网络
对刚刚生成的web钩子点击test,选择push events,然后就会出现200的成功字样,如图:
如果你再点击一下test上面的edit,就会看到钩子最近调用情况,再点击view details的话,就会看到具体的调用细节,如图:
4.测试自动构建
[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的自动构建
查看构建的控制台输出日志,重点看commit message和Finished
5.测试ansible
[root@deploy ansible]# cd /etc/ansible/
[root@deploy ansible]# > hosts
[root@deploy ansible]# vim hosts
[client]
10.241.0.2
# 生成秘钥
[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 ansible]# ssh-copy-id 10.241.0.2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.241.0.2's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '10.241.0.2'"
and check to make sure that only the key(s) you wanted were added.
#测试ansible能否正常运行
[root@deploy ansible]# ansible client -m ping
10.241.0.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
#新建一个测试的ansible-playbook
[root@deploy ~]# mkdir -p /data/Ansible-playbook
[root@deploy ~]# vim /data/Ansible-playbook/jenkins-mkdir.yml
---
- hosts: client
gather_facts: no
tasks:
- name: mkdir jenkins-test-dir
file: path=/data/jenkins-test-dir state=directory
配置jenkins
登陆jenkins 选择系统管理->管理插件 安装以下两个插件: Ansible、AnsiColor
回到首页,新建一个任务,选择构建一个自由风格的任务
然后构建的步骤新加一个Ansible-playbook,配置脚本路径,然后保存
查看新构建的工程
执行刚才构建工程
查看工程构建的控制台输出
到client主机查看 jenkins-test-dir 目录是否创建成功
#查看client的ip地址
[root@deploy ~]# cat /etc/ansible/hosts
[client]
10.241.0.2
#登陆到远程主机
[root@deploy ~]# ssh 10.241.0.2
Last login: Fri Aug 3 22:02:58 2018 from gateway
#查看目录是否存在
[root@client ~]# tree /data/
/data/
└── jenkins-test-dir
#查看目录的详细信息
[root@client ~]# stat /data/jenkins-test-dir/
File: ‘/data/jenkins-test-dir/’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: 802h/2050d Inode: 68197841 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-08-03 22:19:48.393000000 +0800
Modify: 2018-08-03 22:12:27.046000000 +0800
Change: 2018-08-03 22:12:27.046000000 +0800
#从上面的信息可以看到目录的创建时间为22:12:27, 与jenkins构建时间一致