Skip to content

Jenkins 自动化部署实战

· 7 min

Jenkins下载链接:Jenkins| 清华大学开源软件镜像站

1. 基础环境搭建#

1.1 上传基础环境包#

将Jenkins压缩包上传到服务器opt目录中,解压并且给予可执行权限:chmod -R +777 jenkins

1.2 文件说明#

1.3 配置环境变量#

修改/etc/profile文件,在文件末尾添加下面的语句

Terminal window
export MAVEN_HOME=/opt/jenkins/environment/apache-maven-3.9.7
export PATH:$PATH:$MAVEN_HOME/bin
export JAVA_HOME=/opt/jenkins/environment/jdk-17.0.11
export PATH:$PATH:$JAVA_HOME/bin
export CLASS_PATH=$CLASS_PATH:$JAVA_HOME/lib

1.4 安装Git和net-tools#

执行yum install git 和 yum install net-tools

1.5 开放Jenkins端口号(8848端口)#

Terminal window
# 添加一个规则来允许端口号8080的入站流量
sudo iptables -I INPUT -p tcp --dport 8848 -j ACCEPT
# 保存规则
sudo iptables-save
# 重启iptables服务(根据你的Linux发行版可能不需要)
sudo service iptables restart
Terminal window
# 添加一个允许端口号8080的规则
sudo firewall-cmd --permanent --add-port=8848/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload

注意:更改防火墙规则需要重启服务,以确保新的规则生效。

2. Jenkins配置#

2.1 启动Jenkins#

进入Jenkins文件目录下以端口号8848启动Jenkins.war包

Terminal window
cd /opt/jenkins/war
nohup java -jar jenkins.war --httpPort=8848 &

如果遇到错误:Fontconfig head is null, check your fonts or fonts configuration说明使用的OenJDK不支持awt包下的字体

Terminal window
yum install fontconfig
Terminal window
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
7f919b426ce34cf99575ec9de758ff06
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************

2.2 Jenkins初始化#

网页输入192.168.213.102:8848 / your_ip:8848,会跳转到Jenkins登录页面,密码就是上面说的密码。然后根据图示进行操作。

如果在安装插件的步骤出现问题,请仔细检查自己的JDK版本是否是高版本的JDK,因为Jenkins已经不再支持JDK8了,很多插件也进行了升级。

2.3 配置阿里镜像源#

镜像地址查询:http://mirrors.jenkins-ci.org/status.html

https://mirrors.aliyun.com/jenkins/updates/update-center.json

2.4 安装Gitee插件#

  1. 找到插件管理,搜索gitee,然后点击安装

依次进入 Manage Jenkins -> Credentials -> System -> Global credentials (unrestricted)

访问提示的gitee令牌获取链接,根据链接生成一个令牌,将令牌填入选项框中。ID和描述不用填写

2.5 安装JDK Parameter插件#

因为运行Jenkins所需要的JDK版本最低是11,而我们的项目使用的JDK版本是8,所以我们需要安装一个JDK 的插件,来指定我们运行项目的JDK,需要安装的插件如下图所示:

2.6 安装Maven Integration插件#

2.7 配置Jenkins Tools环境#

2.7.1 maven配置#

2.7.2 JDK安装#

3. 配置fim自动化构建#

创建一个自由风格的项目,命名为fim

3.1 General配置#

勾选:This project is parameterized,然后配置该项目启动所需的JDK为1.8

3.2 源码管理#

点击Git选项,Repository URL 栏填写项目的gitee地址,然后会报出如下图的红色错误,点击添加凭证按钮,凭证里类型是用户名密码类型,然后填写自己的gitee的用户名和密码,保存即可消除红色

3.3 构建触发器#

我们可以勾选 Gitee webhook 触发构建 ,打开Gitee仓库管理,选择WebHooks,添加一个WebHooks,然后输入链接和Jenkins生成的密码

ps:URL需要公网链接,虚拟机地址不行,这里只是演示

3.4 Build Steps#

3.4.1 Invoke top-level Maven targets#

选择 Invoke top-level Maven targets ,然后配置maven执行clean package 如果想要跳过测试可以加上参数

-Dmaven.test.skip=true

Terminal window
clean package -Dmaven.test.skip=true

3.4.2 Execute shell#

执行shell命令,首先关闭端口号9527的进程(这里的端口号配置fim启动端口,根据自己的情况变化),然后再执行fim启动脚本

#!/bin/bash
cd /opt/jenkins/shell
./killp.sh 9527
nohup ./startFim.sh &

4. 开始构建#

点击Build with Parameters开始构建项目,等待构建完毕

然后我们去linux系统查看是否正在运行

5. Q&A#

5.1 执行脚本:坏的解释器#

问题分析:文件从 Windows 上传到 Linux 通过 unzip 解压。会导致下载到 Windows系统下文件经过编辑后,文件每一行结尾是 \n\r,上传到 Linux时要去掉多出的 \r。 可以通过如下命令去掉多余的 \r

5.2 找不到金蝶和顺丰的包#

Terminal window
[ERROR] Failed to execute goal on project fim: Could not resolve dependencies for project com.benewake.saleordersystem:fim:jar:2.0.0-SNAPSHOT: The following artifacts could not be resolved: com.benewake:k3cloud-webapi-sdk:jar:8.0.5 (absent), com.benewake:sf-sdk:jar:2.1.7 (absent): Could not find artifact com.benewake:k3cloud-webapi-sdk:jar:8.0.5 in alimaven (http://maven.aliyun.com/nexus/content/groups/public/) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
Terminal window
/opt/jenkins/shell/./mvnInstall.sh