jenkins搭建与简单使用

目录规划

  • Jenkins数据目录:/var/lib/jenkins
  • Jenkins systemd单元文件:/usr/lib/systemd/system/jenkins.service(新版唯一配置文件)
  • JDK17 Temurin:/usr/local/jdk
  • Maven3.9.16:/usr/local/maven
  • 网页端口:8080
  • 初始管理员密码:/var/lib/jenkins/secrets/initialAdminPassword

一、调整防火墙

复制代码
# 永久关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 防火墙放行8080端口;云服务器额外在服务商安全组放行8080
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-ports

校验:getenforce 返回 Permissive


二、:安装JDK17

复制代码
cd /usr/local

wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/17/jdk/x64/linux/OpenJDK17U-jdk_x64_linux_hotspot_17.0.21_9.tar.gz
tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.21_9.tar.gz
mv jdk-17.0.21+9 jdk

# 写入全局环境变量
cat >> /etc/profile.d/java.sh <<EOF
export JAVA_HOME=/usr/local/jdk
export PATH=\$PATH:\${JAVA_HOME}/bin
EOF
source /etc/profile.d/java.sh

# 验证
java -version

注意用EOF写入文件时,记得$要加转义符\

预期输出:openjdk version "17.0.21"


三、安装Git

复制代码
yum install -y git
git --version

四、安装 Maven

复制代码
cd /usr/local
wget https://mirrors.aliyun.com/apache/maven/maven-3/3.9.16/binaries/apache-maven-3.9.16-bin.tar.gz
tar -zxvf apache-maven-3.9.16-bin.tar.gz
mv apache-maven-3.9.16 maven

# 写入环境变量
cat >> /etc/profile.d/maven.sh <<EOF
export M2_HOME=/usr/local/maven
export PATH=\$PATH:\${M2_HOME}/bin
EOF
source /etc/profile.d/maven.sh

# 校验
echo $PATH

# 修改settings.xml 阿里云maven仓库镜像(打包拉依赖加速)
vim /usr/local/maven/conf/settings.xml

找到 <mirrors> 标签,粘贴下面镜像配置:只留一个mirror

复制代码
<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>central</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

# 验证maven
mvn -v

输出Maven 3.9.16,绑定JDK17


五、安装 Jenkins

2.500+版本 不再读取 /etc/sysconfig/jenkins ,所有JVM、端口、JAVA_HOME配置在 /usr/lib/systemd/system/jenkins.service

复制代码
cd /usr/local
# 安装jenkins字体依赖
yum install fontconfig -y
# 清华jenkins镜像,你找到的包,地址校验可用
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.528.3-1.1.noarch.rpm
yum install -y ./jenkins-2.528.3-1.1.noarch.rpm

5.1 修改 jenkins.service 单元文件(新版核心配置)

复制代码
vim /usr/lib/systemd/system/jenkins.service

修改这几个环境变量(直接覆盖原有,按需调整内存)

指定我们的JDK17

Environment="JAVA_HOME=/usr/local/jdk"

JVM参数:4G机器推荐 -Xmx2g -Xms1g;8G机器 -Xmx4g -Xms2g

Environment="JAVA_OPTS=-Djava.awt.headless=true -Xmx2g -Xms1g"

网页端口,默认8080,改端口在这里修改

Environment="JENKINS_PORT=8080"

Jenkins数据家目录,一般不动

Environment="JENKINS_HOME=/var/lib/jenkins"

5.2 重载并启动

复制代码
systemctl daemon-reload
systemctl start jenkins
systemctl enable jenkins
systemctl status jenkins

5.3 替换国内插件源

复制代码
cd /var/lib/jenkins/updates
cp default.json default.json.bak
sed -i 's#https://updates.jenkins.io/download#https://mirrors.huaweicloud.com/jenkins#g' default.json
sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json

# 修改更新中心配置
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml

https://mirrors.huaweicloud.com/jenkins/update-center.json

复制代码
# 重新启动
systemctl restart jenkins
systemctl status jenkins

看到 active (running) 代表启动成功

浏览器访问:http://服务器IP:8080

复制代码
# 获取初始管理员密码(网页解锁用)
cat /var/lib/jenkins/secrets/initialAdminPassword

# 实时日志排错
tail -f /var/log/messages |grep -i jenkins

六、安装插件

Jenkins 2.528+ 在初始化向导时,默认会去联网校验更新中心地址,哪怕你服务器本身能上网,只要更新中心地址访问不通,就直接弹出【离线】,跳过 "推荐插件" 页面。

6.1 页面选择【跳过插件安装】,创建管理员账号,进入 Jenkins 首页

6.2 进入首页后,再修改更新中心为国内源(这个阶段修改才生效!)

系统管理 → 插件管理 → 高级 -> 找到【更新站点】,地址改成:

https://mirrors.huaweicloud.com/jenkins/update-center.json
提交保存,回到【可用插件】,等待索引加载完成(首次加载会慢

6.3 需要的核心插件清单(后面去可用插件里勾选安装)

  • Pipeline
  • Git
  • Maven Integration
  • Publish Over SSH(远程部署 jar)
  • Generic Webhook Trigger(可选,代码提交自动触发)
  • Deploy to container
  • GitHub Branch Source
  • GitHub Authentication
  • Locale (中文环境插件前置)
  • Localization: Chinese (Simplified)(中文环境插件)

6.4 修改语言环境

系统管理 -> Appearance -> Default Language -> 中文 -> 勾选Ignore browser preference and force this language to all users


七、全局工具配置(系统管理 → 全局工具配置)

7.1 maven setting

复制代码
# 将 默认 settings 提供 和 默认全局 settings 提供 改为
/usr/local/maven/conf/settings.xml

7.2 JDK:

复制代码
# 新增JDK,名称`JDK17`,取消自动安装,JAVA_HOME填:
/usr/local/jdk

7.3 Git:

复制代码
# 新增Git,路径
/usr/bin/git

7.4 Maven:

复制代码
# 新增Maven,名称`maven3.9.16`,取消自动安装,MAVEN_HOME填 
/usr/local/maven

保存


八、配置jenkins服务器免密web服务器

假设192.168.2.21是web服务器

8.1 配置免密

复制代码
# 在jenkins服务器准备密钥
su - jenkins -s /bin/bash

ssh-keygen
ssh-copy-id root@192.168.2.21
# 记录id_rsa
cat /var/lib/jenkins/.ssh/id_rsa
# 测试
ssh root@192.168.2.21

8.2 在jenkins-web上配置免密

  1. 系统管理->系统配置->publish over ssh ->新增SSH Server
  2. Name填入应用服务器名 web1->Hostname应用服务器ip 192.168.2.21->Username远程用户名 root->Remote Directory工作目录 /
  3. 高级->勾选Use password authentication, or use a different key->Key->填入上一步记录的私钥id_rsa->然后测试test configuration

九、案例-以ruoyi为例

9.1 新建任务

新建任务 -> 输入任务名称 -> 自由风格项目

9.2 源码管理

Git > https://gitee.com/y_project/RuoYi.git
Triggers触发器,什么都不选则是手动触发,手动构建build now

9.3 Build Steps

9.3.1 Execute shell

复制代码
echo "====================================="
echo "构建开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "WORKSPACE: ${WORKSPACE}"
sed -i "s/password: password/password: chaoROOT1314./g" /var/lib/jenkins/workspace/ruoiyi/ruoyi-admin/src/main/resources/application-druid.yml
sed -i "s/localhost/192.168.2.7/g" /var/lib/jenkins/workspace/ruoiyi/ruoyi-admin/src/main/resources/application-druid.yml
echo "GIT_COMMIT: $(git rev-parse --short HEAD)"
echo "GIT_BRANCH: ${GIT_BRANCH}"
echo "====================================="

9.3.2 Invoke top-level Maven targets

选择maven版本maven3.9.16-> 目标:clean package -DskipTests

9.3.3 Execute shell

复制代码
JAR_FILE="${WORKSPACE}/ruoyi-admin/target/ruoyi-admin.jar"
if [ ! -f "${JAR_FILE}" ];then
    echo "ERROR: Jar包不存在!打包失败,终止流水线"
    exit 1
fi
echo "✅ 产物校验通过,jar路径:${JAR_FILE}"
ls -lh ${JAR_FILE}

9.4 增加构建后操作步数

选择Send files or execute commands over SSH

SSH Server选择应用服务器,一般为 8.2构建的服务器

复制代码
# Source files
ruoyi-admin/target/ruoyi-admin.jar

# Remove prefix 
ruoyi-admin/target/

# Remote directory
/opt/ruoyi/app/

# Exec command
nohup /usr/local/jdk/bin/java -jar /opt/ruoyi/app/ruoyi-admin.jar > /opt/ruoyi/logs/ruoyi.log 2>&1 &

注:

  1. 构建好的文件在jenkins服务器的/var/lib/jenkins/workspace/ruoiyi/ruoyi-admin/target/ruoyi-admin.jar。/var/lib/jenkins/workspace是工作路径,ruoiyi是构建任务名,剩下的ruoyi-admin/target/ruoyi-admin.jar是Source files
  2. Remove prefix移除路径ruoyi-admin/target/,因为jenkins会按照Source files(ruoyi-admin/target/ruoyi-admin.jar)传送,不移除的话,会在指定目录下,再创建目录ruoyi-admin/target/,其下才是ruoyi-admin.jar
  3. Remote directory目标目录,会与8.2的Remote Directory发生拼接:
    8.2的Remote Directory是/,这里的Remote directory 是/opt/ruoyi/app/,所以jenkins会把jar包传送到应用服务器的/opt/ruoyi/app/位置
  4. Exec command 启动项目的命令
相关推荐
小白的码BUG之路1 小时前
Jenkins -- gitee+docker+harbor+k8s 部署项目
docker·gitee·jenkins
Z21-X20 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
进击的荆棘1 天前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
瑞雪兆丰年兮1 天前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
那明眸似水1 天前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
小南家的青蛙1 天前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻1 天前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
Alluxio2 天前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
Sayai2 天前
Neo4j 图数据质量检查实战:环路检测、孤立节点与连通分量,两条 Cypher 引出的数据体检清单(含变长路径性能陷阱)
运维·neo4j·图数据库·数据质量·cypher