一个简洁的Jenkinsfile

2024-06-23 16:32
文章标签 简洁 jenkinsfile

本文主要是介绍一个简洁的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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087683

相关文章

轻松掌握python的dataclass让你的代码更简洁优雅

《轻松掌握python的dataclass让你的代码更简洁优雅》本文总结了几个我在使用Python的dataclass时常用的技巧,dataclass装饰器可以帮助我们简化数据类的定义过程,包括设置默... 目录1. 传统的类定义方式2. dataclass装饰器定义类2.1. 默认值2.2. 隐藏敏感信息

Emlog模板-简洁大气的资源下载站PHP源码

模板介绍 Emlog模板-简洁大气的资源下载站PHP源码 模板留白简洁大气,首页ajax加载下一页,这是纯模板,安装需要先安装好emlog系统,再把模板文件上传到Emlog模板目录,后台选择模板就可以了,非常简单。 模板下载 Emlog模板-简洁大气的资源下载站PHP源码

hibernate泛型Dao,让持久层简洁起来

【前言】hibernate作为持久层ORM技术,它对JDBC进行非常轻量级对象封装,使得我们可以随心所欲的使用面向对象的思想来操作数据库。同时,作为后台开发的支撑,的确扮演了一个举足轻重的角色,那么我们在项目中如何灵活应用hibernate,也会给项目维护以及项目开发带来便利,下面我将展示我们项目中是如何来对hibernate进行应用和操作。 【目录】              -

【深度学习】线性回归的从零开始实现与简洁实现

前言 我原本后面打算用李沐老师那本《动手学深度学习》继续“抄书”,他们团队也免费提供了电子版(https://zh-v2.d2l.ai/d2l-zh-pytorch.pdf)。但书里涉及到代码,一方面展示起来不太方便,另一方面我自己也有很多地方看不太懂。 这让我开始思考起我“抄书”的意义了。如果都是文字,我感觉抄起来可以加深印象,在抄的同时理解并思考。 但是如果涉及到代码,我没办法在抄的时候

简洁直白的github快速入门教程(云主机)

如果你不是云主机,也可以使用本地的linux,这里不提供windows的解决方案! 1. 在云主机上安装 Git 首先,确保你的云主机上安装了 Git。你可以使用以下命令来安装它: # 对于 Debian/Ubuntu 系统sudo apt-get updatesudo apt-get install git# 对于 CentOS/RHEL 系统sudo yum install git

黑盒闪清 v2.9.9 体积小巧,简洁高效的手机清理神器

黑盒闪清APP是安卓手机上的一款优质文件管理器,拥有存储分析、文件分类、大文件扫描、空文件夹扫描等功能,应用无广告、无推送,完全免费使用,让你手机中的文件管理就跟在电脑上管理一样简单。 链接:https://pan.quark.cn/s/5ed59be1d94c 📁大小:9M 🏷标签:#黑盒闪清 #文件管理 #Andriod #内存清理 #无广告 夸克网盘: https://pan.

jQuery全选、全不选、反选的简洁写法

转载于:http://blog.csdn.net/zhumengstyle/article/details/76512778

[M排序] lc2860. 让所有学生保持开心的分组方法数(排序+贪心+简洁代码实现+思维)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:2860. 让所有学生保持开心的分组方法数 题单: 思维 01.1、思维 2. 题目解析 有一定的思考难度,不太好归类,就放到 思维 里面吧。 思路: 首先分析题目中的一些关键信息,能得出来,选法是唯一的,且选的话,会把小于当前值的前面部分全部选了。那么此时问题就转化为 选0、选1、选2…选n 个的问题

让Activity更加简洁第二篇---AsyncTask的使用姿势

如果你点开的这篇文章,那么 AsyncTask 的基本用法肯定是掌握了的。这篇文章不是分析 AsyncTask的内部原理,而是侧重于如何使用,让我们视图层中的Activity看起来更舒适。本文的项目地址请移步:https://github.com/herojing/JokeTask 下面结合项目谈谈自己的使用心得。 一、使用后效果如何?        老规矩,DEMO 实现的是

让Activity更加简洁第一篇---MVP模式

MVP 这种模式出现已经很久了,在网上有些关于 MVP 开源代码2014年就有了,近期有关注项目架构方面的内容,于是乎,作为一个还不懂什么是 MVP 的人,那么就一定要了解一下的。网上关于 MVP 的资料其实也不少,通常都要把 MVP 和 MVC 做一下比较,我喜欢直接了当,相信有耐心看MVP的人是一定懂 MVC 的,MVC 的略过。本文的项目地址是:https://github.c