前面的3篇文章已经讲过gitlab相关安装、汉化以及理解。这里主要是安装jenkins,然后配置集成gitlab。

GitLab默认会占用80、8080和9090端口,而Jenkins默认也会使用8080端口,所以,这里将会修改jenkins的默认端口。

我们的服务器的防火墙还没有开启,如果防火墙开启了,就需要添加规则,放行8080和12000端口,使得网络内的其他用户可以远程访问8080端口(gitlag)和12000端口(jenkins)

基础环境

jenkins是java开发的,所以首先需要有jdk。

1、下载jdk8

登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

选择对应jdk版本下载

因为我使用的是远程命令行putty安装,没有文件上传下载的模块。所以这里,先在我的win7上到oracle官网jdk界面找到linux x64的jdk下载界面,点击下载,然后找到下载过程中的文件,右键--复制链接地址,然后使用wget 从这个地址获取:

wget https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz?AuthParam=1544755083_584322d71fbbc0f307419038677018cb

可以看到,这里后面多了?AuthParam的参数。如果灭有这个参数,你只能下载下来一个网页哦。

ide使用token添加gitlab账户 private token gitlab_gitlab

2、解压

  重命名下载下来的文件为*.tar.gz

解压:tar -zxvf jdk-8u191-linux-x64.tar.gz

ide使用token添加gitlab账户 private token gitlab_自动化构建_02

3、然后将文件夹jdk1.8.0_144移动到目录/opt下

sudo mv jdk1.8.0_191 /opt/

4、修改环境变量

sudo vi /etc/profile
在最末尾添加如下配置:

1

2

3

4

5

#set Java environment

export JAVA_HOME=/opt/jdk1.8.0_191

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH

export PATH=${JAVA_HOME}/bin:$PATH

5、保存并退出,使用source命令使之生效

source /etc/profile

6、查看安装情况

java -version

ide使用token添加gitlab账户 private token gitlab_gitlab_03

 

第一部分 安装jenkins

第1步 - 安装Jenkins

包含在默认Ubuntu软件包中的Jenkins版本往往落后于项目本身的最新版本。 为了利用最新的修复和功能,我们将使用项目维护的软件包来安装Jenkins。

首先,我们将存储库密钥添加到系统。

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -

添加密钥后,系统将返回OK 。 接下来,我们将Debian包存储库地址附加到服务器的sources.list :

echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list

当这两个都到位时,我们将运行update ,以便apt-get将使用新的存储库:

sudo apt-get update

最后,我们将安装Jenkins及其依赖项,包括Java:

sudo apt-get install jenkins

第2步 - Jenkins相关操作

查看 Jenkins 的运行状态 sudo service jenkins status

启动 Jenkins 服务 sudo service jenkins start

重启 Jenkins 服务 sudo service jenkins restart

停止 Jenkins 服务 sudo service jenkins stop

先卸载Jenkins和依赖 后卸载相关配置

sudo apt-get remove jenkins
sudo apt-get remove --auto-remove jenkins

sudo apt-get purge jenkins
sudo apt-get purge --auto-remove jenkins

第3步 启动jenkins

如果报错,无法启动jenkins。查看原因说是没有java。

ide使用token添加gitlab账户 private token gitlab_gitlab_04

解决这个错误的方法,创建一个软连接:

sudo ln -s  /opt/jdk1.8.0_191/bin/java /usr/bin/java

完成后,修改jenkins的配置文件,主要是修改http_port:

sudo vi /etc/default/jenkins

ide使用token添加gitlab账户 private token gitlab_gitlab_05

启动jenkins: 

ide使用token添加gitlab账户 private token gitlab_jenkins_06

 访问网页:192.168.8.40:12000,这里12000就是我们前面配置的HTTP_PORT,默认是8080,与gitlab默认的端口冲突了

ide使用token添加gitlab账户 private token gitlab_jenkins_07

ide使用token添加gitlab账户 private token gitlab_gitlab_08

 获取密码:

ide使用token添加gitlab账户 private token gitlab_jenkins_09

 

ide使用token添加gitlab账户 private token gitlab_git_10

安装推荐的插件:

ide使用token添加gitlab账户 private token gitlab_jenkins_11

ide使用token添加gitlab账户 private token gitlab_自动化构建_12

ide使用token添加gitlab账户 private token gitlab_git_13

第4步 为Jenkins安装git和gitlab插件

安装gitlab plugin和git plugin

进入插件管理界面,选择可用插件,找到gitlab plugin,安装(前面我们已经安装了git插件了):

ide使用token添加gitlab账户 private token gitlab_git_14

第5步 配置GitLab插件

自从10.2之后,gitlab中的private tokens被移除之后,后面就没有再加回来。所以网上很多关于使用private tokens来配置gitlab插件的做法是没法使用了:.(打开GitLab,点击“setting”——“Access Tokens”,复制“Private token”备用)

通过查看很多网页发现,token就是让jenkins访问gitlab的凭证,同时给与一定的权限,除了api token之外,还有很多(目前有7种),如下图所示。这里我们给的是管理员权限。

ide使用token添加gitlab账户 private token gitlab_Jenkins_15

由于我尝试了很多操作,最后是成功了,但是中间哪些是不需要的,我也搞不清楚了。这里给出我的操作的整个过程。

在192.168.8.40服务器上激活jenkins用户,先用sudo passwd jenkins为jenkins用户设置密码(这个是我后面准备生成jenkins用户的ssh key pair用的,但是我后面没有用,所以我估计这个用不着)。

在gitlab上创建jenkins用户,然后用root账户修改jenkins用户为管理员。

ide使用token添加gitlab账户 private token gitlab_jenkins_16

 

回到jenkins。

因为jenkins主要是面向project开展自动化构建的,所以我们还是先创建一个工程吧

为了便于测试,这里分别先在 Jenkins 和 GitLab (gitlab上有一个用户已经创建了一个projTest1工程)上创建测试工程。

ide使用token添加gitlab账户 private token gitlab_gitlab_17

在 Jenkins Dashboard 主页点击 新建任务,进入新建任务页面,在输入框中输入工程名,选择 构建一个自由风格的软件项目,然后点击左下角的 确定按钮,进入工程配置页面。

ide使用token添加gitlab账户 private token gitlab_git_18

在工程配置页面的 源码管理部分,输入 GitLab repo 的 URL,类似下图:

ide使用token添加gitlab账户 private token gitlab_gitlab_19

输入完成后,会出现Error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none之类的错误,表示没有可信任的证书。点确定,后面我们会解决这个问题。

上图中的Credentials可以使用add添加,也可以在jenkins的“凭证”页面添加。

ide使用token添加gitlab账户 private token gitlab_自动化构建_20

gitlab repo 的url从gitlab 上projTest1工程首页获取:

 

 

ide使用token添加gitlab账户 private token gitlab_自动化构建_21

后面的“构建策略”我们暂时不设置。后面再改。点 保存。

ide使用token添加gitlab账户 private token gitlab_gitlab_22

点击立即构建,失败,查看日志,发现跟前面出的错误一致,都是说没有可信任的证书。 (Error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none)

ide使用token添加gitlab账户 private token gitlab_jenkins_23

切换到root账户,生成证书:

ide使用token添加gitlab账户 private token gitlab_Jenkins_24

 将下图绿色区域内的内容追加到 /etc/ssl/certs/ca-certificates.crt

ide使用token添加gitlab账户 private token gitlab_Jenkins_25

点击立即构建,这次构建成功了 

 

ide使用token添加gitlab账户 private token gitlab_jenkins_26

后面可以设置build策略,这里不再详述。至此,ubuntu下jenkins和gitlab集成基本完成。

这里给出一点自己的猜测吧

1. 通过不断摸索,可以推断出,凭证可以使用用户名密码,ssh key,等多种方式,来让jenkins连接gitlab并从上面拉取工程,读取相应文件等。但是为了保证有足够的权限,我们使用的凭证应当是一个gitlab管理员的账户或者是该project的管理员或有相应权限的用户。

2. 由于gitlab使用的是https,而不是http,所以使用凭证的时候,建议使用用户名密码的形式。