When creating a large Jenkins setup, it is often a good idea to consider have a team governing, documenting, and managing the tools a little. These teams almost always require a clear support channel, otherwise everything becomes tribal knowledge, and that is not going to scale well.
Signature of a large Jenkins setup means it has
- Multiple workers with varying operating systems
- Multiple integrations to systems for static analysis, artifact repositories and code-review platform triggers such as pull-requests and patch sets
- Support for an advanced authorization role strategy or single sign on from other platforms
- Support for multiple build-systems such as MSBuild, Maven, Gradle, Ant, Make and so forth
When a large number of teams with a similarly large number of software development stacks starts to use it. Then it becomes relevant with being able to support the systems by providing a clear and obvious support-channel.
A common channel for issue-management is JIRA, which ironically started as an ITSM-platform. And another common place to store documentation is whatever source-control platform you have available, such as GitHub Pages, Wikimedia or Confluence.
So i would like to show how to include custom-integration in the Jenkins header directly into those tools.
Starting point
- A clean Jenkins
- A clean JIRA with project administrator access
- The Jenkins simple theme plugin, i have configured the material-styling in my own Jenkins below
- This custom Jenkins JIRA Issue Collector Plugin, you’ll have to build it yourself to get an
.hpi
-file to upload
Configure JIRA Issue Collector
- In JIRA,
create a target project
- Go to
settings
for the project - Go to
Issue Collectors
- Click
+ Add issue collector
- Configure it as you may wish, make sure your select custom trigger-style
- Submit the collector
- Extract the link in the markup JIRA wants you to embed.
The collector-link will look something like this
https://YOUR-PROJECT.atlassian.net/s/aef99a9d9e96520927s6987-T/-p6br4e/b/5/a44af77267a987a660377e5c46e0fb64/_/download/batch/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector.js?locale=en-US&collectorId=909eeccc
Configure Jenkins to embed collector and run some JavaScript
- Go to
Manage Jenkins
- Go to
System Configuration
- Fill in Issue Collector URL: with the collector-link from the previous step.
- Fill in the
Theme Javascript
part with an accessable location where you save this JavaScript. SonaType Nexus rawFiles-store works nicely for this purpose. - Get the following html
- Put it into the system message
- preview html should now put two buttons in the header
- If you want you can include custom styling to the buttons in the simple theme css box. I used the following to achieve the looks below.
And voila! You have opened a support channel directly from your Jenkins header into your documentation and added support for adding JIRA issues directly into your JIRA project! Clicking the Report an issue!
will open a JIRA Modal and allow your users to fill in a support issue as their own JIRA users.
Issue collectors can be customized to pre-populate fields quite extensively, read more on Atlassians own documentation.
No Comments
You can leave the first : )