烂泥:jenkins与gitlab集成

本文由ilanniweb微信公众号提供友情赞助,首发于烂泥行天下

上一篇文章,我们学习了有关jenkins插件的安装与配置,这篇文章我们再来介绍下jenkins与gitlab的集成。

PS:本篇文章还是以编译、打包jenkins源码为例,进行jenkins的构建。

有关jenkins源码的编译、打包,可以参考这篇文章《烂泥:jenkins源码编译和打包》。

jenkins源码是java语言开发的,通过maven进行项目的管理。所以本篇文章中会牵涉到maven相关的配置。

如果你的代码是其他语言开发的话,比如php,nodejs等,是不需要maven的。

一、 基础环境配置

在正式集成之前,需要我们在jenkins服务器上进行相关的基础环境配置。

安装git、maven和jdk等基础配置,可能会有童鞋问,jenkins不是有这几个软件相关的插件吗?

为什么还需要在jenkins服务器上安装呢?

原因是这样的,尽管jenkins本身是有以上软件插件的,但是实际上jenkins是通过这些插件去jenkins服务器上调用这些软件,这也是jenkins插件的大致工作原理。所以,我们必须在jenkins服务器上安装这些软件。

1.1 安装jdk

jdk这个是基础环境必须的,在此我就直接给出相关的命令:

wget http://mirrors.linuxeye.com/jdk/jdk-7u80-linux-x64.tar.gz

tar -xf jdk-7u80-linux-x64.tar.gz -C /usr/local/

chown root:root -R /usr/local/jdk1.7.0_80/

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.7.0_80

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

java –version

1.2 安装git

有关git的安装与配置,可以参考这篇文章《烂泥:git服务器搭建》。在此我们只需要安装git即可,相关命令如下:

yum -y install git

1.3 安装maven

有关maven的安装与配置,可以参考这篇文章《烂泥:依赖管理maven3.3安装与配置》。

相关命令如下:

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

tar -xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/

cd /usr/local/

mv apache-maven-3.3.9 maven

vim /etc/profile

export M2_HOME=/usr/local/maven/

export PATH=$PATH:/usr/local/mysql/bin:$M2_HOME/bin

source /etc/profile

java –version

mvn -v

二、gitlab相关配置

既然是jenkins与gitlab集成,那么我们现在来介绍下gitlab的相关配置,有关gitlab的安装,我会在后续的文章中介绍。在此只介绍gitlab创建ilannigit仓库,以及相关的配置。

2.1 创建gitlab仓库

登录到gitlab管理页面,并切换到相应的用户下,然后创建ilannigit仓库,在此我们是在devuser用户下操作的,如下:

clip_image001

clip_image002

上图中,我们创建ilannigit仓库。

clip_image003

给gitlab中的ilanni用户配置ilannigit访问的权限。

clip_image004

clip_image005

clip_image006

clip_image007

通过上图,我们可以看到,ilanni用户对ilannigit这个仓库具有master权限。

2.2 初始化ilannigit仓库

ilannigit仓库创建完毕后,现在仓库里面是空的,现在我们来把jenkins源码上传到该仓库中,即对ilannigit仓库进行初始化。

ilannigit仓库的初始化,我们是在Windows下使用TortoiseGit这个工具进行的。

下面的操作,主要是截图,文字说明比较少,如下:

clip_image008

clip_image009

clip_image010

clip_image011

clip_image012

clip_image013

clip_image014

clip_image015

clip_image016

clip_image017

clip_image018

现在我们切换到gitlab上查看ilannigit仓库的相关信息,如下:

clip_image019

通过上图,我们可以很明显的看出目前ilannigit仓库已经初始化完成。

PS:以下所有的操作都是在jenkins的UI界面上完成的。

三、安装与配置git和gitlab插件

gitlab仓库相关的配置完毕后,现在我们开始安装jenkins几个经常使用的到的插件。

有关jenkins插件的安装,可以参考这篇文章《烂泥:jenkins插件安装与卸载

先以git和gitlab插件的安装与配置为例。

3.1 安装git和gitlab插件

安装git和git client plugin插件如下:

系统管理→插件管理→可选插件

clip_image020

git插件官方帮助文档:

https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

git插件官方最新帮助文档:

https://plugins.jenkins.io/git

git client plugin插件官方帮助文档:

https://wiki.jenkins-ci.org/display/JENKINS/Git+Client+Plugin

git client plugin插件官方最新帮助文档:

https://plugins.jenkins.io/git-client

安装gitlab插件如下:

clip_image021

gitlab插件官方帮助文档:

https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin

gitlab插件官方最新帮助文档:

https://plugins.jenkins.io/gitlab-plugin

clip_image022

3.2 配置git和gitlab插件

git和gitlab插件安装完毕后,我们现在来配置下。

在配置之前,我们需要知道jenkins服务器上git的所在路径,如下:

clip_image023

通过上图,我们可以很明显的看出git所在的路径是/usr/bin/git

现在开始正式配置git,如下:

clip_image024

clip_image025

clip_image026

上图中Path to Git executable中填入jenkins服务器上git的路径即可。

四、配置不同版本jdk

由于不同的项目会牵涉到使用不同的jdk版本,所以在此我们也会jenkins配置不同的jdk。

查看jenkins服务器上,已经安装的jdk,如下:

clip_image027

clip_image028

配置不同jdk,如下:

系统管理→Global Configureation

clip_image024[1]

clip_image029

到此配置不同版本jdk完毕。

五、安装与配置push over ssh插件

当我们把该项目编译、打包完毕后,想进行后续的操作,比如把打包后的软件包上传到远程服务器,并在远程服务器上执行相关操作时,我们就可以通过push over ssh插件来实现。

5.1 安装push over ssh插件

安装push over ssh插件,如下:

系统管理→插件管理→可选插件

clip_image030

clip_image031

push over ssh插件官方帮助文档:

https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin

push over ssh插件官方最新帮助文档:

https://plugins.jenkins.io/publish-over-ssh

5.2 配置push over ssh插件

push over ssh插件安装完毕后,我们现在来对其进行配置。

配置push over ssh插件,也就是配置我们需要远程登录的服务器。登录远程服务器,必须是通过ssh方式的,在此我们使用的是ssh的秘钥方式。如下:

系统管理→系统配置

clip_image032

clip_image033

clip_image034

clip_image035

clip_image036

以上图中,需要输入远程服务器的IP地址、用户名和该用户的sshkey。

clip_image037

到此push over ssh插件安装与配置完毕。

六、安装与配置maven插件

push over ssh插件安装与配置完毕,现在我们来安装maven相关的插件。

6.1 安装maven插件

安装maven插件,如下:

系统管理→插件管理→可选插件

clip_image038

clip_image039

maven插件官方帮助文档:

https://wiki.jenkins-ci.org/display/JENKINS/Maven+Project+Plugin

maven插件官方最新帮助文档:

https://plugins.jenkins.io/maven-plugin

6.2 配置maven插件

查看jenkins服务器上的maven安装路径,如下:

clip_image040

通过上图我们可以很明显的看出maven安装到/usr/local/maven路径下。

现在开始正式配置maven插件,如下:

系统管理→Global Configureation

clip_image024[2]

clip_image041

clip_image042

到此安装与配置maven插件完毕。

七、创建job

所有相关的插件安装与配置完毕后,我们现在在jenkins创建一个job,如下:

clip_image043

clip_image044

上图中我们创建了一个ilannigit的jenkins任务,并且该项目是一个maven项目。

注意:如果没有安装maven插件的话,在创建任务时,是看不到“构建一个maven项目”,这个选项的。

同时,如果你不是一个maven项目的话,建议选择“构建一个自由风格的项目”。

当然你也可以创建一个其他类型的项目,这个我们在以后的文章会相继介绍的。

clip_image045

通过上图,我们可以看到目前ilannigit这个job已经创建完毕。

PS:以下所有配置都是在job任务中进行的。

八、配置ilannigit任务

ilannigit这个jenkins任务创建完毕后,我们现在来配置下。

8.1 选择jdk版本

在该job中jenkins源码的编译、打包,我们使用的是jdk1.7版本,如下:

clip_image046

clip_image047

8.2 配置gitlab仓库

在前面的章节中,我们创建了ilannigit这个gitlab仓库,现在我们复制该仓库地址,到源码管理选项中,如下:

clip_image048

上图中,我们可以看到目前jenkins是无法连接该gitlab仓库的,需要我们填写相关的认证信息。

clip_image049

clip_image050

在此连接gitlab的认证我们是通过ilanni这个用户,以及使用sshkey方式的。所以上面的信息中,填写的就是有关gitlab用户ilanni和其对应的sshkey。

clip_image051

上图就说明,jenkins已经可以连接ilannigit仓库。

8.3 配置maven插件

在job中maven插件比较简单,我们只需要把Gloals and options选项中填写maven的相关命令即可,如下:

clean install -Dmaven.test.skip=true

clip_image052

8.4 配置 push over ssh插件

在该job中,maven打包完毕后,我们把打包后的war包上传到远程服务器使用push over ssh插件,如下:

clip_image053

增加构建后操作步骤→Send build artifacts over SSH

clip_image054

clip_image055

上面这个截图中,有几个选项我们要讲解下:

name是我们在第5.2章节中配置的push over ssh服务器名称,在此是ilannigit这台服务器。

Source files是jenkins下该job编译、打包后的包名及其相对路径,在此jenkins源码打包后是war/target/ilannijenkins.war。

Remove prefix是排除Source files中包名前的路径,也就是说我们只把war包上传到远程服务器。

Exec command是在远程服务器进行操作的相关linux命令或者shell脚本。在此我们使用的是linux命令。如下:

ps -ef | grep tomcat7070| grep -v grep | awk ‘{print $2}’|xargs kill -9

find /data/ilannitomcat/tomcat7070/logs/ -mtime +3 -name “*.*” | xargs rm -f

rm -fr /data/ilannitomcat/tomcat7070/work/*

cp /data/ilannitomcat/tomcat7070/webapps/ilannijenkins.war /data/backup/`date +”%Y%m%d_%H%M%S”`_bossmanager.war

rm -fr /data/ilannitomcat/tomcat7070/webapps/*

cp /root/ilannijenkins.war /data/ilannitomcat/tomcat7070/webapps

export JAVA_HOME=/usr/local/jdk1.7.0_80/

/data/ilannitomcat/tomcat7070/bin/catalina.sh start

sleep 5

有关Exec command的执行这个我们会在以后的文章中,再进行详细的介绍。

九、构建job

ilannigit这个jenkins任务配置完毕后,我们现在来进行构建,如下:

ilannigit→立即构建

clip_image056

在Console Output中可以看到jenkins构建的过程,如下:

开始从ilannigit仓库下载源码,如下:

clip_image057

开始执行相关的maven命令,如下:

clip_image058

开始从maven的nexus私库下载相关的依赖,如下:

clip_image059

maven开始进行编译与打包,如下:

clip_image060

clip_image061

上图中根据实际的情况会占用很长时间,需要你耐心等待。

clip_image062

maven进行编译、打包后,jenkins把war包上传到远程服务器,并进行相关的操作,如下:

clip_image063

通过上图,我们可以很明显的看到,ilannijenkins.war已经上传到远程服务器,并且也执行了相关的操作。

到此有关jenkins与gitlab集成就已经全部结束。

未经允许不得转载:烂泥行天下 » 烂泥:jenkins与gitlab集成

赞 (4)