如今,企业都太多Jenkins去管理apk,后该代码被提交jenkins在生成build

因此,我们可以得到jenkins提交版本

Jenkins在编制job什么时候,有一个内置的可变BUILD_NUMBER

groovy有一个很实用的函数:

/**
* Returns an unmodifiable map of all available environment variables.
*
* @return the map representing all environment variables.
*/
public static Map<String, String> getenv() {
Map<String, String> map = new HashMap<String, String>();
for (String entry : Libcore.os.environ()) {
int index = entry.indexOf('=');
if (index != -1) {
map.put(entry.substring(0, index), entry.substring(index + 1));
}
}
return new SystemEnvironment(map);
}

能够得到全部的环境变量:

假设我们的build.gradle执行在windows上

Map<String, String> map =  System.getenv()我们把这个map的key所有打印出来是:

USERPROFILE,ProgramData,USERDNSDOMAIN,PATHEXT,windows_tracing_logfile,JAVA_HOME,ProgramFiles(x86),XNAGSShared,windows_tracing_flags,TEMP,SystemDrive,ProgramFiles,Path,HOMEDRIVE,PROCESSOR_REVISION,USERDOMAIN,ALLUSERSPROFILE,VBOX_INSTALL_PATH,ProgramW6432,PROCESSOR_IDENTIFIER,SESSIONNAME,TMP

这里有个Path,我们能够取到系统的Path,这样我们就能够推断执行环境是否是否全然:

假设我们要运行Git的一些命令。这就须要Path里有Git

我们能够这样来推断:

   String str = map.get("Path")
if(str != null) {
//it's windows
if(str.contains("Git")){
return true;
}
return false;
}

假设build.gradle执行在linux上,我们就要看这个环境是否配置了jenkins,我们能够这样来推断

把Linux的环境变量都打印出来是这样的形式:

JENKINS_HOME=/home/jenkins/.jenkinsJENKINS_BUILD_USER_LAST_NAME=GaoSHLVL=1JENKINS_BUILD_USER_ID=nick.gaoNODE_LABELS=CH-XMN-ANDROID CI01ANDROID i386 i386-unknown+check_lsb_release_installed i386-unknown+check_lsb_release_installed-unknown+check_lsb_release_installed unknown+check_lsb_rele
boolean isInJeknins() {
Map<String, String> map = System.getenv() if(map == null) {
return false
}
String str = map.get("Path")
if(str != null) {
//it's windows
return false;
}
else{
str = ""
Iterator it = map.iterator();
while(it.hasNext()) {
str += it.next();
}
if(str.contains("jenkins")){
return true
}else{
return false;
}
}
return false
}

然后假设有jenkins环境我们能够这样来获取构建版本:

def getJenkinsBuild() {
boolean flag = isInJeknins();
if(flag){
ext.env = System.getenv()
ext.buildNumber = env.BUILD_NUMBER?.toInteger()
return "$buildNumber"
}else{
return 0
} }

版权声明:本文博主原创文章,博客,未经同意不得转载。

经Gradle采取Jenkins的build的更多相关文章

  1. [原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。

    使用Gradle的插件EnIDE build的时候,输出的中文总是乱码.解决办法:在EnIDE的设置里面,设置JVM options GRADLE_OPTS 为:-Dfile.encoding=UTF ...

  2. Gradle: The New Android Build System

    Gradle: The New Android Build System Google selected Gradle as the foundation of the Android SDK bui ...

  3. Jenkins 使用 Build Flow 插件配置工作流任务依赖

    Jenkins 使用 Build Flow 插件配置工作流任务依赖 Jenkins 多任务依赖方式的配置方法目前可以通过MultiJob Project 或者Build Flow 或者Piplelin ...

  4. Gradle Goodness: Run a Build Script With a Different Name

    Normally Gradle looks for a build script file with the name build.gradle in the current directory to ...

  5. 对Jenkinsfile语法说不,开源项目Jenkins Json Build挺你

    对Jenkinsfile语法说不,开源项目Jenkins Json Build挺你 项目背景 我所在的组织项目数量众多,使用的语言和框架也很多,比如Java.ReactNative.C# .NET.A ...

  6. 推荐一个Jenkins 插件 Build Failure Analyzer

    Wiki https://wiki.jenkins-ci.org/display/JENKINS/Build+Failure+Analyzer 作用: 按照预定的build failure 去解析co ...

  7. Get Jenkins job build queue length

    Jenkins API doesn’t provide the job build queue length. Hence, it seems we have to parse the html to ...

  8. Android Gradle 技巧之一: Build Variant 相关

    Build Variant android gradle 插件,允许对最终的包以多个维度进行组合. BuildVariant = ProductFlavor x BuildType 两个维度 最常见的 ...

  9. jenkins插件 build timeout和build timestamp

    build timeout plugin, 允许对job设置timeout时间,当超时时,job将abort. build timestamp pluin,使得job log的每次输出前面都增加当时的 ...

随机推荐

  1. jmeter--基本组件介绍

    一.JMeter 介绍 Apache JMeter是100%纯Java桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...

  2. 程序员的困境 - R中国用户组-炼数成金

    原文:http://www.oschina.net/news/43389/the-plight-of-programmer 在大型公司中不能腐蚀自己的学习能力和时间能力. 最近我为一个内核程序员的职位 ...

  3. 【零基础入门学习Python笔记012】一个打了激素的数组3

    列表的一些经常使用操作符 比較操作符 逻辑操作符 连接操作符 反复操作符 成员关系操作符 +表示两个连接.*表示复制. list中"+"两边的类型必须一致. 演示样例: water ...

  4. Leetcode之Best Time to Buy and Sell Stock

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  5. 内存问题检查利器——Purify

    内存问题检查利器——Purify 一.           引言 我们都知道软件的测试(在以产品为主的软件公司中叫做QA—Quality Assessment)占了整个软件工程的30% -50%,但有 ...

  6. 全双工 串口 stm32

  7. VSX(翻译)Moving Code Blocks Among Code Regions using VS 2010 Extensions

    Moving Code Blocks Among Code Regions using VS 2010 Extensions (翻译)使用VS 2010 扩展性将代码块移至Region区域中 Down ...

  8. Java反射学习总结一(基础篇)

    Class类是Reflection API中核心的类,他位于Java.lang.Class 列出一些常用的方法. - getName() : 获得类的完整名字 - getFields() : 获得类的 ...

  9. Java中使用org.json和json-lib解析JSON

    文章目录  [隐藏] 一.JavaProject中org.json解析JSON 1.JSON的org.son-api下载 1)JSON网址 2)JSON的java解析org.json-api网址 3) ...

  10. 【15.07%】【codeforces 625A】Guest From the Past

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...