GitLab+jenkins 部署
GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮组开发团队更高效的集成和发布代码。环境本文将在单机上搭建一个GitLab+Jenkins环境,两者分别使用不同的端口,操作系统是centos7;安装部...
目录
GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮组开发团队更高效的集成和发布代码。
环境
本文将在单机上搭建一个GitLab+Jenkins环境,两者分别使用不同的端口,操作系统是centos7;
安装部署Gitlab服务器
一、安装并配置必要的依赖项
在CentOS 7(和RedHat / Oracle / Scientific Linux 7)上,以下命令还将在系统防火墙中打开HTTP和SSH访问
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
安装postfix 用于邮件通知
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
在Postfix安装期间,可能会出现配置屏幕。选择“Internet Site”并按Enter键。使用服务器的外部DNS作为“邮件名称”,然后按Enter键。如果出现其他屏幕,请继续按Enter键接受默认值。
二、下载 安装GitLab git
yum -y install git
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
yum install -y gitlab-ee
或者直接下载rpm包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.1.4-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-ce-11.1.4-ce.0.el7.x86_64.rpm
三、配置GitLab
GitLab默认会占用80
、8080
和9090
端口,很不巧,Jenkins默认也会使用8080端口;可以修改GitLab端口默认端口也可以修改Jenkins只要冲突即可,这理我修改Jenkins的端口为8090见下面步骤;
sudo vim /etc/gitlab/gitlab.rb
四、重置并启动操作
执行:
gitlab-ctl reconfigure 重置
gitlab-ctl restart 重启
其他操作命令:
sudo gitlab-ctl status 查看服务的状态
sudo gitlab-ctl start 启动
sudo gitlab-ctl stop 关闭
sudo gitlab-ctl restart 重启
表示启动成功;
五、访问Gitab页面
输入:http:/192.168.2.20 默认访问端口是80
第一次登陆需要设置密码,最少8位;默认账户是root
恭喜完成Gitlab安装
创建一个项目 hue
六、安装Jenkins
安装JDK
我安装的是jdk-8u151-linux-x64.rpm版本
rpm -ivh jdk-8u151-linux-x64.rpm
配置环境变量
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_151/' >>/etc/profile
echo 'export JRE_HOME=/usr/java/jdk1.8.0_151/jre' >>/etc/profile
echo 'PATH=$JAVA_HOME/bin:$PATH' >>/etc/profile
tail -3 /etc/profile
source /etc/profile
java -version 查看版本
下载Jenkins wget https://prodjenkinsreleases.blob.core.windows.net/redhat/jenkins-2.138-1.1.noarch.rpm
[root@master tools]# rpm -ivh jenkins-2.138-1.1.noarch.rpm #安装
修改配置文件和端口号 ,(8080与gitlab端口冲突);这里给位8090;
启动 jenkins
[root@master ~]# /etc/init.d/jenkins restart #重启
[root@master ~]# /etc/init.d/jenkins start / stop #启动关闭
查看是否启动正常
[root@master jdk1.8.0_151]# netstat -tunlp|grep -i 8090
tcp6 0 0 :::8090 :::* LISTEN 26497/java
获得解锁 Jenkins
[root@master tools]# cat /var/lib/jenkins/secrets/initialAdminPassword
7001c9a539d04d16b688b7291e57dc4b
然后设置账户信息,登陆;
七、安装和Git,GitLab插件
访问 Jenkins http://192.168.2.20:8090/pluginManager/
1、系统管理——插件管理——可选插件
八、配置GitLab插件
打开GitLab,点击“setting”——“Access Tokens”
GitLab创建API令牌
打开Jenkins,点击“系统管理”——“系统设置”——“Gitlab”,如下所示:
九、创建一个Jenkins test
至此,创建一个test成功了
生成访问Gitlab的ssh秘
[root@master]# ssh-keygen -t rsa
[root@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'.
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:pk1lRP4qzpz9gzmXsZpGa3P3d3kUnOAV5yVXxf3CMYw root@master
The key's randomart image is:
+---[RSA 2048]----+
| .o o.o@|
| o E.+==|
| + ..+o+|
| o . .o+.|
| S . ..|
| = ... .|
| . o..+ + ..|
| + +O.* ..+|
| =o+B.o .=|
+----[SHA256]-----+
[root@master .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqzI5pwFec4wkVPIauIm3NrYi0OAJlXqeF+/oxqI5OtS2Z3U3nIfT7OHNw6Mku0xVuXuDZOLLBot+GUIQiSKywN4f5salXBJIHFJwxS6tIvsBQZhVb2yQ10zfFFhiTTbk7qQjVjn5kjbt4rM2NC5HFKROpeQrpMCvu0DbV8hsBIv3MxhcPBDUo1Yvd+Rtg4veQbr41TiW7YrHEAP0ffp3czwPZUWdoAodM0Ja1F775aaIbdd9Jv1rQDeJAI6Cc7lUJgvEDaz2IJ7Em7scqo4j4qha7XfgquCRDXg3uOJkvZb007zqGk3uuem5ATmwVCBDWDbG2BKqAwWm52GMuAFDX root@master
并将公钥粘贴到“Key”里,name可以随便起,但最好能一看就知道是某个人或某台机器。此外,点击“generate it”链接可以看到官方的教程。
从gitlab以SSH方式拉取或提交代码需要用到这个SSH 秘钥,哪台机器需要从gitlab上拉取代码,就在哪台机器上生成一次SHH Key,因此,在jenkins服务器上,以及你的开发PC上,都需要生成SSH密钥。
配置test
选择项目——配置——源码管理
在弹出页面里面:
- Kind 选择 SSH Username with private key
- Username 填 root
- PrivateKey 选择 From a file on jenkins master ,然后将服务器的 私钥的存放路径(私钥、私钥、私钥,再说三遍) 粘贴进去
- passphrase 填创建SSH秘钥时的设置的密码,未设置可不填
如果没报错,说明成功了,点击页面底部的“apply”。如果出错了,会在“Repository URL”和“Credentials”之间显示红色的错误信息。
jenkins job默认对master分支进行构建,你也可以自定义分支。这要求你的Gitlab代码仓库中要存在这个分支,一般来说,就是要向代码仓库提交一次更改,请 自行完成(Gitlab项目刚创建时是空的,一个分支也没有,这样的话,自动构建时会出错)
配置Job的构建触发器
选择“构建触发器”,勾选“Pull SCM”,这个选项会每隔一段时间检查一下GitLab仓库中代码是否有更新,有的话就执行构建操作。日程表如何设置,在这个输入框下面有说明。
扩展阅读:
常见构建触发器、:
- Build after other projects are built 当另一个构建任务完成之后触发
- Build periodically 周期性的触发
- Build when a change is pushed to GitLab. GitLab CI Service URL: http://191.8.2.112:12000/project/test-go-dev 当代码有更新的时候触发,通过GitLab CI
- GitHub hook trigger for GITScm polling 通过Github钩子触发
- Poll SCM 定期检查代码有无更新,有更新时触发
这只是个人理解,具体怎么样大家可以试试,Poll SCM方式我是试过的。
配置Job的构建脚本
在build栏目里,选择“jenkins execute shell”,然后输入你项目的构建命令(这依赖于你的项目,如Maven的maven build,gulp的gulp xxx 等等)
扩展阅读:
jenkins支持多种构建脚本,可以自己试一下:
至此,所有工作已经完成,现在你提交代码到GitLab,jenkins会每隔一段时间帮你运行一次构建命令,这样大家的代码自动集成到一起,出了错的话很快就知道了。
其它问题
1、 从git上拉取的脚本的执行权限问题
每次jenkins运行任务的时候,都会到gitlab上拉取到最新的代码,放在workspace下。需要注意的是,默认拉取的.sh
脚本文件是没有执行权限的,需要在构建命令里面添加:
chmod +x *.sh
2、构建 shell 用不了nvm,参考
是使用nvm前,加一句:
. ~/.nvm/nvm.sh
本文参考地址:
参考地址:https://about.gitlab.com/installation/#centos-7
参考地址:https://blog.csdn.net/ruangong1203/article/details/73065410
更多推荐
所有评论(0)