Рубрики
Uncategorized

ลด Дубликат код ของ Jenkins ด้วย Jenkins Shared Библиотека

ถ้า เกิด ว่า ใคร ที่ กำลัง ทำ ทำ трубопровод แล้ว มี การ แก้ แก้ แก้ อะไร บ้าง อย่าง ใน этап นั้น ๆ แล้ว ต้อง ตาม ไป แก … Теги с Дженкинсом, CICD.

ถ้า เกิด ว่า ใคร ที่ กำลัง ทำ ทำ трубопровод แล้ว มี การ แก้ แก้ แก้ อะไร อะไร บ้าง อย่าง ใน ใน นั้น ๆ แล้ว ต้อง ตาม ไป แก้ แก้ แบบ นี้ ใน ทุก ๆ โปรเจ็ก มัน ก็ ไม่ จะ ไม่ สนุก ป่ะ ป่ะ ป่ะ ป่ะ

    stage('Build') {
      println("mvn clean install")
    }
    stage('Test') {
      println("mvn clean test")
    }
    stage('Deploy') {
      // Deploy to AWS
    }

สมมติ ว่า ผม มี трубопровод อยู่ 10 трубопровод แล้ว แต่ ล่ะ трубопровод ก็ จะ มี код ตาม ตัวอย่าง ข้าง บน นี้ อยู่ ทุก трубопровод เหมือน กัน

2 เดือน ผ่าน ไป DEV LEAD เดิน มา บอก ว่า เรา ต้อง Развернуть приложение เรา ทั้ง 10 приложение ไป ที่ Google Cloud แทน นะ ทำไง ??

Решение 1.

ง่าย ๆ เลย ก็ เขียน Script Развертывание ใหม่ แล้ว ก็ Код Копирования ไป ไว้ ที่ Трубопровод อื่น ด้วย

    stage('Deploy') {
      // Deploy to AWS
    }

ข้อ เสีย.

  • เกิด ข้อ ผิดพลาด ได้ ได้ ง่าย แม้ ว่า จะ จะ สามารถ สามารถ ง่าย ถึง ว่า จะ สามารถ สามารถ สามารถ Сценарий копирования ข้าม ไป трубопровод อื่น ได้ แต่ ก็ ต้อง มี การ แก้ไข แก้ไข บาง อย่าง ตรง นี้ แหละ ผิดพลาด ได้ ได้ ได้ ได้ ได้ ได้ ได้ ได้
  • ใช้ เวลา ใน การ แก้ แก้ มาก ขึ้น ถ้า จำนวน трубопровод เพิ่ม มาก ขึ้น

Решение 2.

ให้ เรา Сценарий развертывания экспорта ออก มา เป็น libs ซะแล้ว ก็ เรียก ใช้ ใช้ libs ใช้ ตัว แทน แล้ว ทำ ไง ล่ะ?

Jenkins ได้ Предоставить модуль ที่ ชื่อ ว่า Глобальные библиотеки трубопроводов ซึ่ง สามารถ ให้ เรา เรียก ใช้ ใช้ ใช้ ใช้ libs ใน ใน ใน jenkins ได้ นั้น เอง

ก่อน อื่น เรา ก็ ต้อง สร้าง สร้าง สร้าง สร้าง สร้าง สร้าง สร้าง เพื่อ ใช้ เก็บ libs исходный код ซะ ก่อน หลัง จาก สร้าง สร้าง สร้าง เสร็จ แล้ว ก็ ให้ สร้าง файл ตาม นี้

(root)
+- vars
|   +- maven.groovy
|   +- aws.groovy
|   +- gcp.groovy
|   +- deploy.groovy

สำหรับ Файл ที่ Создать ภาย ใต้ Папка vars นั้น จะ Выкрыть เป็น Переменная ทั้งหมด ส่วน ชื่อ файл ก็ คือ ชื่อ Переменная นั้น แหละ สามารถ อ่าน เพิ่มเติม เรื่อง Структура каталогов ได้ ที่ นี่.

ผม ได้ ทำ การ สร้าง libs โดย แยก ชื่อ ไฟล์ ตาม การ ทำ งาน ของ มัน ดัง นี้ นี้

Maven.groovy — สำหรับ อะไร ที่ เกี่ยว กับ maven ผม จะ ใส่ ไว้ ใน นี้ เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น เช่น Установите зависимость, пробег теста Maven и т. Д.

aws.groovy — Сценарий สำหรับ Развертывание ไป ที่ AWS

GCP.Groovy — Сценарий สำหรับ Развертывание ไป ที่ Google Cloud

Deploy.groovy — Сценарий สำหรับ Развертывание (ขอ ข้าม ราย ละเอียด ไป ก่อน นะ เดี่ยว อธิบาย ข้าง ล่าง)

ที่ นี้ ก็ ได้ เวลา มา เริ่ม Export Script มา ไว้ ที่ libs แล้ว

// maven.groovy
def Build() {
    println("mvn clean install")
}

def Test() {
    println("mvn clean test")
}

// aws.groovy
def DeployToECS(app = null) {
    println("deploy ${app} to ecs")
}

// gcp.groovy
def DeployToGKE(app = null) {
    println("deploy ${app} to gke")
}

//deploy.groovy
/**
 * @Param string platform - เลือกว่าจะ deploy platform อะไร (aws, gcp)
 * @Param string app - ชื่อ application
*/
def call(platform = null, app = null) {
    if (platform == "aws") {
        aws.DeployToECS(app)
    } else {
        gcp.DeployToGKE(app)
    }
}

สำหรับ Deploy.groovy จะ เห็น ว่า ผม ประกาศ Функция ชื่อ ว่า Звоните ซึ่ง มัน จะ ทำ หน้าที่ เป็น เหมือน เหมือน Способ конструктора อ่ะ ครับ ส่วน หน้าที่ ของ Метод นี้ คือ รับ params 2 ตัว คือ Платформа ือ กว่า จะ Развертывание платформы อะไร กับ Приложение ื่อ Приложение แล้ว ก็ Проверьте ว่า ถ้า

เสร็จ แล้ว เรา ก็ push Code ตัว นี้ ขึ้น github เป็น อัน ว่า เสร็จ แล้ว แล้ว

หลัง จาก นั้น ก็ เข้า ไป ที่ หน้า หน้า หน้า หน้า หน้า ที่ หน้า หน้า หน้า หน้า หน้า เมนู เมนู เมนู เมนู เมนู jenkins -> Управление jenkins -> настроить систему ไป ที่ เมนู ชื่อ Глобальные библиотеки трубопроводов หรือ ว่า เข้า ผ่าน URL http:///configure ก็ ได้ ครับ

อธิบาย Имя ชื่อ Библиотека Версия по умолчанию ใน ที่ นี้ หมาย ถึง GIT ветвь

ถ้า เกิด ว่า ไม่ อยาก จะ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ให้ เลย ก็ ติ๊ก เครื่อง หมาย ถูก ที่ Опция Загрузите неявно ด้วย.

เสร็จ แล้ว ก็ спасти

ที นี้ เรา ก็ มาลอง สร้าง สร้าง Трубопровод สำหรับ ก็ มาลอง มาลอง สร้าง Тестовая библиотека โดย ที่ ไป ที่ หน้า Jenkins Dashboard ( http://localhost: 8080 ) ของ jenkins จาก นั้น กด Новый элемент -> Трубопровод จาก นั้น Прокрутите вниз ไป ที่ Трубопровод แล้ว Копировать код ข้าง ไป ไว้ ที่ Скрипт

@Library("my-lib") _

node() {
    stage("build") {
        maven.Build()
    }

    stage("test") {
        maven.Test()
    }

    stage("deploy") {
        deploy("aws", "backend")
        deploy("gcp", "frontend")
    }
}

วิธี การ เรียก ใช้ Библиотека ให้ เพิ่ม @Library (ชื่อ lib) _ บรรทัด แรก อีก วิธี ก็ คือ คือ Опция Загрузите неявно ตอน ที่ config Глобальные трубопроводные библиотеки

พอ Создать работу เสร็จ แล้ว ก็ ลอง กด Build ดู ว่า Работа ป่าว?

ถ้า ดู จาก log ข้าง ล่าง จะ เห็น ว่า มัน ทำ ต้องการ ได้ ถูกต้อง ตาม ที่ เรา ต้องการ

สรุป จะ เห็น ว่า ว่า การ การ config dehenkins Общие библиотеки ไม่ ได้ ยาก อะไร อะไร เลย ม่ะ นอก จาก ช่วย ลด เลย เลย ม่ะ จาก จะ ช่วย ลด ลด ใน เพิ่ม ยัง ช่วย ลด เวลา ใน การ เพิ่ม ลบ แก้ไข เวลา เวลา улучшить трубопровод ใน ส่วน อื่น ๆ

ลอง อ่าน Документ เต็ม ๆ ได้ ที่ นี่

Оригинал: «https://dev.to/joewalker/duplicate-code-jenkins-jenkins-shared-library-575c»