经Gradle采取Jenkins的build
如今,企业都太多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的更多相关文章
- [原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。
使用Gradle的插件EnIDE build的时候,输出的中文总是乱码.解决办法:在EnIDE的设置里面,设置JVM options GRADLE_OPTS 为:-Dfile.encoding=UTF ...
- Gradle: The New Android Build System
Gradle: The New Android Build System Google selected Gradle as the foundation of the Android SDK bui ...
- Jenkins 使用 Build Flow 插件配置工作流任务依赖
Jenkins 使用 Build Flow 插件配置工作流任务依赖 Jenkins 多任务依赖方式的配置方法目前可以通过MultiJob Project 或者Build Flow 或者Piplelin ...
- 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 ...
- 对Jenkinsfile语法说不,开源项目Jenkins Json Build挺你
对Jenkinsfile语法说不,开源项目Jenkins Json Build挺你 项目背景 我所在的组织项目数量众多,使用的语言和框架也很多,比如Java.ReactNative.C# .NET.A ...
- 推荐一个Jenkins 插件 Build Failure Analyzer
Wiki https://wiki.jenkins-ci.org/display/JENKINS/Build+Failure+Analyzer 作用: 按照预定的build failure 去解析co ...
- 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 ...
- Android Gradle 技巧之一: Build Variant 相关
Build Variant android gradle 插件,允许对最终的包以多个维度进行组合. BuildVariant = ProductFlavor x BuildType 两个维度 最常见的 ...
- jenkins插件 build timeout和build timestamp
build timeout plugin, 允许对job设置timeout时间,当超时时,job将abort. build timestamp pluin,使得job log的每次输出前面都增加当时的 ...
随机推荐
- FZU Problem 2062 Suneast & Yayamao
http://acm.fzu.edu.cn/problem.php?pid=2062 题目大意: 给你一个数n,要求求出用多少个数字可以表示1~n的所有数. 思路: 分解为二进制. 对于一个数n,看它 ...
- jmeter--参数化的四种方法
本文转自:http://www.cnblogs.com/imyalost/p/6229355.html 参数化是自动化测试脚本的一种常用技巧.简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来 ...
- Windows中DLL文件的意义及其作用
Windows中DLL文件的意义及其作用 DLL是Dynamic Link Library的缩写,意为动态链接库.DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和 ...
- js进阶 12-2 彻底弄懂JS的事件冒泡和事件捕获
js进阶 12-2 彻底弄懂JS的事件冒泡和事件捕获 一.总结 一句话总结:他们是描述事件触发时序问题的术语.事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件.相反的,事件 ...
- js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)
js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...
- https://github.com/mvf/svn_wfx
https://github.com/mvf/svn_wfx 2003.net对应的vc是7.0版本.需要更高的. 在哪里可以下载呢 https://www.tjupt.org/没有校外种子 Proj ...
- spring getbean 方法分析(很实用!)
十年阿里,就只剩下这套Java开发体系了 >>> 在最近的项目中,有个地方我们不得不实用getBean的方法,自己从Spring context中获取bean进行数据库操作. 方 ...
- Drupal 7 模块开发 建立模块帮助信息(hook_help)
建立模块请參考 <Drupal 7 模块开发 建立> 假设你要支持中文,文件格式必须保存为 UTF-8.NO BOM ------------------------------ hook ...
- ios开发transform属性
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...
- Git使用经验小结
2012春,开始正式使用SVN,2014年9月加入一起好后,开始使用Git. 有了一些使用经验,也看了下网上关于"Git全胜SVN"的言论. 结合自己的实际情况,简要写几句: 1 ...