linux

Linux Jenkins如何与其他工具集成

小樊
34
2025-12-31 20:58:49
栏目: 编程语言

Linux 上 Jenkins 与常见工具的集成实践

一 基础准备与插件体系

二 源码管理与自动触发

三 构建与制品管理 Docker 与 Kubernetes

四 部署与通知落地模式

五 示例 Jenkinsfile 多工具串联

pipeline {
  agent any
  environment {
    IMAGE      = "your-registry/your-app:${env.BUILD_NUMBER}"
    REGISTRY   = "https://your-registry"
    CRED_ID    = 'docker-reg-creds'   // Docker Registry 凭据 ID
    SSH_CRED   = 'deploy-ssh-key'    // SSH 凭据 ID
    HOST       = '10.0.0.10'
    SERVICE    = 'app'
  }
  stages {
    stage('Checkout') {
      steps { git branch: 'main', url: 'git@github.com:org/repo.git' }
    }
    stage('Build & Test') {
      steps {
        sh 'mvn -B -DskipTests clean package'
        sh 'mvn test'
      }
    }
    stage('Build & Push Image') {
      steps {
        script {
          docker.build(IMAGE, ".")
          docker.withRegistry(REGISTRY, CRED_ID) {
            docker.image(IMAGE).push()
          }
        }
      }
    }
    stage('Deploy via SSH') {
      steps {
        sshPublisher(
          publishers: [
            sshPublisherDesc(
              configName: SSH_CRED,
              transfers: [
                sshTransfer(
                  execCommand: """
                    set -e
                    docker pull ${IMAGE}
                    docker stop ${SERVICE} || true
                    docker rm ${SERVICE} || true
                    docker run -d --name ${SERVICE} -p 8080:8080 ${IMAGE}
                  """
                )
              ]
            )
          ]
        )
      }
    }
  }
  post {
    success { echo 'Deploy succeeded.' }
    failure { echo 'Deploy failed.' }
  }
}

说明:上述流水线串联了 Git → Maven → Docker → Registry → SSH 部署,凭据通过 credentialsId 注入,便于在不同环境复用与审计。

0
看了该问题的人还看了