Header Ads Widget

Ticker

6/recent/ticker-posts

Các Jobs trong Jenkins duplicate khi build "Extending with Shared Libraries" và cách khắc phục

Keywords: Build Jobs duplicate when config "Extending with Shared Libraries" on Jenkins. 

Hôm trước mình đã hướng dẫn cho các bạn cách để xây dựng hệ thống "Extending with Shared Libraries" cho Jenkins để tăng khả năng mở rộng cũng như chỉnh config dễ hơn cho việc quản lý tập trung Jenkinsfile, nhưng vấn đề sẻ gặp một lỗi khá là nghiêm trong đó là khi bạn thực hiện Update cho Lib thì các Jobs trên Branch: staging và develop sẻ cùng build ? vậy nguyên nhân nằm đâu ? tại sao lại như vậy ?

Ở đây mình sẻ giải thích, tại sao khi các bạn update thằng Lib thì tất cả các Jobs lại build từ staging cho đến develop mặc dù các bạn rõ ràng chỉ update code lên branch develop nhưng tại sao thằng staging nó cũng build, nguyên nhân là vì nó đang update thay đổi của Lib lại, và khi update thay đổi đó, nó cũng sẻ thực hiện quá trình build lại toàn bộ Jobs của chúng ta, nó chỉ thực hiện update lần đầu từ khi chúng ta update Lib, các lần sau khi nào chúng ta update trên Lib nữa thì mới chạy duplicate như vậy 1 lần nữa, mặc dù là như vậy nhưng việc làm này khiến chúng ta cảm thấy không được thoải mái vì việc build 1 cách vô lý trong khi chúng ta không yêu cầu nó build mà nó vẫn chạy, vậy làm cách nào để tắt được nó đây? rất đơn giản, nói đơn giản cho nó hào nhoáng vậy thôi chứ mình phải bỏ ra 2 ngày mới tìm được vấn đề và cách khắc phục đấy huhu, khổ lắm cơ

Ok quay lại chủ đề chính, các bạn truy cập đến chỗ config "Shared Libraries" của hôm bữa chúng ta config nhé, bạn nào chưa biết Shared Libraries config thế nào thì có thể xem lại bài viết củ tại đây nhé

URL: Hướng dẫn xây dựng "Shared Libraries" để có thể update Jenkinsfile, giúp mở rộng dễ hơn ~ ITBlogNote | Công Nghệ Và Giải Trí

Ngay hình trên, chúng ta sẻ click bỏ đi dấu check tại ô "Include @Library changes in job recent changes", như vậy là chưa xong đâu nhé, tại phía Jenkinsfile chúng ta cần thêm một config nữa mới hoàn thành, Jenkinsfile của Repo Project ta cần thêm lệnh sau

@Library(value='jenkinsfile-lib', changelog=false) _
Đây là Jenkinsfile của mình
// Author: Dang Thanh Phat
// Email: [email protected]
// Blog: itblognote.com
// Description: Code pipeline get shared libraries to build for all service
// ============================START=======================================
@Library(value='jenkinsfile-lib', changelog=false) _
properties([pipelineTriggers([githubPush()])])
def sendTo = '[email protected]'
node('master-local') {
  try {
    def primaryNameSpace = 'demo'
    def gitRepoName = 'project-example'
    def enableDockerEnv = 'false'
    // notifyBuild('STARTED', "${sendTo}")
    jenkinsAll("${primaryNameSpace}", "${gitRepoName}", "${enableDockerEnv}")
  } catch (e) {
    // Only failure send notifications
    currentBuild.result = "FAILED"
    notifyBuild("${currentBuild.result}", "${sendTo}")
    throw e
  } finally {
    // Success or failure, always send notifications
    println("Build status: ${currentBuild.result}")
    // notifyBuild(currentBuild.result)
  }
}
Như các bạn đã thấy ở trên khi khai báo Lib mình đã thêm 1 đoạn nữa đó chính là changelog=false để cho nó không update Lib khi push code lên branch, thằng này mới là yếu tố chính trong chuyện này, như vậy là xong rồi đó, chỉ cần 2 bước này thôi là các bạn đã fix thành công lỗi duplicate khi update lib trong Jenkins rồi, chúc các bạn thành công nhé.

Post a Comment

0 Comments