【linux命令】详细介绍说明gitlab安装+jenkins安装搭建持续化集成环境

内容摘要
平台:centos6
1,安装git。

yum install git -y

这里我安装的比较新的版本git version 2.11.0-rc0 ,可以下载https://download.21yunwei.com/tools/git_install.sh执行安装
文章正文

平台:centos6

1,安装git。
yum install git -y
这里我安装的比较新的版本git version 2.11.0-rc0 ,可以下载https://download.21yunwei.com/tools/git_install.sh执行安装。

2,gitlab安装
可以参考《CentOS服务器上搭建Gitlab安装步骤、中文汉化详细步骤、日常管理以及异常故障排查》 这里由于是centos 6.8,采用gitlab官网提供的方式安装,这里选择安装:
版本。

rpm  -ivh https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-8.9.0-ce.0.el6.x86_64.rpm
vim /etc/gitlab/gitlab.rb #修改external_url 'http://47.52.x.x' 改成IP地址访问gitlab
gitlab-ctl reconfigure

1

设置密码以后可以登录。

登录进去创建git项目,本地linux测试机设置git后添加本地key到gitlab的ssh-key中,便于拉取、提交代码等。

[[email protected]_salt_zabbix gitlab]# cat  /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAqxGy8OtHrL7vw7oNQtvN9PU5aW6k4wXJZ3MvNlXIzXmv2Y+Kkqx172oc1WOVYaNfa0sfRhTk/6Z/tZwhHie/c8KjL3B3luf0TtuzCKd7ZrMlQfEWoIv7Mh0G54hrmPakYZ7XFnix3LYgA4CSCr4QgtXzJAAVrQ/Byeq0VqaBUcWYR66DMJ1SUYWuFTc+GLqCgAAen+BK56TuA3cESSMlv6Aq77e1Swt1EEKG4dTCOLf3x1yHYAgcPqzzrBakPd0ACU48jX8QTUTu0tUPRqFamjUlTFZK6zLKuoyyeA0RuzQtBN8XU9g48XbHW/5yv67opUMhVREhVQ== [email protected]_salt_zabbix
[[email protected]_salt_zabbix gitlab]# git clone [email protected]:21yunwei/test.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
[[email protected]_salt_zabbix gitlab]# cd test/
[[email protected]_salt_zabbix test]# echo  "hello  gitlab" >README.md
[[email protected]_salt_zabbix test]# git add .
[[email protected]_salt_zabbix test]# git commit  -m "add  file  README.md"
[master (root-commit) a119f2d] add  file  README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
[[email protected]_salt_zabbix test]# git push origin  master
Counting objects: 3, done.
Writing objects: 100% (3/3), 228 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 47.52.x.x:21yunwei/test.git
 * [new branch]      master -> master

查看已经提交成功:

3

 

3,安装jenkins。

jenkins安装可以参考《Linux 系统centos版本环境下Jenkins安装》,两个步骤,一是安装java,二是安装rpm包的jenkins。

3.1 安装java

yum install -y java-1.8.0-openjdk.x86_64
3.2安装jenkins

可以到http://mirrors.jenkins-ci.org/redhat/下载需要的版本。这里以
rpm  -ivh /d/file/p/20221029/jenkins-2.30-1.1.noarch.rpm 为例安装。
安装完以后编辑jenkins配置文件修改端口(默认8080,避免和其他冲突,我们改成9090)以及权限配置文件其他地方,比如:

JENKINS_PORT="9090"

启动jenkins:

[[email protected] src]# /etc/init.d/jenkins   start
Starting Jenkins                                           [  OK  ]

访问jenkins:
2

安装常用组件,根据需要进行测试即可。这里以我们的测试环境为例,安装如下插件:
Git plugin和GitLab Plugin插件:我们以git为私服。
Publish Over SSH 以及SSH plugin插件:用于ssh传输以及执行shell命令。
Gitlab Hook Plugin: web hook 插件。

安装比较简单,后续的配置比较重要,这里进行下详细配置说明,避免新朋友用到以后遇到很多坑。

 

这里自己乱测试出现问题后关于解决jenkins的一些配置细节,实际这里的123可以忽略(主要是git仓库认证那里直接采用用户+jenkins root私钥认证即可实现):

1,修改jenkins的shell权限,改成bash,默认false。
jenkins:x:494:494:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/bash
2,切换登录jenkins: su  –  jenkins   。
进去以后生成密钥并设置免密钥登录gitlab和jenkins的root,以及执行shell命令时的目标服务器,否则执行构建时涉及的执行shell命令会执行失败,以及rsync推送失败。这里我们设置gitlab和jenkins是同一台服务器,就执行一个操作即可:

-bash-4.1$ ssh-keygen -t rsa
-bash-4.1$ cat .ssh/id_rsa.pub
-bash-4.1$ ssh-copy-id   -i  .ssh/id_rsa.pub   [email protected]  #执行多次,加入到所有的目标服务器。

设置完成以后,将这个密钥也加入到gitlab的ssh-key中,便于jenkins服务器git clone代码。后期注意jenkins用户的提权 。
3,说明:采用root运行jenkins

期间过程有一个大坑:
jenkins的守护进程采用jenkins用户运行的时候,无法执行chown等一些操作,简单的一个操作步骤为:
vim /etc/sysconfig/jenkins
设置$JENKINS_USER=”root”
重启服务器!
这里遇到的坑是只重启jenkins服务不管用,必须重启服务器才可以。期间还以为搞错了,按照网上搜索的方法修改N次和重启jenkins服务不起作用,最后重启服务器搞定。

3.3,jenkins执行测试:
首先创建一个自由风格的项目
1

创建好以后,设置如下,比如添加仓库以及执行构建(这里只是远程执行一个shell测试输出当前服务器时间判断是否构建成功):
2
添加构建,我们执行另外一个香港服务器的shell脚本以做测试,脚本内容:

[[email protected]_usa_ios_01 /]# cat  /home/yunwei/test.sh 
#!/bin/bash
echo  `date`  >> /root/1.txt

4

保存,执行立即构建查看效果:
1
执行shell脚本的服务器查看执行结果:

[[email protected]_usa_ios_01 /]# cat   /root/1.txt 
Tue Jul 4 15:21:46 CST 2017
Tue Jul 4 15:22:08 CST 2017
Tue Jul 4 15:22:11 CST 2017
Tue Jul 4 15:22:14 CST 2017

构建这块设置完成。但这是手工构建,明显不能满足需要,生产环境中我们需要的是触发构建或者参数构建或者是定时构建等,这个我们需要进行一个触发构建案例。

3.4,触发式jenkins构建
这种比较适合于发布一些不需要编译的php等场景,只需要git推送到gitlab代码以后,web钩子触发以后,jenkins立即进行构建项目并推送代码即可。

首先,我们在jenkins的项目那里设置token:
1
设置完成以后到jenkins–》系统管理–》Configure Global Security,将“防止跨站点请求伪造”取消,否则jenkins会认为gitlab的请求不合法,且gitlab将web hooks测试也无法通过。
再次找到当前jenkins的用户名id,生成web hooks地址:
到jenkins的控制台–》用户》点击登录信息,show api token,可以看到如下信息:
1下边,根据刚才看到的用户信息以及我们设置的token生成钩子地址:
http://admin:[email protected]:9090/job/21yunwei-test/build?token=test
这个地址需要加入到gitlab的web hooks里边:
1
进入以后,将生成的地址写入url,触发器选择push event和merge request event就可以了:
2

保存。点击测试Webhooks 旁边的test,如果有:
Hook executed successfully: HTTP 201
生成,说明这个钩子是生效的,意味着我们以后每次push或者合并请求等操作,这个钩子会出发,jenkins就会立即进行一次构建。
下边我们随便git 添加或修改文件,进行git push,发现触发器已经触发jenkins进行构建了:
1
触发构建完成。
当然,也可以使用统一的钩子地址:http://jenkinsurl/gitlab/build_now 适合gitlab自动触发操作不同分支情况

 

这套git+gitlab+jenkins 基本可以满足常规非参数化编译的生产环境需要了,尤其适合一些php项目进行代码发布,仅仅需要针对构建命令那里设置推送代码即可。

 

 

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!