Jeff Dege
Jeff Dege

Reputation: 11740

How do I check for build status, running Jenkins jobs from a BitBucket pipeline?

We're using BitBucket to host our Git repositories.

We have defined build jobs in a locally-hosted Jenkins server.

We are wondering whether we could use BitBucket pipelines to trigger builds in Jenkins, after pull request approvals, etc.

Triggering jobs in Jenkins, through its REST API is fairly straightforward.

1: curl --request POST --user $username:$api_token --head http://jenkins.mydomain/job/myjob/build

This returns a location response header. By doing a GET on that, we can obtain information about the queued item:

2: curl --user $username:$api_token http://jenkins.mydomain/queue/item/<item#>/api/json 

This returns JSON describing the queued item, indicating whether the item is blocked, and why. If it's not, it includes the URL for the build. With that, we can check the status of the build, itself:

3: curl -–user $username:$api_token http://jenkins.mydomain/job/myjob/<build#>/api/json

This will return yet more json, indicating whether the job is currently building, and if it's completed, whether the build succeeded.

Now BitBucket pipeline steps run in Docker containers, and have to run on Linux. Our Jenkins build jobs run on a number of platforms, not all of which are Linux. But BitBucket shouldn't care. Making the necessary REST API calls can be done in Linux, as I am in the examples above.

But how do we script this?

Do we create a single step that runs a shell script that runs command #1, then repeatedly calls command #2 until the build is started, then repeatedly calls command #3 until the build is done?

Or do we create three steps, one for each? Do BitBucket pipelines provide for looping on steps? Calling a step, waiting for a bit, then calling it again until it succeeds?

Upvotes: 3

Views: 1316

Answers (1)

Holleoman
Holleoman

Reputation: 269

I think you should either use Bitbucket pipeline or Jenkins pipeline. Using both will give you to many options and make the project more complex than it should be.

Upvotes: 1

Related Questions