Gitea/Jenkins: Setting up Webhooks

From Gcube Wiki
Revision as of 03:34, 11 May 2019 by Manuele.simi (Talk | contribs) (Created page with "= What is a webhook? = This guide details the steps to have Jenkins automatically create a build if it detects changes to a Gitea Git_repository repository. This can be...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

What is a webhook?

This guide details the steps to have Jenkins automatically create a build if it detects changes to a Gitea Git_repository repository. This can be a very useful improvement to continuous integration setup with Jenkins because this method is only telling Jenkins to attempt a new build when a change is detected rather than polling on an interval, which can be a very inefficient.


Gitea Plugin on Jenkins

Installation

In Jenkins: download and install the Gitea plugin in Jenkins.

Go in the page: Manage Jenkins -> Manage Plugins -> Available -> Gitea plugin

And install the plugin.

Configuration

The second step is to configure Jenkins to talk to Gitea.

Build project configuration

In Jenkins: on the project settings page set "Source Code Management" option to "Git", provide URL to your repo (e.g. https://code-repo.d4science.org/gCubeSystem/myNewRepo.git), and in "Poll triggers" section check "Poll SCM" option with no schedule defined. This setup basically tells Jenkins to poll your Gitea repo only when requested via the webhook.


Webhook on the Gitea repository

In Gitea: under repo -> Settings -> Webhooks, add new webhook, set the URL to http://jenkins.d4science.org/gitea-webhook/post?job=<project>, where project is the name of the project in Jenkins to build. Then, clear the secret (leave it blank).

At this point clicking on "Test Delivery" button should produce a successful delivery attempt (green checkmark).

If your test deliveries fail, try to see if you can POST to Jenkins webhook URL (http://jenkins.d4science.org/gitea-webhook/post). E.g. using [[1]] or with curl:

curl -vvv -H "Content-Type: application/json" -H "X-Gitea-Event: push" -X POST http://jenkins.d4science.org/gitea-webhook/post -d "{}"

Correct response should be just plain "Processed" string. If you get something else, post it here.