GitLab+jenkins 部署

目录

环境

         一、安装并配置必要的依赖项

二、下载 安装GitLab git

三、配置GitLab

四、重置并启动操作

五、访问Gitab页面

六、安装Jenkins 

七、安装和Git,GitLab插件

八、配置GitLab插件

九、创建一个Jenkins test

         十、生成访问Gitlab的ssh秘

十一、配置Job的构建触发器

十二、Job的构建脚本

其它问题


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默认会占用8080809090端口,很不巧,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   

访问:http://192.168.2.20:8090

获得解锁 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

参考地址:https://jenkins.io/doc/

猜你喜欢

转载自blog.csdn.net/qq_16538827/article/details/81873997