I was trying to get an SVN, Jenkins and Jira integration going. The aim being to change the status of a ticket/issue to 'Fixed' when it is referred to in an SCM comment. The process being orchestrated by Jenkins. The flow details are
developer puts in the Jira ticket number (MDP-1) on an SVN commit
message.
The build is kicked off in JenkinsJenkins (using the Jira
plugin) can figure out the Jira ticket referred to it in the SVN
commit message. It updates the Jira ticket by putting in a Jira
comment.
So far, this is working great!
Now, I also want to change
the status of the ticket to 'fixed'. I am trying to use the Jenkins
step (Progress jenkins issues by workflow action). I am unable to
access the Jira issue ID/ticket number.
I know, under the hood, the Jira plugin has access to this. Thats why it is able to put in a comment to the Jira ticket in the first case. Question is how/what variable do I use to get access to this Jira ticket# in Jenkins
I actually got this working with another Jenkins plugin (https://wiki.jenkins-ci.org/display/JENKINS/Jira-Ext+Plugin).
This captures the Jira issue_id(s) captured in the SCM commit message and exposes them in an environment variable.
Just what I was looking for!
Related
Is anyone updating confluence page from jenkins job? How? For example we would like to generate some releasenotes on some confluence page or add some data regarding a build. There is plugin which is very old and not working with confluence ver greater than 6.
Should we use confluence cli?
The best way is to use confluence REST. Create a user (e.g. JenkinsBot) in your confluence instance and use that bot's credentials in your script for Jenkins to create a new page inside a specified space or update an existing page.
There is this repo in github for a similar thing which we used to trigger at the end of our jenkins build to release the note we supplied.
This plugin has been working great for about a year until today. This is the workflow we have in JIRA:
At either "QA on dev" and "QA on stage", we trigger a build in our pipeline. Since we set this up a year ago, both statuses would trigger the build but today, only "QA on dev" triggers the build successfully. When we reach "QA on stage", the Jenkins log returns us an error:
https://gist.github.com/patrickng/8c77e8360290c7c0073b1f7adfbae18e
Is it possible that Atlassian changed their API all of a sudden? How can we fix this? Our workflow is now disrupted and I can't seem to think of a workaround.
It seems like Atlassian made a few changes to the payload that's being posted to the webhook. If you do not have a Description set in the specific workflow in JIRA, it will not be included in the POST request. After adding a description to the QA on stage status, the pipeline works again.
There is a separate issue with this plugin now in that comments don't trigger builds, but it looks like the plugin will need an update because JIRA now provides new events and payload for comments created/updated/edited actions.
So currently I am trying to progress my JIRA workflow with the Jira Issue Updater plugin in Jenkins. Attached are my config screenshot and my workflow. However i get this error when I execute a commit triggered build.
JIRA Update Results Recorder
Unable to connect to REST service
java.io.IOException: Server returned HTTP response code: 400 for URL: http://*******:9055/rest/api/2/search?jqlFinished: SUCCESS
This does not have any effect on my Jira workflow.
Thanks for the help in advance and let me know if more information is needed.
Hadi
EDIT: I got a 404 meaning the JQL is incorrect, but when I try to use that in incognito mode I get an empty string, However, if i am locally logged in, I get all issues in xml format.
Workflow
Jenkins Jira Config
I ended up using the JIRA plugin instead.
I used Progress JIRA Issues by workflow action step after build successful phase.
Attaching a screenshot of the configuration.
I am still trying to figure how to pull the issue number from the commit message for this action.
JIRA PLUGIN CONFIG
This is a following question and answer if anybody else gets stuck:
How can I get JIRA issue number from a commit message in Jenkins
I have been looking for a while now for a way to trigger a Jenkins job from the status or a ticket/story in Jira changing status. To give a more detailed example when my team moves a ticket to the 'ready for test' column we would like to be able to trigger a sanity test pack in Jenkins, the ideal situation would then be that we are able to post the results (generated as a html) as a comment on the ticket within Jira. Failing that we would like to be able to publish the results as simply pass/fail.
I have recently been looking at the Jenkins Jira plugin but this does not seem to have the functionality to work both ways, in other words it can post results after a job has run but you cannot trigger the job from a change of status in Jira. Is there any such plugin available or is it something that we will need to create ourselves?
Cheers in advance
So, basicly there are webhooks in jira (https://developer.atlassian.com/jiradev/jira-architecture/webhooks). With it you can configure it to trigger specific url on issue status change. The specific url should be jenkins API, for example for triggering a build you should call an external url like (if you are building with parameters): http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
Some more info https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
I have written a Jenkins plugin that supports JIRA status change trigger: jira-trigger-plugin.
This plugin also injects an environment variable of JIRA_ISSUE_KEY, so you can utilise this information to publish your result back to JIRA e.g. using REST API.
Please follow as mentioned below:
GIT:
You can set the web hooks for git/ bitbucket /stash on commit which inturn should change the state of task in JIRA.
JIRA:
Once you in JIRA. define the workflow for your task.
In this particular workflow you can set a post-function where the web hook should be configured. In this configuration of webhook in events define JQL as below:
status CHANGED FROM "To Do" TO "ready to test".
In the same mention the job that needs to be fired in the URL section.
You can look through webhooks in Jira :
https://support.atlassian.com/jira-cloud-administration/docs/manage-webhooks/
You also need to add the Generic Webhook Trigger plugin to your Jenkins :
https://plugins.jenkins.io/generic-webhook-trigger/
You can find here an example on how to use the Generic Webhook Trigger plugin with Bitbucket Github and Gitlab. https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd
It involved multiple steps
If you are using Git/Stash/BitBucket (which i implemented),
You can simply
configure the commit hooks in your Stash/Bitbucket
Attach events to your JIRA workflow
Jenkins JOB - post build events - configure Notify
Stash plugin Set the Poll SCM
That's it
I'm trying to link Gitlab commit messages to JIRA, that is, if a user commits such as:
PROJECT-ID: Some commit message
Then through the Gitlab UI, it links these commit messages to JIRA.
The only way I can seem to do this at the moment takes control of issue tracking itself from Gitlab and links the "Issue" user interface button in Gitlab back to JIRA.
I'd like to still manage and raise issues in Gitlab, but just have Gitlab link any formatted commit messages to JIRA.
I'm using the community addtion
Unless you set GitLab to use JIRA as your issue tracker, you can't make it link formatted commit messages to JIRA automatically.
You can do this only if you set JIRA to be your issue tracker in GitLab. You can find information about doing that here: http://doc.gitlab.com/ee/integration/jira.html
UPDATE: As Peter said, this functionality is only available using GitLab's Enterprise Edition.
UPDATE: As jalanb stated in the comment below, this functionality is now available in the community edition as well.
There is also the lesstif/gitlab-jira-integration open source solution, that I haven't tried yet myself. It is only a few commits, but I myself considered this approach so it must be sound ;-)
I'm a little confused though. You write you want to use Jira and "I'd like to still manage and raise issues in Gitlab, but just have Gitlab link any formatted commit messages to JIRA." I'm not sure you can get the supertight integration you're looking for. Or maybe I misunderstand.