VSTS integration with Jenkins - jenkins

I have created a new Team Project in Visual Team Services with Git as the repository. On this repository I have checked-in a Java project and implemented continuous integration and deployment using Jenkins.
The Jenkins instance is present on an Azure VM created using Azure RM. I have configured polling in the Jenkins build and the build is getting triggered whenever a code change happens to the Java project.
So now our requirement is to use VSTS service hooks instead of polling. So we have created a Jenkins service hook which is configured to call the Jenkins build whenever code gets pushed. Though the Jenkins connectivity is successful, it is not able to call the Jenkins jobs.
It is throwing an error saying "No valid crumb was included in the request (403)". The wizard doesn't allow you to customize the HTTP post request. Is this a product issue or do we need to make any configuration changes to Jenkins instance?
Image 1
Image 2

As answer in Jenkins REST API Create job suggests, the issue is probably caused by CSRF Protection which is enabled by default.
According to this blog article published on 18 Aug 2016 “Jenkins Queue Job” task handles this correctly. Try using that.
The “Jenkins Queue Job” task was initially introduced in July, 2016. The task now has support for parameterized Jenkins jobs and tracks full Jenkins pipelines. It also now supports self-signed server certificates and Jenkins crumb security for protection against cross-site request forgery (CSRF) exploits.

Related

How to trigger a Jenkins build from XRay jira?

I am trying to trigger a build in Jenkins directly from Xray. I have been successfully able to create a trigger in jira and has provided the webhook url and other information needed to run the build. But on triggering the build from any Test Plan, I am getting the following error:
Error publishing web request. Response HTTP status:503
ERROR: The requested URL could not be retrieved.
When i'm hitting the same webhook url in any browser, then the build is getting triggered in jenkins, hence it seems there's no issue with the provided webhook url.
One thing to note is that our Xray is in Jira cloud whereas the Jenkins is running behind a VPN. Can anyone help me in resolving the above issue?
If your Xray on Jira Cloud is trying to acess Jenkins, the Jenkins server needs to have a public URL. If you have it behind the firewall then it's not possible for Xray or any other tool to trigger it directly.
You can call the Jenkins URL from your browser because you are probably with your vpn connected.
The possible workaround would be to use a tool such as ngrok, as mentioned in the docs, to make a tunnel, but beware with the security implications of exposing your Jenkins url to the world.
For reference, Xray cloud provides documentation/examples showcasing how to take advantage of Jira Cloud automation capabilities to trigger jobs, for example in Jenkins.

How integrate pull request Azure Devops Repository With Jenkins

I have a Git repository on the Azure Dev-ops server and use Jenkins for continuous integration build.
I want to know that how a specific branch like master Jenkins can automatically run the build and then notify the user via a shell log that the build was successful or not?
Microsoft seems to have the thing pretty well documented, Create a service hook for Azure DevOps Services and TFS with Jenkins
Set up the Jenkins job, set up the TFS / Azure DrevOps ServiceHook, off to the races.
We have it working fine for Jenkins 2.x and AzureDevOps on-prem. Best to use service accounts with limited necessary permissions on both sides.

integrating gitlab with jenkins using webhooks does not work

I am trying to trigger jenkins pipeline on gitlab push to branch and tag.
Using Jenkins ver. 2.176.2 and gitlab version 10.7.3-ee.
Although I have supposedly set up the webhooks properly, I do not see the jenkins job being triggered.
I have installed the gitlab plugin for jenkins, and configured the gitlab server, including the Personal Access Token for GitLab APIs access generated in gitlab.
I have defined the webhook (currently requesting trigger on all events). (for testing, ssl verification is off).
When testing the webhook in gitlab, I consistently receive HTTP error 500.
In jenkins pipeline job, I have selected "build when change is pushed to gitlab. gitlab webhook..." - this is the URL I used when defining the webhook in gitlab, under "integrations" section.
When pushing to gitlab, I see no event listed under "integrations -> recent deliveries",
I see no log under jenkins logs "com.dabsquared.gitlabjenkins" logger (set to log level "FINEST".
And lastly, the pipeline job is not triggered as I expected.
Any leads will be very helpful.
Adding printscreen of the Jenkins configuration of the gitlab for reference to the comment I added on possibility this is issue with the personal access token
Jenkins gitlab server configuration
Go to Settings of Gitlab Project -> Integrations and type in the Jenkins Job project url in 'URL'. URL should take either form:
http://JENKINS_URL/project/PROJECT_NAME
http://JENKINS_URL/project/FOLDER/PROJECT_NAME
Notice that the url does not contain "job" within it and instead uses "project".
Make sure under Triggers, you have "Push Events" checked as well if you want the job to trigger whenever someone pushes a commit.
Finally, run a build against your Jenkinsfile first before testing the webhook so Jenkins will pick-up the trigger settings for Gitlab.
Please refer the link for more details.

Access GitLab Plug-in's API Token from Jenkins Job

I have instances of Jenkins and GitLab which are successfully connected. Part of setting up the GitLab plug-in involves providing an API token. I believe this is used by the plug-in to get details of the commit which is triggering a job.
I need to run a daily Jenkins job which collects some statistics using the API and then (using R) generates a report. So this is not triggered by an event in GitLab.
To complicate issues a little further, the R code will run inside a container (to avoid hving to install R and all the packages on every Jenkins slave),
It does not appear that the plug-in makes the token available to be used in jobs ... and I can see a sane reason for that.
Is it possible to access the API token from the plug-in?
There is a plugin which supports credential injecting (https://wiki.jenkins.io/display/JENKINS/Credentials+Binding+Plugin) to the builds which could be used later as an environment variable. Gitlab api token could be also selected.

GitLab and Jenkins integration

I've read the differences between Gitlab Community and Enterprise in this page: https://about.gitlab.com/features/
Based on that page I understand the integration with Jenkins is only available in the enterprise version. However, I've seen that using web hooks I can trigger builds in Jenkins when a push happens in Gitlab.
So my question is which is the difference between community and enterprise regarding the integration with jenkins?
On the merge request page, there is a state widget that shows the status of tests for that particular merge request, and on your project home page, there is test status badging. These two UI elements only show up if you enable a 'ci service' on the project. In community you can turn it on with Gitlab CI. In enterprise you can set it up to work with jenkins.
Based on that page I understand the integration with Jenkins is only
available in the enterprise version.
This is no longer true, the Jenkins GitLab Plugin (from a 3rd party) works to hook Jenkins into GitLab as a CI provider.
The wiki page has an example setup with lots of details you'll need to get it working.
This will give per-commit build/test status indicators in GitLab and also hook into the Merge Request system (both in the local repo and when merge requests come from forked repos).
You can also integrate GitLab with Jenkins using the Generic Webhook Trigger Plugin.
An example of integrating with that plugin, to perform static code analysis on merge requests, is available in the Violation Comments to GitLab Plugin wiki page.

Resources