Gradleで取ったJenkinsのbuild
2612 ワード
現在、多くの会社がJenkinsを通じてapkを管理しており、コードの提出後にjenkinsでbuildを生成しています.
jenkinsのコミットバージョン番号を取得できます
Jenkinsはjobをコンパイルする時、内蔵の変数BUILDがありますNUMBER
groovyには非常に有用な関数があります.
すべての環境変数が得られます.
もし私たちのbuild.gradleはwindows上で実行されます
Map map = System.getenv()このmapのkeyをすべて印刷しました.
ここにPathがあります.システムのPathを取得できます.これにより、実行環境が完全かどうかを判断できます.
Gitのいくつかのコマンドを実行するには、PathにGitが必要です.
私たちはこのように判断することができます.
もしそうならgradleはlinuxで実行され、この環境がjenkinsを構成しているかどうかを見て、このように判断することができます.
Linuxの環境変数を印刷するのはこの形式です.
次にjenkins環境があれば、コンストラクションバージョン番号を取得できます.
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
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; }
もしそうなら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 }
}