背景
项目规划使用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 包"
}
}
}
}
}
}