วิธีการสั่ง Gitlab webhook trigger Jenkins pipeline build now

พอดีช่วงนี้มีงานทำ CI/CD ด้วย Jenkins + Gitlab และอยากที่จะทำ flow ให้เต็มระบบ

Push code to Gitlab => Gitlab Webhook =>triggered Jenkins build => run build

สิ่งที่ต้องทำเพิ่มที่ jenkins

  1. สร้าง user token เพิ่ม (Generate API Token)
    1.1 เลือก User เมนู (ฝั่งขวามือบน)
    1.2 เลือก Configure
    1.3 API Token กำหนดชื่อ “WEBHOOK_TOKEN” กด Genarate เก็บ token นี้ไว้เพราะจะไม่สามารถแก้ไขได้ ต้อง revoke แล้ว สร้างใหม่เท่านั้น
Image for post
Image for post
11ac4a1d0c0ff6956c38f2a22e39375325

2. เพิ่ม Authenticate Token ของ Project (Add Authenticity Token)
2.1 แก้ไข Configure ของ Project

2.2 แก้ไขเลือก “Trigger builds remotely (e.g., from scripts)” จากนั้น random string มา 1 ชุด ใส่ค่าไปในช่อง (random string online) จากนั้น Save จบงานที่ต้องทำเพิ่มที่ jenkins

Vegj66W5m9BqRuYds5vbboznSL9czV43

สิ่งที่ต้องทำเพิ่มที่ Gitlab

  1. เชื่อม gitlab webhook เข้ากับ jenkins
    1.1 เข้าไปที่ repo ของ Project เลือก Setting => Webhook
    1.2 URL ใส่
    format: https://<JENKINS_USER_ID>:<JENKINS_USER_TOKEN>@mydomainname.com/job/<JOB_NAME>/build?token=<AUTHENTICITY_TOKEN>
    ตัวอย่าง: https://admin:11ac4a1d0c0ff6956c38f2a22e39375325@mydomainname.com/job/ecc-pipeline-test/build?token=Vegj66W5m9BqRuYds5vbboznSL9czV43
    1.3 Push events ให้เลือก branch ที่ต้องการ push trigger ตัวอย่างเลือก “master” กดปุ่ม “Add webhook”

2. ทดสอบ hook

3. กลับไปที่ jenkins จะมีการ run build pipeline เกิดขึ้น

กรณี web hook สั่ง jenkins build แบบส่ง parameters

ต้องแก้ไข url ของ jenkins ตามข้างล่างนี้

format: format: https://<JENKINS_USER_ID>:<JENKINS_USER_TOKEN>@mydomainname.com/job/<JOB_NAME>/buildWithParameters?token=<AUTHENTICITY_TOKEN>&param1=value1&param2=value2

นอกนั้นอื่น ๆ ให้ทำเหมือนเดิมครับ

Written by

Senior Developer @Telecom, Full Stack Developer [Subscribe Me @poolsawat.com]

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store