CI & CD 持续集成部署

- 多平台: 您可以在Unix,Windows,macOS和任何其他支持Go的平台上执行构建。
- 多语言: 构建脚本是命令行驱动的,并且可以与Java,PHP,Ruby,C和任何其他语言一起使用。
- 稳定: 您的构建在与GitLab不同的机器上运行。
- 并行构建: GitLab CI / CD在多台机器上拆分构建,以实现快速执行。
- 实时日志记录: 合并请求中的链接将您带到动态更新的当前构建日志。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
GitLab是一个完整的DevOps平台,作为单个应用程序提供,从根本上改变了开发,安全和运营团队的协作方式。GitLab帮助团队将软件交付时间从数周缩短至数分钟,降低开发成本,并降低应用程序漏洞的风险,同时提高开发人员的生产率。

sudo yum install -y curl policycoreutils-python openssh-server

sudo systemctl enable --now sshd
sudo yum install postfix
sudo systemctl enable postfix
输入命令vim /etc/postfix/main.cf打开main.cf文件并找到下图内容:
vim /etc/postfix/main.cf

将这行代码改为inet_interfaces = all,然后按Esc键,然后输入:wq并回车以保存并关闭main.cf文件。
输入命令sudo systemctl start postfix启动Postfix服务。
sudo systemctl start postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="GitLab服务器的公网IP地址" yum install -y gitlab-ce

这个是我gitlab公网ip

安装完成会出现如下图片:

说明已经自动启动getlab服务,如没有出现以上情况则说明硬件配置太低或输入systemctl restart gitlab-runsvdir.service 重启gitlab服务
systemctl restart gitlab-runsvdir.service
其他操作命令:
sudo gitlab-ctl status #查看服务的状态
sudo gitlab-ctl start #启动
sudo gitlab-ctl stop #关闭
sudo gitlab-ctl restart #重启
[[email protected] ~]# vim /etc/gitlab/gitlab.rb #gitlab配置文件

如果修改了配置文件,需要执行 gitlab-ctl reconfigure 进行更新配置(只要修改了该文件,必须执行该命令才能生效)
gitlab-ctl reconfigure
执行 gitlab-ctl restart 重启服务,我这里不做修改
gitlab-ctl restart
服务启动成功后即可通过公网IP去访问,如果修改了端口,IP后面就要加上端口去访问
使用浏览器访问GitLab服务器的公网IP地址,显示如下页面,说明环境搭建成功。

管理员默认为root用户,初始密码不能低于8位





把要克隆或要上传代码这台服务器的公钥cat /root/.ssh/id_rsa.pub打开公钥文件复制到gitlab服务器指定位置上
cat /root/.ssh/id_rsa.pub


#克隆代码仓库,然后测试是否能够上传代码到gitlab


yum -y install git #安装git
git clone [email protected]:root/test.git #克隆远程仓库
cd test/
echo 11111 > 1.txt
git add .
git commit -m "add 1.txt"
git push

256MB可用内存
1GB+可用内存
50 GB+ 可用磁盘空间
Java 8—无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
[[email protected] ~]# tar -xf apache-tomcat-9.0.6.tar.gz
[[email protected] ~]# mv apache-tomcat-9.0.6 /usr/local/tomcat



wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

两种方式使用其中一种就可以下载了

[[email protected] ~]# ls
apache-tomcat-9.0.6.tar.gz baidu.html index.html jenkins.war
[[email protected] ~]# cd /usr/local/tomcat/ #切换到tomcat目录
[[email protected] tomcat]# pwd
/usr/local/tomcat
[[email protected] tomcat]# rm -rf webapps/* #删除tomcat根目录下其他默认文件
[[email protected] tomcat]# ls webapps/
[[email protected] tomcat]# mv /root/jenkins.war /usr/local/tomcat/webapps/ #移动下载好的jenkins.war包到tomcat网页根目录下
[[email protected] tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[[email protected] tomcat]# ./bin/startup.sh #启动tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[[email protected] tomcat]# ls webapps/ #tomcat服务启动会自动解jenkins.war包
jenkins jenkins.war








如果插件没安装完会出现如下页面,点纠正安装相关插件就好了:

必须需要添加的6个插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter






#添加主机:系统管理 - 系统设置 找到Publish over SSH

开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。


这里要注意的是要先把jenkins服务器的公钥传送给要部署代码的那台机然后再点测试

#添加完主机之后,新建一个项目,开始配置构建操作








添加完后,选择root或git用户进行认证没有任何提示表示成功

这里一定要勾上







#再次克隆仓库
git clone [email protected]:root/test.git
cd test/
echo '测试Jenkins' > index.html
git add .
git commit -m 'add index.html'
git push

#提交之后去Jenkins页面看看





访问成功
#很多朋友使用最新版本的gitlab做自动部署时,在增加web钩子那一步,
#点击test push events时会报错:Url is blocked: Requests to the local network are not allowed

#这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook
#我们在设置里允许就行,具体步骤如下:

