Integrating Local Jenkins Setup with Azure Dev OPS - azure

I wanted to know if there is any good documentation available for the below scenario
I have a jenkins master running on my laptop
This jenkins master have several jobs which executes locally
I now want to call these jobs from Azure Dev Ops. Meaning a Devops job from Azure cloud should trigger a build on my local Jenkins setup
I saw several videos but I am finding it difficult to get around it.
Is there any easier way by just making use of a plugin to connect and executing the job?
I did saw some Udemy videos but then those involve a lot of setting to be done and does expose your system to outside vulnarabilities as firewalls and router settings are played on with.
Any help would be appreciated. Thanks!

You can enable Trigger builds remotely for your jenkins jobs, and then use a script task in the azure devops pipeline to trigger your jenkins pipeline. See below steps:
1, Firstly you need to create a self-hosted agent on your local jenkins server machine. Since the jenkins server is running locally, you need a local agent to communicate with your local jenkins server. Follow the steps here to create your local hosted agent.
2, Enable Trigger builds remotely on Jenkins
Go the the Build Triggers Tab of your jenkins pipeline configure page--> Then check Trigger builds remotely--> Specify a Token (will be used in the URL)
3, Define a secret variable to host your jenkins password in azure devops pipeline:
4, Add a bash task in your azure devops pipeline to run the below curl command:
#token must be the same with the token you entered in above step
curl -u $(username):$(password) http://localhost:8080/job/myproject/build?token=anytoken
See this thread trigger jenkins job via curl command remotely for more information.
5, Targeting your self-hosted agent pool to run your azure devops pipeline on self-hosted agent.
Then your local jenkin jobs will be triggered by the azure devops jobs.
Update:
You can also use Jenkins queue job task to queue a jenkin job in azure devops pipeline. See below steps:
1, Create a API Token in your Jenkin server.
Go your jenkin account configure page. To create a API token.
2, Add Jenkins queue job task in azure devops pipeline.
3, Click the Manage link to create a jenkins service connection--> In the newly opened page-->Create Service connection-->Select Jenkins--> Next
Enter the required information as below screenshot. Note: username is your user account for jenkin server, the Password is the API Token You generated in above step.
4, Configure your Jenkin queue job task as below

Related

Execute script on Azure Windows VM via Azure pipeline

I am using third party software for master data management. This software does not have API's to perform deployment across environment. It has command line utility which needs to be installed on machine and call the commands to perform the installation. I am looking to automate this solution using Azure Devops pipeline. What I am trying to do is as below
Create windows VM in Azure and install command line utility on it.
Store script in some folder in the VM.
Use Azure pipeline to call this script which is stored in my VM.
I don't even know if it possible to do such things. I tried looking on internet on how to call script stored in VM via Azure pipeline but didn't find any useful link.
If any one has done such activity or have an idea how can it be achieved please help.
this can help you
Running the command line in a Azure Virtual Machine is fully supported in Azure Pipelines. You could install a self-hosted agent in the VM.
Before that, I recommend that you could create a new agent pool for the self-hosted agents. Please go to the organization settings -> Agent pools-> click the "Add pool" -> choose the "self-hosted" type.
Then, you could refer to this document to complete the installation. When you configure the agent, you could choose the new created agent pool.
After installation, you could create a pipeline, choose the new created agent pool and add a Command Line task to run the command line. Of course, if you have many agents in the same agent pool, you could also set the demands in the pipeline to specify one agent.
reference : Is it possible to run a command line in a Azure Virtual Machine from Azure DevOps pipeline?

How to create Azure pipeline CICD for docker container to linux on premises server?

I have a containerized app's image that builds on master push and ends up in azure container registry. I need to setup the next step where this image ends up on my linux on prem server.
I have established the connection with the server using a deployment group agent, which claims is healthy.
I have created a pipeline which takes the built image artifact as input but I am completely failing to grasp and create the step in which the artifact is being pulled on / pushed to the server (and ideally run too).
I am looking at the tasks in the pipelines > task section in Azure Devops but I cannot find a place to add some specific steps neither I am very sure what steps to add.
I would very much appreciate any tip on how to deploy a container from acr to on premises linux server using azure devops pipelines. Thank you in advance.
You can check this link which shows how to create Azure Pipeline CI/CD for docker container ,make sure all these steps are followed:
https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops

Provisioning an Azure VM agent using a Jenkins Multipipeline

I have a Jenkins instance running on an AWS EC2. Rather than use the built-in nodes(i have disabled them), I need to provision an Azure VM agent, perform builds and execute tests on that agent. Using the https://plugins.jenkins.io/azure-vm-agents/ via a freestyle job I was able to successfully provision an Azure VM agent on demand. However I an unable to achieve the same via a Multibranch pipeline ( there is a seperate repo for Jenkins File and one for the code repo) (plugin https://plugins.jenkins.io/remote-file/). It does not seem to kick of the Azure VM agent and fails waiting for an agent. If i enable the built-in node, it works. So it appears that via the pipeline the azure-vm-agents is not triggering for provisioning. . There appears as if a link For how to select agent in pipeline, refer to this doc. within the https://plugins.jenkins.io/azure-vm-agents/ page does not lead anywhere. Any thoughts much appreciated.

Integrate Azure DevOps to Jenkins

I have set up Jenkins in Azure VM. Now, How can I integrate Azure DevOps Service hook to Jenkins. I want to trigger Jenkins Job when anyone pushes the code in the Azure DevOps repository. I am getting below error "Jenkins query failed with exception 'A connection attempt failed because the connected party did not respond after a period of time Or Established connection failed because connected host has failed to respond'" while setup service hook. I have gone through the "https://learn.microsoft.com/en-us/azure/devops/service-hooks/services/jenkins?view=azure-devops" link but it's not working.
Integrate Azure DevOps to Jenkins
According to the error messages, it shows that Azure devops did not successfully connect Jenkins.
To resolve this issue, just like 4c74356b41 commented, you should make sure you could access the Jenkins from the public internet. You can check following document for some more details:
How to Host Jenkins on Azure
Then you can add Jenkins queue job task in the pipeline, and verify the connection via this task:
Hope this helps.

Azure DevOps Release Pipeline: How to copy to my VM

I created a simple .net core console app. This app's repository is a Azure DevOps one. I have also created a ubuntu vm which i can successfully connect to, to receive the deploy.
I have managed to deploy my app from my local computer, by cloning, building and pushing it (via scp command).
Now I would like to do this using azure devops pipeline?
I managed to build the app, but now i can't seem to find help regarding how to execute the scp (or a alternative) command...
Edit1:
Ok, this is turning out to be an order of magnitude harder than I expected. I'm giving up for now. I've been trying to figure this out for almost 2 work-days. I can't believe that a task that requires 4-6 commands on a script on my local machine should require this much effort to do on a devops environment...
You can configure a deploy agent to your VM and use a release management to copy and configure your applications:
Deploy an agent on Linux
Define your multi-stage continuous deployment (CD) pipeline
Have a look at the Copy files over SSH pipeline task which supports SCP.

Resources