user3636734
user3636734

Reputation: 11

Want to know which Jenkins job is executing now, in java

I have 3 Jenkins job. Below are the name of those Jenkins job:

  1. test_existing_api
  2. test_others_api
  3. test_new_api

I have a config file in java project which have 3 different configuration. I want to pick the configuration depend upon Jenkins job. So first I want to check which Jenkins job is executing and then I will take configuration according to that job. That configuration will further require in java code.

Please help me to understand how can I check which Jenkins job is executing now in Java.

Upvotes: 1

Views: 2274

Answers (3)

eis
eis

Reputation: 53462

Assuming you want to get this data within the job that is executing, see manual entry:

Jenkins Set Environment Variables

When a Jenkins job executes, it sets some environment variables that you may use in your shell script, batch command, Ant script or Maven POM 1. The following table contains a list of all of these environment variables.

Environment Variable    Description
BUILD_NUMBER    The current build number, such as "153"
BUILD_ID    The current build id, such as "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
BUILD_URL   The URL where the results of this build can be found (e.g. http://buildserver/jenkins/job/MyJobName/666/)
NODE_NAME   The name of the node the current build is running on. Equals 'master' for master node.
JOB_NAME    Name of the project of this build. This is the name you gave your job when you first set it up. It's the third column of the Jenkins Dashboard main page.
BUILD_TAG   String of jenkins-${JOB_NAME}-${BUILD_NUMBER}. Convenient to put into a resource file, a jar file, etc for easier identification.
JENKINS_URL     Set to the URL of the Jenkins master that's running the build. This value is used by Jenkins CLI for example
EXECUTOR_NUMBER     The unique number that identifies the current executor (among executors of the same machine) that's carrying out this build. This is the number you see in the "build executor status", except that the number starts from 0, not 1.
JAVA_HOME   If your job is configured to use a specific JDK, this variable is set to the JAVA_HOME of the specified JDK. When this variable is set, PATH is also updated to have $JAVA_HOME/bin.
WORKSPACE   The absolute path of the workspace.
SVN_REVISION    For Subversion-based projects, this variable contains the revision number of the module. If you have more than one module specified, this won't be set.
CVS_BRANCH  For CVS-based projects, this variable contains the branch of the module. If CVS is configured to check out the trunk, this environment variable will not be set.
GIT_COMMIT  For Git-based projects, this variable contains the Git hash of the commit checked out for the build (like ce9a3c1404e8c91be604088670e93434c4253f03) (all the GIT_* variables require git plugin)    
GIT_URL     For Git-based projects, this variable contains the Git url (like [email protected]:user/repo.git or https://github.com/user/repo.git)\\
GIT_BRANCH  For Git-based projects, this variable contains the Git branch that was checked out for the build (normally origin/master) 

Sorry about bad formatting (SO doesn't support nice tables), but you should be able to retrieve these variables with System.getEnv(). This means you don't need to add anything to your Jenkins configuration, just read from java what it already sets.

Upvotes: 2

Morfic
Morfic

Reputation: 15508

You could pass a system property from the job to the JVM when launching the project:

...whatever... -Dconfig=test_existing_api

and retrieve it in your classes with:

System.getProperty("config")

Upvotes: 0

Not a bug
Not a bug

Reputation: 4314

http://<Jenkins_server>/job/<Job_name>/lastBuild/api/xml?depth=1

Above url will give you the xml structured data, in which you can check <building>false</building> tag value from your java code by parsing the xml.

If value is true than jenkins job is running at the time.

To check which of given three job is running, you can check the status of each job by parsing xml in java code for each job and get configuration file of running job.

P.S. : Replace the place holders in url with applicable data. <Jenkins_server> and <Job_name>

Upvotes: 1

Related Questions