一、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 重启服务。

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


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_TIMESTAMP Jenkins 提供的环境变量,表示构建时间戳
jeepay-payment.jar 构建输出的主程序包
172.17.2.160 目标部署服务器 IP 地址
tc_payment.service systemd 服务名,用于控制服务启停

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

Logo

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

更多推荐