22. December 2019

Jenkins Generic Webhook Plugin failed with: Did not find any jobs with GenericTrigger configured

Generic Webhook Plugins allows invoking build of Jenkins job.

First of all, you need to set the token in job configuration.

Go to Build Triggers, check Generic Webhook Triggers.

Jenkins Build Trigger

Set Token e.g. to WEBHOOK-TOKEN.

Invoke curl:

curl http://localhost:8080/generic-webhook-trigger/invoke?token=WEBHOOK-TOKEN

It might happen that job build fails with the message:

{"jobs":null,
"message":"Did not find any jobs with GenericTrigger configured! 
If you are using a token, you need to pass it like ...trigger/invoke?token=TOKENHERE. 
If you are not using a token, you need to authenticate like 
http://user:passsword@jenkins/generic-webhook... "}

To fix the problem make sure that Trigger builds remotely is not checked in job configuration. The token set in this field has priority.

Once the duplicate token is removed the build should be possible to start.

19. December 2019

Install Jenkins by Helm to Kubernetes on Azure

Here you can find instructions for installing Jenkins on Kubernetes running on Microsoft Azure. The main advantage of deployment Jenkins on Kubernetes is the automatic scaling of agents.

How to do it?

First of all, you’ll need an account at portal.azure.com. Microsoft provides credit for new registration. If you have MSDN subscription you’ll get some credit which is available at portal my.visualstudio.com.

Software prerequisites:

  • Install Docker Desktop (not Desktop Enterprise). The installation also contains kubectl command from Kubernetes.
  • Install Helm.
  • Install Azure CLI.

Create Kubernetes infrastructure.

az aks create -n kube-jenkins --resource-group kube-jenkins-group \
  --node-count 1 --node-vm-size Standard_B2ms

Retrieve credentials for working with Kubernetes cluster on Azure.

az aks get-credentials -g kube-jenkins-group -n kube-jenkins

Switch to newly created Kubernetes.

kubectl config use-context kube-jenkins

Install Jenkins on Kubernetes by Helm.

helm install jenkins stable/jenkins

Retrieve password for admin user to login to Kubernetes.

printf $(kubectl get secret --namespace default jenkins \
  -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo

Create a tunnel from your computer to Kubernetes cluster. It will allow you to access port 8080 on localhost and the request will be forwarded to Jenkins on Kubernetes. With this command you do not need to install Ingress controller, so the setup is a little bit more secure than exposing Jenkins to internet.

export POD_NAME=$(kubectl get pods --namespace default \
  -l "app.kubernetes.io/component=jenkins-master" \
  -l "app.kubernetes.io/instance=jenkins" -o jsonpath="{.items[0].metadata.name}")
  echo http://127.0.0.1:8080
  kubectl --namespace default port-forward $POD_NAME 8080:8080

Go to web browser and type URL http://localhost:8080

Login is admin and password was retrieved by the command above.

If you’d like to remove Jenkins installation just type:

helm uninstall jenkins