背景

项目规划使用gitlab-runner 企业版,但是一直没有落地。模块小版本更新、发布测试环境也比较频繁,后期规划使用k8s服务。为了渡过这段时间,使用jenkins pipeline+ansible实现自动化部署

说明

jenkins与ansible-server机器建议在同一台,可以在控制台观察到ansible-playbook运行输出信息

pipeline代码案例

pipeline {
  agent any
  parameters {
    gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH', description:'选择分支'
    choice(name: 'BuildParameter', choices: ['Build'], description: '构建参数')
  }
  options {
    durabilityHint 'PERFORMANCE_OPTIMIZED'
    timeout(time:5, unit: 'MINUTES')
    timestamps()
    skipStagesAfterUnstable()
    skipDefaultCheckout true
    buildDiscarder logRotator(artifactDaysToKeepStr: '1', artifactNumToKeepStr: '1', daysToKeepStr: '10', numToKeepStr: '5')
  }
  environment {
    BuildParameter="${params.BuildParameter}"
    BRANCH = "${params.BRANCH}"
  }
  stages {
    stage("Make Sure Parameters") {
        steps {
            script {
                if ("${params.BuildParameter}" == "none") {
                    echo "参数为空,请重新输入"
                }else{
                    BuildParameter="${params.BuildParameter}"
                }
            }
        }
    }
    stage("Clean workspace") {
      steps {
        deleteDir()
      }
    }
    stage("Pull SourceCode") {
      steps {
        git branch: "${BRANCH}", credentialsId: 'c2f1931e-48dd-4729-afa7-5c758ddf2222', url: 'git@gitlab.in.wangtianci/wangtianci.git'
      }
    }
    stage("Build") {
      steps {
          dir("$WORKSPACE/../") {
            sh '''
              echo "=====================Start Make Tar Package====================="
              tar -zcf starx-ner-new.tar.gz starx-ner-new
              mv starx-ner-new.tar.gz starx-ner-new
              echo "=====================End Make Tar Package====================="
            '''
          }
      }
    }
    stage("Post Tar file to Ansible Host") {
      steps {
          script {
            def code = sh (
                script: "ls ${WORKSPACE}/starx-ner-new.tar.gz",
                returnStatus: true
            )
            if ( "$code" == "0") {
                sshPublisher(publishers: [sshPublisherDesc(
                  configName: 'ansible-server',
                  transfers: [sshTransfer(
                    cleanRemote: false,
                    excludes: '',
                    execCommand: 'cd /root/dev_operation/operation/star && ansible-playbook -v playbooks/install_starx_ner_new.yml && supervisorctl status',
                    execTimeout: 300000,
                    flatten: false,
                    makeEmptyDirs: false,
                    noDefaultExcludes: false,
                    patternSeparator: '[, ]+',
                    remoteDirectory: '',
                    remoteDirectorySDF: false,
                    removePrefix: '',
                    sourceFiles: 'starx-ner-new.tar.gz'
                  )],
                  usePromotionTimestamp: false,
                  useWorkspaceInPromotion: false,
                  verbose: false)
                ])
            }else{
                echo "无 starx-ner-new.tar.gz 包"
            }
          }
      }
    }
  }
}

Copyright & TianCiwang 2021 all right reserved,powered by Gitbook修改时间: 2022-03-08 15:25:48

results matching ""

    No results matching ""

    results matching ""

      No results matching ""