一、General 设置

基本信息

  • 项目名称: tc_payment-bak
  • 启用状态: 已启用 (Enabled)
  • 描述: (未填写)
  • GitHub 项目: 未勾选
  • GitLab 连接: 使用 gitlab 连接
  • 丢弃旧的构建: 启用
    • 策略: Log Rotation
    • 保持构建的最大个数: 5
    • 保持构建的天数: 未设置(默认不保留)

二、源码管理 (Source Code Management)

Git 配置

  • Repository URL:
    git@gitlab.dblive.com:dbbj/dbb-java/dbb_payment.git
    
  • Credentials:
    • 使用凭证: git (gitlab-ssh)
  • Branches to build:
    • 指定分支: refs/heads/feature/dev

注:仅构建 feature/dev 分支。


三、Triggers(触发器)

触发方式是否启用
触发远程构建❌
其他工程构建后触发❌
定时构建❌
Build when a change is pushed to GitLab✅
  • Webhook URL: https://jenkins-test.dblive.com/project/tc_payment-bak |
    | Generic Webhook Trigger | ❌ |
    | GitHub hook trigger for GITScm polling | ❌ |
    | 轮询 SCM | ❌ |

说明:当代码推送到 GitLab 的 feature/dev 分支时,将自动触发构建。


四、Environment(环境设置)

选项是否启用
Delete workspace before build starts❌
Use secret text(s) or file(s)❌
Send files or execute commands over SSH before the build starts❌
Send files or execute commands over SSH after the build runs❌
Configure Kubernetes CLI (kubectl)❌
Inject environment variables to the build process❌
Inject passwords to the build as environment variables❌
Inspect build log for published build scans❌
Setup Kubernetes CLI (kubectl)❌
Terminate a build if it’s stuck❌
With Ant❌
在构建日志中添加时间戳前缀✅

说明:在构建日志中会显示时间戳以方便排查问题。


五、Build Steps(构建步骤)

1. 执行 Shell 脚本

#docker run --rm -w /payment -v /data/jenkinsdata/workspace/tc_payment:/payment \
-v /usr/maven/apache-maven-3.9.9/conf/settings.xml:/root/.m2/settings.xml \
-v ~/.m2/repository:/root/.m2/repository --user root maven:3.9.11-eclipse-temurin-8 sh -c "mvn clean install package"

#ssh -i /root/.ssh/id_rsa root@172.17.2.160 cp -arvp /home/jeepay/service/payment/jeepay-payment.jar /home/jeepay/service/payment/jeepay-payment.jar.${BUILD_TIMESTAMP}
#scp -i /root/.ssh/id_rsa -qpr /data/jenkinsdata/workspace/tc_payment/jeepay-payment/target/jeepay-payment.jar root@172.17.2.160:/home/jeepay/service/payment
#ssh -i /root/.ssh/id_rsa root@172.17.2.160 "systemctl restart tc_payment.service"
步骤解析:
  1. 使用 Docker 构建 Maven 项目:

    • 使用 maven:3.9.11-eclipse-temurin-8 镜像。
    • 挂载本地工作区、Maven 设置文件和仓库。
    • 执行 mvn clean install package 编译并打包项目。
  2. 复制旧 JAR 文件(注释):

    • 将现有 JAR 备份为带时间戳的新文件名。
  3. 通过 SCP 上传新 JAR 包:

    • 将构建生成的 jeepay-payment.jar 上传到目标服务器 /home/jeepay/service/payment/ 目录。
  4. 重启服务:

    • 使用 systemctl restart tc_payment.service 重启服务。

⚠️ 注意:当前脚本中部分命令被注释掉,实际执行的是 scp 和 ssh 命令。


2. Send files or execute commands over SSH(SSH 发布)

SSH Server 配置
  • Name: 同城后端测试环境
  • Transfer Set:
    • Source files: jeepay-payment/target/jeepay-payment.jar
    • Remove prefix: jeepay-payment/target/
    • Remote directory: /home/jeepay/service/payment
    • Exec command:
APP_NAME="jeepay-payment.jar"
JAR_DIR="/home/jeepay/service/payment"
LOG_FILE="/www/projects/logs/payment/payment.log"

# 启动成功关键词
SUCCESS_KEYWORD="Started JeepayPayApplication"
START_TIMEOUT=60 # 最大等待启动时间(秒)

# 设置语言环境(防止中文乱码)
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

# 进入项目目录
cd "$JAR_DIR" || {
    echo "Error: Cannot enter directory $JAR_DIR"
    exit 1
}

# 检查 app.sh 是否存在
if [ ! -f "app.sh" ]; then
    echo "Error: app.sh script not found"
    exit 1
fi

# 停止应用
echo "Stopping [$APP_NAME] ..."
./app.sh stop

# 给系统一点时间释放端口和资源
sleep 3

# 启动应用
echo "Starting [$APP_NAME] ..."
./app.sh start
功能说明:
  • 将构建后的 JAR 文件上传至远程服务器。
  • 在远程服务器上执行以下操作:
    1. 设置环境变量(避免中文乱码)。
    2. 进入指定目录。
    3. 检查启动脚本 app.sh 是否存在。
    4. 停止当前运行的服务。
    5. 等待 3 秒释放资源。
    6. 启动新的服务实例。

六、构建后操作(Post-build Actions)

  • 当前未配置任何构建后操作(如通知、归档等)。

七、总结:整体流程图解

[GitLab 推送代码到 feature/dev]
           ↓
[Jenkins 自动触发构建]
           ↓
[拉取代码 → 使用 Docker 构建 Maven 项目]
           ↓
[编译生成 jeepay-payment.jar]
           ↓
[通过 SCP 上传 JAR 到目标服务器]
           ↓
[在远程服务器执行停止 → 等待 → 启动流程]
           ↓
[完成部署]

八、注意事项与建议

  1. 安全性:

    • 使用 SSH 密钥认证,确保私钥安全。
    • 避免硬编码密码或敏感信息。
  2. 稳定性优化:

    • 可考虑增加构建失败重试机制。
    • 增加健康检查逻辑,确认服务是否真正启动成功。
  3. 可维护性提升:

    • 建议将 app.sh 脚本标准化,并统一管理。
    • 可引入 systemd 或其他进程管理工具增强稳定性。
  4. 监控建议:

    • 添加日志采集与告警(如 ELK + Prometheus)。
    • 部署后验证服务可用性(HTTP 接口探测)。

九、附录:关键参数说明

参数说明
BUILD_TIMESTAMPJenkins 提供的环境变量,表示构建时间戳
jeepay-payment.jar构建输出的主程序包
172.17.2.160目标部署服务器 IP 地址
tc_payment.servicesystemd 服务名,用于控制服务启停

✅ 此配置已实现 CI/CD 流程闭环:从代码提交 → 自动构建 → 自动部署 → 自动重启服务。适合开发或测试环境快速迭代使用。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐