首页主机资讯Debian Jenkins部署的自动化脚本有哪些

Debian Jenkins部署的自动化脚本有哪些

时间2025-12-15 15:33:03发布访客分类主机资讯浏览351
导读:Debian上Jenkins自动化部署常用脚本与示例 脚本类型与适用场景 Bash 安装脚本:一键在 Debian 上安装 Java 11、添加 Jenkins APT 源、安装并启动 Jenkins,适合快速搭建 CI/CD 环境。 J...

Debian上Jenkins自动化部署常用脚本与示例

脚本类型与适用场景

  • Bash 安装脚本:一键在 Debian 上安装 Java 11、添加 Jenkins APT 源、安装并启动 Jenkins,适合快速搭建 CI/CD 环境。
  • Jenkinsfile 流水线脚本:定义 拉取代码 → 构建 → 测试 → 部署 全流程,支持从 SCM 加载,便于版本化管理与复用。
  • 部署脚本:包括本地或远程 SSH 部署 JARDocker 镜像构建与推送、以及 备份与回滚 等常见生产动作。

Bash 一键安装脚本

  • 作用:自动安装 OpenJDK 11、导入 Jenkins GPG 密钥、添加官方仓库、安装 Jenkins 并启动服务,同时输出初始管理员密码路径。
  • 示例脚本(保存为 install_jenkins.sh):
#!/usr/bin/env bash
set -e

sudo apt-get update
sudo apt-get install -y openjdk-11-jdk wget gnupg2 software-properties-common

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list >
     /dev/null

sudo apt-get update
sudo apt-get install -y jenkins

sudo systemctl enable --now jenkins
echo "Jenkins 初始管理员密码路径:/var/lib/jenkins/secrets/initialAdminPassword"
  • 使用要点:
    • 执行:chmod +x install_jenkins.sh & & sudo ./install_jenkins.sh
    • 防火墙放行:sudo ufw allow 8080/tcp
    • 生产建议:修改默认端口并配置 SSL/TLS

Jenkinsfile 流水线脚本

  • 作用:以代码方式编排 拉取代码 → 运行测试 → 构建打包 → 部署,可从 Git 仓库加载,便于团队协作与审计。
  • 示例(多语言/多场景通用):
pipeline {

  agent any
  environment {

    JAVA_HOME = '/usr/lib/jvm/java-11-openjdk-amd64'
    MAVEN_OPTS = '-Dmaven.test.failure.ignore=true'
  }

  stages {

    stage('拉取代码') {

      steps {
 git branch: 'main', url: 'https://github.com/your-org/your-repo.git' }

    }

    stage('运行测试') {

      steps {
 sh 'python -m pytest tests/' }
 // 其他语言可替换为相应测试命令
    }

    stage('构建打包') {

      steps {
 sh 'mvn -B -DskipTests clean package' }
 // Node 可用 npm/yarn,Go 可用 go build
    }

    stage('部署') {

      steps {
 sh './deploy.sh' }
 // 可替换为 SSH 或 Docker 部署步骤
    }

  }

  post {

    always {

      echo "构建完成:${
currentBuild.fullDisplayName}
"
      // mail to: 'team@example.com', subject: "构建完成", body: "..."
    }

    failure {

      echo "构建失败,请查看日志:${
env.BUILD_URL}
"
    }

  }

}
    
  • 使用要点:
    • 在任务中选择 Pipeline script from SCM,指定仓库与 Jenkinsfile 路径。
    • 通过 Credentials Binding 管理密钥与敏感变量。

部署脚本示例

  • SSH 远程部署 JAR(在目标机上执行或经 sshPublisher 调用)
#!/usr/bin/env bash
set -e
JAR_NAME="app.jar"
APP_DIR="/opt/app"
LOG_FILE="$APP_DIR/app.log"

# 备份旧包
[ -f "$APP_DIR/$JAR_NAME" ] &
    &
 mv "$APP_DIR/$JAR_NAME" "$APP_DIR/${
JAR_NAME}
.bak.$(date +%F-%H%M%S)"

# 停止旧进程(按端口或进程名)
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{
print $2}
    ')
if [ -n "$PID" ];
     then
  kill -9 "$PID" || true
  sleep 3
fi

# 启动新版本
nohup java -jar "$APP_DIR/$JAR_NAME" --spring.profiles.active=prod >
     "$LOG_FILE" 2>
    &
    1 &


echo "已启动 $JAR_NAME,日志:$LOG_FILE"
  • Docker 构建与远程部署(Jenkins 节点需能执行 docker 命令)
#!/usr/bin/env bash
set -e
IMAGE="your-registry/your-app:${
BUILD_NUMBER}
    "
CONTAINER="your-app"

# 构建镜像
docker build -t "$IMAGE" .

# 推送镜像(需先在 Jenkins 配置 Docker Hub 凭据)
docker push "$IMAGE"

# 远程部署
ssh user@target "
  docker pull $IMAGE
  docker stop $CONTAINER || true
  docker rm $CONTAINER || true
  docker run -d --name $CONTAINER -p 8080:8080 $IMAGE
"
  • 备份与清理脚本(配合构建后归档/回滚)
#!/usr/bin/env bash
set -e
BAK_DIR="/opt/backups/jar/$(date +%F)"
mkdir -p "$BAK_DIR"

# 备份产物
cp target/*.jar "$BAK_DIR/"

# 清理 10 天前的备份
find /opt/backups/jar/ -type f -mtime +10 -delete
  • 使用要点:
    • 远程执行可通过 sshPublishersshagent + ssh 完成。
    • 若 Jenkins 使用 Docker,需将 jenkins 用户加入 docker 组并重启服务。

触发与通知配置要点

  • 代码触发:在 GitHub/GitLab 配置 Webhook,指向 Jenkins 任务;Jenkins 侧启用对应触发器(如 GitHub hook trigger 或 GitLab webhook)。
  • 轮询触发:在 Freestyle 任务中使用 Poll SCM(如 H/5 * * * * 每 5 分钟检查一次变更)。
  • 通知:在 post 阶段使用 mail 步骤或企业微信/钉钉 Webhook 发送构建结果。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian Jenkins部署的自动化脚本有哪些
本文地址: https://pptw.com/jishu/771726.html
Debian Jenkins部署的容器化解决方案 Debian Jenkins部署的性能监控方法

游客 回复需填写必要信息