CI&CD:
持续集成注重将各个开发者的工作集合到一个代码仓库中,通常每天会进行几次, 主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。
持续交付的目的是最小化部署或发布过程中团队固有的摩擦, 它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。
持续部署是一种更高程度的自动化,无论何时代码有较大改动, 都会自动进行构建/部署。
Jenkins:
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
官方文档:
https://www.jenkins.io/zh/doc/
所需环境:
gitlab | 192.168.1.128 |
---|---|
jenkins | 192.168.1.129 |
一、安装配置gitlab
1、安装前提软件
[root@gitlab ~]# yum install curl policycoreutils openssh-server openssh-clients postfix -y
2、下载清华gitlab安装包
[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm #下载rpm包到虚拟机
3、yum安装
[root@gitlab ~]# ls
gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
[root@gitlab ~]# yum -y install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
4、修改配置文件,指定ip地址
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.1.128' #修改
5、配置启动 gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
查看状态
[root@gitlab ~]# gitlab-ctl status
6、gitlab服务管理命令(开启/关闭/重启)
[root@gitlab ~]# gitlab-ctl start/stop/restart
7、创建用户、组、项目
1)创建用户
登录gitlab——admin area——new user——添加用户名、邮箱——create user——edit——修改密码
2)创建group
登录gitlab——admin area——new group
把zhangsan用户添加到组中:
3)创建项目
登录gitlab——admin area——new project——注意选择组(dianfeng)
4)创建一个代码文件用做后边的铺垫
创建一个代码文件用做后边的试验
二、安装配置jenkins
1、下载安装jenkins
[root@jenkins ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.222-1.1.noarch.rpm #下载jenkins包到虚拟机
java-1.8.0-openjdk.x86_64 # 安装java jdk
[root@jenkins ~]# yum -y install jenkins-2.222-1.1.noarch.rpm #安装jenkins
2、修改配置文件(默认jenkins端口为8080,如果同gitlab一起安装,需要修改端口)
[root@jenkins ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"
JENKINS_PORT="8081"
3、启动jenkins
[root@jenkins ~]# systemctl start jenkins
[root@jenkins ~]# systemctl enable jenkins
4、web界面登录jenkins
5、输入密码
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
52fcff735a43495db0920ffddb3be435
复制加密密码字段,粘贴到web
6、选择安装插件
先选择右上角“X”,进入
7、修改admin用户密码
右上角——admin点击小三角——Configure——Password字段——修改密码——save保存
8、复制插件包到虚拟机
1)解压复制jenkins插件包到/var/lib/jenkins/plugins下
[root@jenkins ~]# ls /var/lib/jenkins/plugins/
[root@jenkins ~]# ls
jenkins-plugins.tar.gz
[root@jenkins ~]# tar zxf jenkins-plugins.tar.gz
[root@jenkins ~]# ls
plugins
[root@jenkins ~]# cp -rp /root/plugins/ /var/lib/jenkins/
[root@jenkins ~]# ls /var/lib/jenkins/plugins/
ace-editor mapdb-api.jpi
ace-editor.jpi matrix-auth
………… //省略
2)重启服务
[root@jenkins ~]# systemctl restart jenkins
9、关联gitlab
1)点击左上角logo——回到主页面——选择新项目“New Item”——填写项目名(freestyle-job)——选择项目类型“Freestyle project”——OK
2)配置项目freestyle-job右边小三角——configure——Source Code Management——git——Repository URL:(git@192.168.1.128:dianfeng/dev.git)——报红字错误,则需要添加私钥认证——如果认证成功——save保存
如果不小心退到主界面了进入配置项目步骤:(没有就略过)
报红字错误,则需要添加私钥认证——如果认证成功——save保存
!!解决红色报错问题!!
思路:
(1)首先排除jenkins安装了git;
[root@jenkins ~]# git
git git-receive-pack git-shell git-upload-archive git-upload-pack
(2)双方相互copy公钥
[root@gitlab ~]# ssh-keygen -t rsa
[root@gitlab ~]# ssh-copy-id root@192.168.1.129
|
[root@jenkins ~]# ssh-keygen -t rsa
[root@jenkins ~]# ssh-copy-id root@192.168.1.128
(3)在gitlab的网页端添加私钥认证
[root@gitlab ~]#
[root@gitlab ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTOG9ARiDpM7lP30kFFokOiSe3w5+13ir06ungGNo2Rmx/+tA06dVSX1eGtYzVEStyZGLNAp+DqAHZ2mOFK/gmJXyacD73PFjgmKKzIj4LynhhJShQIpqb2coOTdYONMjOak3Dzrvrz3GgQSoV2zG+ZYjSrLdKXni3k19vOWnYKeXETga/ssfWUY/Yp45bUhbvc4zEenHmv4YkVbN0AMxMIckAM7WIPPYOXzv9sPBN7bRC0+hBnmY2Kxxorqew27tU7GiQb422SuMyHH21encXfs1ei0zdHlpMshHTPu8Nt0fX8RIFQV2aM3a0Dh25Q+1R+McZR0yYe2m79AxRjmEp root@gitlab
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBUDp1sP2Zrzh/4iUQ25FMQzGPW1m5M0hHH90icclJRPKGFahRWpyebEmXQwG8ngPmLMY7tKf+/twO3T0Wu6TzKNluyG8G1sD34loT70QVKir4C3C7rCBxMkBcVL1R/JRLTb+ffAi7h7nlFDfNbQ2zWWEh2EvuOFZP98IJrfBJbas4lgj9jH7cS1QsTTIVXyb9pmxPHu96PuJwpc3f+Rrhscfn28RGvDibl+ugmUioaOkbXvZxuJ5phikZzlA04eScuhBOjuSQbhlfrwsJzpu+6BLy6vYMh+/s+yyhxrC1u9D2QzZ2RJ2jwCmlqxNo5aLu0C//9S6jS5eLXjyyOgp1 root@jenkins
认证成功——save保存
3)选择项目——左侧选择“build now”——下面构建历史出现蓝色标志——选择蓝色标志下拉列表——console output——输出执行过程
选择项目——左侧选择“build now”——下面构建历史出现蓝色标志——选择蓝色标志下拉列表——console output
输出执行过程
4)jenkins服务器上查看/var/lib/jenkins/workspace目录,会有项目同名文件夹,保存git clone 的所有代码
[root@jenkins ~]# cd /var/lib/jenkins/workspace/
[root@jenkins workspace]# ls
freestyle-job freestyle-job@tmp
[root@jenkins workspace]# cd freestyle-job
[root@jenkins freestyle-job]# ll -a
总用量 4
drwxr-xr-x 3 root root 33 7月 22 04:48 .
drwxr-xr-x 4 root root 52 7月 22 04:48 ..
drwxr-xr-x 8 root root 162 7月 22 04:48 .git
-rw-r--r-- 1 root root 9 7月 22 04:48 test.md
[root@jenkins freestyle-job]# cat test.md
123456789