jenkins、git、maven 集成环境部署

发布于 更新于
本文目录
  1. 1. 部署jenkins
  2. 1.1. 软件环境介绍
  3. 1.2. 安装jdk
  4. 1.3. 安装git
  5. 1.4. 安装jenkins
  6. 1.5. 配置权限
  7. 2. 部署gitlab
  8. 2.1. 软件环境介绍
  9. 2.2. 安装gitlab
  10. 3. 部署maven
  11. 3.1. 软件环境介绍
  12. 3.2. 安装jdk
  13. 3.3. 安装maven
  14. 4. (option)部署Nexus
  15. 4.1. 软件环境介绍
  16. 5. 配置jenkins
  17. 5.1. 配置用户环境变量
  18. 5.2. 访问jenkins
  19. 5.3. 安装插件
  20. 5.4. 创建admin用户
  21. 5.5. 配置全局参数
  22. 5.5.1. 配置git路径
  23. 5.6. 配置秘钥
  24. 5.6.1. (如果使用默认用户jenkins则需要配置)配置jenkins用户的秘钥
  25. 5.6.2. 配置root用户的秘钥
  26. 5.7. 构建测试用触发器
  27. 5.7.1. 准备测试脚本
  28. 5.7.2. 创建触发器
  29. 5.8. 构建测试用参数触发器
  30. 5.8.1. 准备测试脚本
  31. 5.8.2. 创建触发器1) 创建一个参数化触发器
  32. 6. 配置gitlab
  33. 6.1. 创建project
  34. 6.2. 添加jenkins公钥
  35. 6.3. 配置本地网络
  36. 6.4. 创建webhooks1) gitlab配置webhooks,每次提交代码就访问这个url,执行构建。
  37. 7. 配置maven
  38. 7.1. 配置全局参数
  39. 7.1.1. 配置setting路径
  40. 7.1.2. Jenkins安装maven插件
  41. 7.1.3. 配置jdk全局参数
  42. 7.1.4. 配置maven参数
  43. 8. 上传测试代码
  44. 8.1. 上传代码并解压
  45. 8.2. 建立本地仓库
  46. 8.2.1. 删除原有gitlab信息
  47. 8.2.2. 初始化本地仓库及用户
  48. 8.2.3. 将本地项目的所有文件添加到暂存区
  49. 8.2.4. 将暂存区的文件提交到本地仓库并添加信息说明
  50. 8.3. 推送代码到远端仓库
  51. 8.3.1. 建立本地仓库和远端GitLab仓库的关联关系
  52. 8.3.2. 检查关联是否已建立且正确
  53. 8.3.3. 获取远程库与本地同步合并
  54. 8.3.4. 将代码由本地仓库上传到 GitLab 远端仓库
  55. 9. 配置maven Job
  56. 9.1. 创建maven类job
  57. 9.2. 配置源码库
  58. 9.3. 配置trigger
  59. 9.4. 配置maven构建过程
  60. 9.5. Pre和Post Steps
  61. 9.5.1. Pre Steps
  62. 9.5.2. Post Steps

技术文章持续集成与运维

软件名称

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">

<localRepository>/Users/jack/.m2/repository</localRepository>

<pluginGroups></pluginGroups>

<servers>

<server>

        <id>snapshots</id>

        <username>geostack</username>

        <password>admin123</password>

</server>

<server>

        <id>releases</id>

        <username>geostack</username>

        <password>admin123</password>

</server>

</servers>

<mirrors>

<mirror>

        <id>alimaven</id>

        <name>aliyun maven</name>

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

        <mirrorOf>central</mirrorOf>

</mirror>

</mirrors>

<profiles>

<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>

</profiles>

<activeProfiles>

<activeProfile>dev</activeProfile>

</activeProfiles> </settings>

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包打包完成后,需要执行的脚本放在此处。

来源:testingpai

继续阅读