簡體   English   中英

在Java程序中訪問Jenkins環境變量

[英]Access Jenkins Environment Variables in Java Program

有沒有辦法在java程序中訪問jenkins環境變量(BUILD_NUMBER等)而不對jenkins作業進行任何更改。

我想是否有任何監聽器(Jenkins或Maven)我可以用來獲取jenkins環境變量,然后我可以將它們設置為系統屬性並訪問我的java程序中的任何位置。

我遇到了EnvInject插件,但這需要更改工作。 我正在尋找一個解決方案,我可以編程訪問!

參考: https//wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables

從文檔中可以清楚地看出,您可以將這些值作為此選項的VM選項傳遞:

clean install -DBUILD_NUMBER=${BUILD_NUMBER} -DBUILD_ID=${BUILD_ID} ... etc.

(並通過System.getProperty(...)在java程序中訪問它們)。

一個“hacky”但有效,你可以創建一個groovy腳本,從構建中獲取環境變量,然后使用jenkins-cli觸發它。

例如,用於從構建中獲取環境變量的groovy腳本:

import hudson.model.*
import jenkins.model.*

def jenkins = Jenkins.getInstance()
def jobName = this.args[0]
def buildNumber = Integer.valueOf(this.args[1])
def job = jenkins.getItem(jobName)
def bld = job.getBuildByNumber(buildNumber)
bld.environment.each{
  println it
}

使用jenkins-cli觸發它使用以下命令:

java -jar pathToCli/jenkins-cli.jar -s http://myJenkins:8080/ groovy getBuildEnvVars.groovy jobName bldNum

然后從java代碼觸發它,你可以做類似的事情:

public static void main(String[] args) {
        Process proc = null;
        String jenkinsCliPath = <path to jenkins cli jar>;
        String jenkinsUrl = <jenkins url>;
        String groovyScriptPath =<pathToGroovyScript>;
        String jobName = <jobName> ;
        int buildNumber = <build number>;

        try {
            String cliCmd = "java -jar "+ jenkinsCliPath +"  -s "
                    + jenkinsUrl +" groovy " + groovyScriptPath + " " + jobName + " "
                    + buildNumber;
            proc = Runtime.getRuntime().exec(cliCmd);
            proc.waitFor();
            InputStream is = proc.getInputStream();
            byte b[] = new byte[is.available()];
            is.read(b, 0, b.length);
            System.out.println(new String(b));

        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

注意:運行腳本的用戶必須登錄。因此,使用cli執行登錄,或者將用戶的公鑰添加到Jenkins中的相關用戶。

在Jenkins中,如果要設置環境變量並在java代碼中訪問它,可以使用以下步驟:

  1. 在Manage Jenkins頁面的Configure system菜單中,在Jenkins中創建一個環境變量。 例如,您添加了一個名為“Browser”的環境變量。
  2. 您可以使用下面的代碼在java程序中訪問相同的環境變量。

     System.out.println(System.getenv("Browser")); 

已經使用一組環境變量預定義了jenkins作業。 這些帶有名稱和描述的變量列表將在以下URL中提供

http://你的Jenkin URL / env-vars .html(例如: http://cptest-Jenkins/env-vars.html

可以使用下面的代碼輕松訪問這些環境變量列表。

System.out.println("Build Number:"+System.getenv("BUILD_NUMBER")); //BUILD_NUMBER - name of the environment variable

這將打印當前的內部版本號。 同樣您也可以訪問其他變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM