NXP

Ubuntu下安装Jenkins并实现gitlab集成 不用private tokens

2019-07-12 13:55发布

前面的3篇文章已经讲过gitlab相关安装、汉化以及理解。这里主要是安装jenkins,然后配置集成gitlab。 GitLab默认会占用8080809090端口,而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的参数。如果灭有这个参数,你只能下载下来一个网页哦。 2、解压   重命名下载下来的文件为*.tar.gz 解压:tar -zxvf jdk-8u191-linux-x64.tar.gz 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  

第一部分 安装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.listecho 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。 解决这个错误的方法,创建一个软连接: sudo ln -s  /opt/jdk1.8.0_191/bin/java /usr/bin/java
完成后,修改jenkins的配置文件,主要是修改http_port: sudo vi /etc/default/jenkins 启动jenkins:   访问网页:192.168.8.40:12000,这里12000就是我们前面配置的HTTP_PORT,默认是8080,与gitlab默认的端口冲突了  获取密码:   安装推荐的插件:

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

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

第5步 配置GitLab插件

自从10.2之后,gitlab中的private tokens被移除之后,后面就没有再加回来。所以网上很多关于使用private tokens来配置gitlab插件的做法是没法使用了:.(打开GitLab,点击“setting”——“Access Tokens”,复制“Private token”备用) 通过查看很多网页发现,token就是让jenkins访问gitlab的凭证,同时给与一定的权限,除了api token之外,还有很多(目前有7种),如下图所示。这里我们给的是管理员权限。 由于我尝试了很多操作,最后是成功了,但是中间哪些是不需要的,我也搞不清楚了。这里给出我的操作的整个过程。 在192.168.8.40服务器上激活jenkins用户,先用sudo passwd jenkins为jenkins用户设置密码(这个是我后面准备生成jenkins用户的ssh key pair用的,但是我后面没有用,所以我估计这个用不着)。 在gitlab上创建jenkins用户,然后用root账户修改jenkins用户为管理员。   回到jenkins。 因为jenkins主要是面向project开展自动化构建的,所以我们还是先创建一个工程吧 为了便于测试,这里分别先在 Jenkins 和 GitLab (gitlab上有一个用户已经创建了一个projTest1工程)上创建测试工程。 在 Jenkins Dashboard 主页点击 新建任务,进入新建任务页面,在输入框中输入工程名,选择 构建一个自由风格的软件项目,然后点击左下角的 确定按钮,进入工程配置页面。 在工程配置页面的 源码管理部分,输入 GitLab repo 的 URL,类似下图: 输入完成后,会出现Error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none之类的错误,表示没有可信任的证书。点确定,后面我们会解决这个问题。 上图中的Credentials可以使用add添加,也可以在jenkins的“凭证”页面添加。 gitlab repo 的url从gitlab 上projTest1工程首页获取:     后面的“构建策略”我们暂时不设置。后面再改。点 保存。 点击立即构建,失败,查看日志,发现跟前面出的错误一致,都是说没有可信任的证书。 (Error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none 切换到root账户,生成证书:  将下图绿 {MOD}区域内的内容追加到 /etc/ssl/certs/ca-certificates.crt 点击立即构建,这次构建成功了    后面可以设置build策略,这里不再详述。至此,ubuntu下jenkins和gitlab集成基本完成。 这里给出一点自己的猜测吧 1. 通过不断摸索,可以推断出,凭证可以使用用户名密码,ssh key,等多种方式,来让jenkins连接gitlab并从上面拉取工程,读取相应文件等。但是为了保证有足够的权限,我们使用的凭证应当是一个gitlab管理员的账户或者是该project的管理员或有相应权限的用户。 2. 由于gitlab使用的是https,而不是http,所以使用凭证的时候,建议使用用户名密码的形式。 有用的参考文献: https://zee.balogh.sk/error-server-certificate-verification-failed-cafile-etc-ssl-certs-ca-certificates-crt-crlfile-none/ https://www.wolfcstech.com/2018/03/26/gitlab_trigger_jenkins_build/ https://www.jianshu.com/p/c9517402daaf https://blog.csdn.net/m1126m/article/details/78556359?reload