iT邦幫忙

2022 iThome 鐵人賽

DAY 3
2
DevOps

從零開始的 Jenkins 之旅系列 第 3

第三天 Jenkins 之旅: 管理你的 Jenkinsfile

  • 分享至 

  • xImage
  •  

前言

昨天我們成功完成第一條 Pipeline ,但是俗話說 『 天有不測風雲,Server 有旦夕禍福 』搞不好哪天犯水逆使得 Jenkins 內部資料遺失或是整台 Server 直接跟你 Say Goodbye ...... 為了讓傷害最小化,所以讓我們將我們的 Jenkinsfile 用 Git Server 來儲存吧。

Pipeline script from SCM

The term "SCM" stands for Source code Management, a basic but essential part of any project developed in the current IT world. It is a kind of software that the developers usually use to manage their source code. It plays a vital role in the process of software development because it ensures that every member of the team stays on the top of source code changes in an ongoing project.
https://www.javatpoint.com/scm-tools

Github / GitLab / Bitbucket 是常見的 SCM 工具,此次會使用 Github 做為範例。先 Github 上建立 Project,建立 jobs/ithome-day3-sample-job 資料夾,並在其下新增 Jenkinsfile

day3 project structure

為了區別昨天的 pipeline,在此將在 stage 中的 echo 'Hello Ben ~' 改為 echo 'Hello Github ~'

// 範例 Jenkinsfile
pipeline {
    agent any // 不指定執行 agent
    stages { // 開始宣告 Pipeline 流程
        stage('ithome 2022 pipeline') {
            // 行為宣告
            steps {
                echo 'Hello Github ~'
            }
        }
    }
}

在完成上傳 Github 後,這時讓我們回到 Jenkins Server,與昨天相同我們再次建立一個新的 Pipeline 名稱取為 ithome-day3-sample-job

day3 job list

進入 Configure 頁面在最底端進行 Pipeline 設定

  • Definition: Pipeline script from SCM
  • SCM: Git
  • Repository URL: https://github.com/ben4932042/jenkins-ithome.git
  • Branch Specifier (blank for 'any'): main
  • Script Path: jobs/ithome-day3-sample-job/Jenkinsfile

day3 pipeline configure page

!!! 如果 Git Project 為非公開的,需要在 Credentials 中新增對應的權限(之後文章會詳細說明)

在完成設定後會到 Pipeline 介面按下 Build Now,即會開始執行 Job。
day3 pipeline complete in first time

可以看到跟昨天執行結果比較起來,在 Stage ithome 2022 pipeline 前多了一個新的Stage Declarative: Checkout SCM,此 Stage 是 Jenkins 在執行 Pipeline 前,會先去我們指定的 Git Project 上更新我們的 source code。

Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential ithome-github-token
 > git rev-parse --resolve-git-dir /bitnami/jenkins/home/workspace/ithome-day3-sample-job/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/ben4932042/jenkins-ithome.git # timeout=10
Fetching upstream changes from https://github.com/ben4932042/jenkins-ithome.git
 > git --version # timeout=10
 > git --version # 'git version 2.36.1'
using GIT_ASKPASS to set credentials 
 > git fetch --tags --force --progress -- https://github.com/ben4932042/jenkins-ithome.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/main^{commit} # timeout=10
Checking out Revision b8b9a3114ddcdb4c806d07152308c894f62905ba (refs/remotes/origin/main)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f b8b9a3114ddcdb4c806d07152308c894f62905ba # timeout=10
Commit message: "style: change echo message"
First time build. Skipping changelog.

到此我們已經基本完成以 SCM 管理我們的 Jenkins pipeline 設定檔的動作。之後的範例也將會盡可能使用 Pipeline script from SCM 進行設定檔的更新。所有更新的程式碼皆會放在我的 Github 專案上
https://github.com/ben4932042/jenkins-ithome

小結

今天我們成功以 Github 託管我們的 Jenkinsfile,明天開始會正式進入到 Jenkinsfile 的語法介紹。

Reference

What are SCM tools?


上一篇
第二天 Jenkins 之旅: Welcome to Jenkins!
下一篇
第四天 Jenkins 之旅:Jenkinsfile 語法介紹(1)
系列文
從零開始的 Jenkins 之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
sam871026
iT邦新手 3 級 ‧ 2024-03-24 11:48:15

想要跟著實作的人注意是 Day-03

jobs/ithome-day03-sample-job/Jenkinsfile

我要留言

立即登入留言