本文主要是介绍一个简洁的Jenkinsfile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
利用Jenkinsfile可以便捷的构建Jenkins任务,本文展示一个简洁的Jenkinsfile供大家参考。
#!groovydef projectProperties = [//只保留5个构建记录[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', numToKeepStr: '5']],//参数化构建parameters([choice(name: 'action', choices: 'NoAction\nPublishToMaven\nPublishAndDeploy', description: '操作类型'),choice(name: 'env', choices: 'dev\ntest', description: '发布环境')])]
properties(projectProperties)//maven仓库配置
env.MAVEN_USERNAME = 'username'
env.MAVEN_PASSWORD = 'password'//各个环境的host配置
def hosts = ['dev' : '127.0.0.1','test': '127.0.0.2']//分支黑名单(分支名出现在白名单中将不会被checkout)
def branchBlacklist = []//分支白名单(分支名或分支名的前缀(以'-'分割)出现在白名单中才会被checkout)
def branchWhitelist = ['master', 'develop', 'release', 'feature', 'hotfix']//启用黑名单或白名单开关:-1表示启用黑名单;1表示启用白名单;0表示都不启用
def blackOrWhitelist = 1node {echo "======================================================="echo "用户选择的操作为:${params.action}"echo "用户选择的环境为:${params.env}"echo "当前启用:${blackOrWhitelist == 0 ? '不启用黑白名单' : blackOrWhitelist == 1 ? '白名单'+branchWhitelist : '黑名单'+branchBlacklist}"permission = canGetBranch(blackOrWhitelist, branchBlacklist, branchWhitelist)echo "分支[${env.BRANCH_NAME}]:" + "${permission == true ? '已授权,正在启动后续流程...' : '未授权,正在停止后续流程...'}"echo "======================================================="if (params.action != "NoAction" && permission) {env.ENV = params.envstage('Checkout') {checkout scm}stage('Build') {sh "./gradlew -Penv=${env.ENV} clean build"}stage('Publish') {env.REPO_URL = sh(returnStdout: true, script: "./gradlew -Penv=${env.ENV} publish | grep -oP -m 1 'http.*?zip'").trim()echo "Publish to url: ${env.REPO_URL}"def packageStr = env.REPO_URL.split('/')[-1]currentBuild.description = "Build Environment: ${env.ENV}; <br/> <a href=${env.REPO_URL}>${packageStr}</a>"}if (params.action == "PublishAndDeploy") {stage('Deploy') {sh "ssh root@${hosts.get(params.env)} 'bash -x -s' < ./deploy.sh " + "${env.REPO_URL}"}}}
}def canGetBranch(blackOrWhitelist, branchBlacklist, branchWhitelist) {res = falseif (blackOrWhitelist == 0) {res = true} else if (blackOrWhitelist == -1) {if (!branchBlacklist.contains(env.BRANCH_NAME)) res = true} else if (blackOrWhitelist == 1) {if (branchWhitelist.contains(env.BRANCH_NAME)) res = truefor (branchName in branchWhitelist){if(env.BRANCH_NAME.startsWith(branchName)) res = true}}res
}
这篇关于一个简洁的Jenkinsfile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!