在上一篇我們學到整合lighthouse到CI,並在PR區下方直接列出檢查結果的分數
這篇我們會來會來比較一下Github Actionsc和另一個CI/CD工具Jenkins,供大家做選擇的參考,不過總結來說小團隊、需求單純,且job執行時間較少的話,個人會推薦用Github Action,反之則是Jenkins
Jenkins 也是常見的CI/CD工具,一樣也提供了 Linux、Windows、macOS 的虛擬機 (VM)、支援多種插件
在Jenkins這邊也有workflow的概念,稱作pipeline
,透過jenkinsfile
可以定義
pipeline
pipeline分為兩種
撰寫風格declarative pipeline、scripted pipeline
declarative pipeline
易讀性較高
pipeline {
agent {
label 'linux'
}
stages {
stage("foo") {
steps {
script {
// 部分指令(e.g.:shell的變數賦值)只能寫在這
}
}
}
stage("bar") {
steps{
// 指令寫在這
}
}
}
}
scripted pipeline
更複雜、更難維護
node {
// 指令寫在這
}
基本上開箱即用,要做的事只有2件
詳細可以參考Day14 - 撰寫第一個workflow的前置工作
架設較Gihub Actions複雜,且除了Jenkins相關知識以外,也會需要具備AWS、Docker相關知識
詳細可以參考Getting started with the Guided Tour、Creating your first Pipeline、Jenkins with Github
以Github Actions的免費方案舉例,預設有500MB記憶體容量、免費的2000分鐘執行時間,若採用Linux 2核心,
每個月執行時間為2000分鐘,則收費為0
每個月執行時間為4000分鐘,則收為16USD(0.008*2000)
最大同時運行job數為20,超過的話就需要等待
更詳細的話大家可以用Github Actions pricing calculator試算
Jenkins本身是免費的,可是要是用它需要伺服器跟儲存build出來的東西、log的地方,這些都是要收錢的
不過Github Actions也需要額外準備儲存空間,所以跳過S3不算
只假設我們選用跟Github Actions免費方案差不多的AWS EC2載體(t2.micro)來搭配Jenkins的話,
每個月執行時間為2000分鐘,則收費為0.38USD(=(2000÷60)*0.0116)
每個月執行時間為4000分鐘,則收費為0.77USD(=(4000÷60)*0.0116)
至於最大同時運行stage數沒有具體的數據,因為這會和stage的複雜度、執行時間有關,但能肯定的是只要資源不足仍然會塞車