jenkins、git、maven 集成环境部署

本贴最后更新于 1418 天前,其中的信息可能已经东海扬尘

1. 部署jenkins

1.1. 软件环境介绍

软件名称 软件版本 软件下载链接 主机IP
CentOS CentOS7.6 172.16.150.6
Jenkins 2.235 http://pkg.jenkins.io/redhat
Jdk jdk-8u251-linux-x64 Centos7.6 ISO光盘
Git 1.8.3.1 Centos7.6 ISO光盘

1.2. 安装jdk

[root@jenkins ~]# cd /etc/yum.repos.d/ && mkdir bak && mv *.repo bak/

[root@jenkins ~]# cat /etc/yum.repos.d/centos7.repo

[centos]

name=centos76

baseurl=http://172.16.20.10/Linux/centos/7.6.1810/os/x86_64/

enabled=1

gpgcheck=0

[root@jenkins ~]# curl -O http://172.16.20.10/Oracle/JAVA/8/8u251/jdk-8u251-linux-x64.rpm

[root@jenkins ~]# rpm -ivh jdk-8u251-linux-x64.rpm

[root@jenkins ~]# vi /etc/profile

        #####java environment#####

export JAVA_HOME=/usr/java/latest

export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

export PATH=JAVA_HOME/bin:PATH

#####java end#####

[root@jenkins ~]# source /etc/profile

1.3. 安装git

[root@jenkins ~]# yum install -y git wget

1.4. 安装jenkins

[root@jenkins ~]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat/jenkins.repo

[root@jenkins ~]# rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key

[root@jenkins ~]# yum install -y jenkins

[root@jenkins ~]# systemctl start jenkins && systemctl enable jenkins

1.5. 配置权限

  1. 为了不因为权限出现各种问题,这里直接使用root。
    [root@jenkins ~]# vi /etc/sysconfig/jenkins

#修改配置

$JENKINS_USER="root"2. 修改目录权限
[root@jenkins ~]# chown -R root:root /var/lib/jenkins

[root@jenkins ~]# chown -R root:root /var/cache/jenkins

[root@jenkins ~]# chown -R root:root /var/log/jenkins3. 重启jenkins
[root@jenkins ~]# systemctl restart jenkins

2. 部署gitlab

2.1. 软件环境介绍

软件名称 软件版本 软件下载链接 主机IP
CentOS CentOS7.6 172.16.150.26
Gitlab gitlab-ce-12.10.3 https://packages.gitlab.com/gitlab/gitlab-ce

2.2. 安装gitlab

#安装并配置必要的依赖项

[root@gitlab ~]# yum install -y curl policycoreutils-python openssh-server

[root@gitlab ~]# systemctl enable sshd && systemctl start sshd

#安装Postfix以发送通知电子邮件

[root@gitlab ~]# yum install -y postfix

[root@gitlab ~]# systemctl enable postfix && systemctl start postfix

#添加GitLab软件包存储库并安装软件包

[root@gitlab ~]# curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

[root@gitlab ~]# EXTERNAL_URL="http://172.16.150.26" yum install -y gitlab-ce

#可以修改配置文件,设置服务端口,默认是80

[root@gitlab ~]# vi /etc/gitlab/gitlab.rb

#external_url 'http://172.16.150.8:9090'

#gitlab_rails[‘time_zone’] = ‘Asia/Shanghai’

#重置并启动GitLab

[root@gitlab ~]# gitlab-ctl reconfigure

[root@gitlab ~]# gitlab-ctl restart

3. 部署maven

3.1. 软件环境介绍

软件名称 软件版本 软件下载链接 主机IP
CentOS CentOS7.6 172.16.150.6
Maven 3.6.3 https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
Oracle Jdk 1.8.0_251 http://172.16.20.10/Oracle/JAVA/8/8u251/jdk-8u251-linux-x64.tar.gz

3.2. 安装jdk

参照第1.2.章节。

3.3. 安装maven

[root@jenkins ~]# curl -O https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

[root@jenkins ~]# tar -xvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/

[root@jenkins ~]# cd /usr/local/ && ln -s apache-maven-3.6.3/ maven

[root@jenkins ~]# vi /etc/profile

#####maven environment#####

MAVEN_HOME=/usr/local/maven

export PATH={MAVEN_HOME}/bin:/{PATH}

#####maven end#####

[root@jenkins ~]# source /etc/profile

4. (option)部署Nexus

在本次搭建的过程中,没有部署java的Nexus私有服务器,而是使用现有的服务器,服务器地址是192.168.100.154。如果要实现完整功能,需要自行搭建一个Nexus服务器。

4.1. 软件环境介绍

软件名称 软件版本 软件下载链接 主机IP
CentOS CentOS7.3 192.168.100.154
Nexus nexus-3.9.0 http://172.16.20.10/Nexus/nexus-3.9.0-01.tar.gz
JDK Jdk1.8.0_121 http://172.16.20.10/Oracle/JAVA/8/linux/8u121/jdk-8u121-linux-x64.rpm

5. 配置jenkins

5.1. 配置用户环境变量

[root@jenkins ~]#** **vi /etc/passwd

            jenkins:x:998:996:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

5.2. 访问jenkins

在浏览器打开输入http://172.16.150.6:8080/访问jenkins。

为了安全考虑,需要解锁jenkins,把/var/lib/jenkins/secrets/initialAdminPassword文件内容复制到administrator password下方即可。

5.3. 安装插件

只需要安装gitlab plugin,git plugin,还有ssh plugin(publish over ssh、ssh)插件即可,其他插件无须安装。

gitlab 和 git插件:我们的代码都放在gitlab上面,这两个插件用来做源码管理。

ssh插件:需要使用jenkins来执行shell命令。

5.4. 创建admin用户

5.5. 配置全局参数

5.5.1. 配置git路径

5.6. 配置秘钥

5.6.1. (如果使用默认用户jenkins则需要配置)配置jenkins用户的秘钥

[root@jenkins ~]#** **su - jenkins

-bash-4.2$ ssh-keygen -t rsa

#添加公钥到jenkins服务器root用户,用来执行部署脚本

-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub root@172.16.150.6

-bash-4.2$ cat .ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDoAshsV1lywNUAdwOtv0dfFGS3/EfZVs88ZFGQKdk1Kl/cZZ1bQjUIz3GyExC5k7Dkj6XxBdn6tSM/IaVO66Mmcj0zxqaS+A9aXqUPrG/YeDAJBKkxcwYcE3wwswu5KtJD6rCB1+sGDGsCz0zjw2kPknhm1r2ZGNiCyzzP72J2WioVVgMK7MFhwuyQWrnokLiY63OFr8NetMrpqWjqF3V2BIQi462B7KAIXKffwoGuFVmdRaRRUXuSDxkk0GJyETJN7uWXg4I44WZ8OQ3qKn41remqd5deT9mcxEKmoV/pqlevUXZNVDt0vUzz7RQPp+nscIrgoHx+aPRLjg0HyCbp jenkins@jenkins

注意:

因为jenkins执行部署操作,会出现很多权限问题,一个一个解决比较麻烦(而且不同项目权限问题都不同),就算sudo授权也是需要授予最少10几条命令的权限,而且不能保证以后不会出现新的命令,所以直接让jenkins用户通过root方式执行部署操作,简单粗暴。

5.6.2. 配置root用户的秘钥

[root@jenkins ~]# ssh-keygen -t rsa

#添加公钥到jenkins服务器root用户,用来执行部署脚本

[root@jenkins ~]#ssh-copy-id -i .ssh/id_rsa.pub root@172.16.150.6

[root@jenkins ~]# cat /root/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiZXD+EfDoim9BtyDn6LMe155MFV2uHV2wJQlt/1HKDrFXCfW5RhZezKRR4IIDb9jlzO7f18s5bf/fXcoKxVTukxjgfVbxlbJb+3gdPnkX8He+3pTttPfGhvO1JAkxW8y74L7RYK5xuwyYQ9jFxzl9XNvEG6A6gkS6KjGGoAPqDBhwx3eGr9SrFPBuxGpwv/TKWS93VMF1mAUsXPOsn4VrqtHJNQuw8iKfKbvtH25ZFKi77YQrRe+eMVkIk3+OMjZ+agstBUdkL9Ufwk1GcIJk1wJiVmgtny1F1OQEE1QfzvF6241bAi2/mjgJziYm6y8Xuf1FM6ZlpWUlfMdo8V8D root@jenkins

5.7. 构建测试用触发器

5.7.1. 准备测试脚本

[root@jenkins ~]# mkdir -p /shell/deploy/test && vi /shell/deploy/test/jenkins_trigger.sh

#!/bin/bash

echo "scripts has been running"

[root@jenkins ~]# chmod +x /shell/deploy/test/jenkins_trigger.sh

5.7.2. 创建触发器

  1. 创建一个触发构建的项目,选择自由软件风格即可

  1. 源码管理选择git,然后只需要在repository url中输入git仓库地址即可。

  1. 触发器配置:即gitlab有提交操作,则自动部署,这里只需要设置一个认证的token即可,gitlab调用触发器,需要使用 JENKINS_URL/job/new_cms/build?token=TOKEN_NAME即可。

  1. 构建,选择execute shell,执行部署脚本即可

  1. 生成admin用户的TOKEN值

根据触发器验证令牌和用户id+token会生成一个下面的url,只需要访问这个URL地址jenkins就会自动部署对应项目的代码。

http://admin:11cae314a81a7e7ad0c90572ff93998c7d@172.16.150.6:8080/job/jenkins_trigger/build?token=hehe

5.8. 构建测试用参数触发器

  1. 创建一个参数化触发器
    2) 选择发出器参数
    3) 设置执行部署的脚本
    4) 选择创建的job执行

5.8.1. 准备测试脚本

[root@jenkins ~]# cat /shell/deploy/test/jenkins_parameter.sh

#!/bin/bash

git_pro(){

echo "拉取$1代码"

}

git_pro $1

[root@jenkins ~]# chmod +x /shell/deploy/test/jenkins_parameter.sh

5.8.2. 创建触发器1) 创建一个参数化触发器

2) 选择发出器参数
3) 设置执行部署的脚本
4) 选择创建的job执行

6. 配置gitlab

6.1. 创建project

#创建一个jenkins_test的工程

6.2. 添加jenkins公钥

#添加jenkins的公钥到gitlab服务器(在第3.3.1和第3.3.2章节中),用来clone代码

秘钥添加完成后,从jenkins上进行gitlab工程的克隆工作。

-bash-4.2$ git clone git@172.16.150.8:root/jenkins_test.git

6.3. 配置本地网络

在gitlab 10.6版本之后默认是不允许在本地网络中请求webhook,如果确实需要此服务的话,需要gitlab管理员allow此操作。

6.4. 创建webhooks1) gitlab配置webhooks,每次提交代码就访问这个url,执行构建。

2) URL这里输入上面上面用户ID+API token+job token生成的URL地址即可。触发工作选择,push event,merge request event即可。
3) 在jenkins全局在jenkins全局安全设置中取消勾选“防止跨站点请求伪造,不然jenkins会认为gitlab的请求不合法。

4) 添加完成测试:点击test模拟提交操作,看看是否会执行自动构建。

如果执行成功会返回如下显示,说明执行钩子成功:

Jenkins查看,可以看到构建也是成功的:

7. 配置maven

7.1. 配置全局参数

7.1.1. 配置setting路径

使用自建的私服,修改/usr/local/maven/conf/setting.xml配置文件。

[root@jenkins ~]# cd /usr/local/maven/conf

[root@jenkins conf]# mv settings.xml settings.xml.bak

[root@jenkins conf]# vi settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

/Users/jack/.m2/repository

<server>

        <id>snapshots</id>

        <username>geostack</username>

        <password>admin123</password>

</server>

<server>

        <id>releases</id>

        <username>geostack</username>

        <password>admin123</password>

</server>
<mirror>

        <id>alimaven</id>

        <name>aliyun maven</name>

        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

        <mirrorOf>central</mirrorOf>

</mirror>
<profile>

        <id>dev</id>

        <repositories>

                <repository>

                        <id>local-nexus</id>

                        <url>http://192.168.100.154:8081/repository/geostack/</url>

                        <releases>

                                <enabled>true</enabled>

                        </releases>

                        <snapshots>

                                <enabled>true</enabled>

                        </snapshots>

                </repository>

        </repositories>

</profile>
<activeProfile>dev</activeProfile>

7.1.2. Jenkins安装maven插件

7.1.3. 配置jdk全局参数

7.1.4. 配置maven参数

8. 上传测试代码

8.1. 上传代码并解压

把zabbix server的代码上传至root根目录下,并解压。

[root@jenkins ~]#tar xvf geostack-zabbix-api.tar.gz

8.2. 建立本地仓库

8.2.1. 删除原有gitlab信息

[root@jenkins ~]# cd geostack-zabbix-api && rm -rf target/ .git

8.2.2. 初始化本地仓库及用户

[root@jenkins ~]# git init

[root@jenkins ~]# git config --global user.email 54287586@qq.com

[root@jenkins ~]# git config --global user.name "root"

8.2.3. 将本地项目的所有文件添加到暂存区

[root@jenkins ~]# git add .

8.2.4. 将暂存区的文件提交到本地仓库并添加信息说明

[root@jenkins ~]# git commit -m "zabbix test"

8.3. 推送代码到远端仓库

8.3.1. 建立本地仓库和远端GitLab仓库的关联关系

[root@jenkins ~]# git remote add origin http://172.16.150.26/root/jenkins_test.git

8.3.2. 检查关联是否已建立且正确

[root@jenkins ~]# git remote -v

8.3.3. 获取远程库与本地同步合并

[root@jenkins ~]# git pull --rebase origin master

8.3.4. 将代码由本地仓库上传到 GitLab 远端仓库

[root@jenkins ~]# git push -u origin master

9. 配置maven Job

9.1. 创建maven类job

登陆jenkins主页,点击”New Item”,然后选择job类型为maven项目。

9.2. 配置源码库

在源码库栏中,选择git

9.3. 配置trigger

为trigger建立一个NAME,这个 NAME会在gitlab的远程调用过程中用到。

Gitlab需要配置这个trigger名,配置请看5.4.章节,地址栏填写:

http://admin:11b0f1b5af088a74aff3e809269c4635fd@172.16.150.6:8080/job/jenkins_trigger/build?token=testtrigger

注意:这样,当gitlab的master主线上发生push events和merge events时,就触发webhooks并同时条用jenkins完成maven的创建过程。

9.4. 配置maven构建过程

在maven的构建过程中,主要是通过pom.xml文件进行构建。

9.5. Pre和Post Steps

9.5.1. Pre Steps

在jar包打包执行前,需要执行的脚本放在此处。

9.5.2. Post Steps

当jar包打包完成后,需要执行的脚本放在此处。

回帖
请输入回帖内容 ...