温馨提示×

Debian Jenkins如何实现自定义脚本

小樊
43
2025-12-16 22:48:41
栏目: 智能运维

在 Debian 上使用 Jenkins 实现自定义脚本

一 环境准备与安装

  • 安装 Java 17(Debian 12 推荐):sudo apt-get install -y fontconfig openjdk-17-jre
  • 导入 Jenkins 官方 APT 密钥 与源(使用签名文件方式):
    • sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
    • echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
  • 安装并启动 Jenkins:sudo apt-get update && sudo apt-get install -y jenkins && sudo systemctl enable --now jenkins
  • 获取解锁密钥:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  • 访问控制台:打开浏览器进入 http://<服务器IP>:8080,完成插件与管理员初始化。

二 自定义脚本的两种常见方式

  • 方式 A 内联脚本(直接在任务中编写 Pipeline)
    • 新建任务:New Item → 选择 Pipeline → 在 “Pipeline” 部分选择 Pipeline script,直接粘贴 Groovy 脚本。
    • 适用:快速验证、演示或脚本较简单的场景。
  • 方式 B SCM 管理脚本(推荐)
    • 在代码仓库根目录放置 Jenkinsfile,将构建、测试、部署流程纳入版本控制。
    • 任务配置选择 Pipeline script from SCM → 选择 Git → 填写仓库 URL 与凭据 → 指定脚本路径(如 Jenkinsfile)。
    • 适用:团队协作、可审计、可回滚与多环境复用。

三 示例 Jenkinsfile 模板

  • 多语言通用模板(拉取代码 → 构建 → 测试 → 归档 → 可选部署)
    • pipeline { agent any environment { APP_NAME = ‘myapp’ VERSION = ‘1.0.${BUILD_NUMBER}’ } stages { stage(‘Checkout’) { steps { git branch: ‘main’, url: ‘https://github.com//.git’ } } stage(‘Build’) { steps { sh ‘make build || ./mvnw package -DskipTests’ } } stage(‘Test’) { steps { sh ‘make test || ./mvnw test’ } post { always { junit ‘/target/surefire-reports/*.xml’ } } } stage(‘Archive’) { steps { archiveArtifacts artifacts: '/target/.jar,/dist/', fingerprint: true } } stage(‘Deploy’) { when { branch ‘main’ } steps { sh 'rsync -avz target/.jar user@prod-server:/opt/app/’ // 或使用 SSH Publisher 插件发布 } } } post { success { echo ‘Build and tests succeeded.’ } failure { echo ‘Build or tests failed.’ } always { echo ‘Pipeline finished.’ } } }
  • 说明
    • 语言/构建工具可按需替换(如 mvnwnpmpip)。
    • 测试报告归档使用 junit 步骤,归档产物使用 archiveArtifacts
    • 部署阶段可按需启用,结合凭据与远程命令/插件完成发布。

四 触发与集成

  • 源码变更触发
    • 轮询 SCM:在任务 “Build Triggers” 勾选 Poll SCM,如 H/5 * * * *(每 5 分钟检查一次)。
    • Webhook(推荐):安装 GitHub Integration 插件,任务勾选 GitHub hook trigger for GITScm polling;在 GitHub 仓库 Settings → Webhooks 添加 Payload URL:http:///github-webhook/,Content type 选 application/json,事件选 Just the push event
  • 远程触发与通知
    • 远程构建:使用 curlGitHub webhook 触发构建,便于与外部系统集成。
    • 构建后处理:可结合邮件或企业微信/钉钉通知插件,在 post 阶段执行通知逻辑。

五 安全与运维要点

  • 凭据管理:在 Manage Jenkins → Credentials 添加 SSH 私钥用户名/密码Personal Access Token,在 Pipeline 中使用 withCredentials 绑定,避免明文存放。
  • 权限与隔离:为 Jenkins 服务使用 专用系统用户,最小权限运行;不同项目使用独立 Agent/标签工作空间,减少相互影响。
  • 网络安全:仅开放必要端口(默认 8080),生产环境建议启用 反向代理 + HTTPS;如使用 UFW:sudo ufw allow 8080/tcp。
  • 日志与审计:通过 Console Output 排查问题;关键操作纳入版本控制(Jenkinsfile 与脚本),保留变更记录与回滚能力。

0