iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
自我挑戰組

DevOps的下克上之旅( ° ∀ ° )ノ゙系列 第 26

Day 26 : Github Actions

什麼是Github Actions呢?這是Github平台
在2019年上架的CI功能,使用Github Actions可以讓你將以往給Jenkins的工作交給Github來完成,並除了原先Github的版本控管外整合Build、Test、Deploy。這個過程我們稱作是github workflows

https://ithelp.ithome.com.tw/upload/images/20210928/20119044MYP6oqhxNB.png

Github Actions相關的中文文件

影片介紹:

Workflows

什麼是github workflows呢? 打一個上方影片的比方,假如我們現在正在寫一個JAVA套件,有多個contributors給予貢獻,也有多個Users。當user發現bug後會發布issue,此時就要思考流程是:

  • 這個issue是大還是小?重要不重要
  • 這個bug可以再現嗎?
  • 要給哪一個contributor去修bug?

當一個contributor修好了bug,並且pull requests後,要思考流程是:

  • 檢查pull requests
  • bug有修好嗎
  • merge to master branch

發布新的版本時要做的流程:

  • 準備release note
  • 更新version

這幾個過程merge code -> Test -> Build -> Deployment可以稱做一個workflows,當有越來越多的contributors、issues、pull requests,整個workflows就會越混亂,因此,自動化is the best。

什麼驅動workflows呢?我們稱作Github event,例如: Pull Requests created、Issue create、Contributor join、Pull requests merged...等。

所以基本上就是監控event去驅動workflows該做什麼事。
https://ithelp.ithome.com.tw/upload/images/20210928/20119044vYMtjFhPnh.png

建立Github Actions

點擊 Acitons,裡面會包含很多根據專案推薦的Workflows流程(左下圖),還有workflow範例(右圖)如新加入的contributor say Greetings之類的。
https://ithelp.ithome.com.tw/upload/images/20210928/20119044xO6uYlxLE5.png

但是以上先都不管,我們先來簡單的看一下簡單的範例,在你的專案下建立.github/workflows/github-actions-demo.yml

name: GitHub Actions Demo
on: 
  push:
    branches:
      - "master"
  pull_request:
    branches: ["master"]

jobs:
  Explore-GitHub-Actions:
    runs-on: ubuntu-latest
    steps:
      - run: echo "? The job was automatically triggered by a ${{ github.event_name }} event."
      - run: echo "? This job is now running on a ${{ runner.os }} server hosted by GitHub!"
      - run: echo "? The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
      - name: Check out repository code
        uses: actions/checkout@v2
        with:
            fetch-depth: 0
      - run: echo "? The ${{ github.repository }} repository has been cloned to the runner."
      - run: echo "?️ The workflow is now ready to test your code on the runner."
      - name: List files in the repository
        run: |
          ls ${{ github.workspace }}
      - run: echo "? This job's status is ${{ job.status }}."

簡單講解一下,可以參考文件

  • name: 是workflows的名稱
  • on : 是驅動workflow的事件,詳細參考,你可以指定哪個branch才會驅動。
  • jobs : 是一連串的steps組成,你可以擁有1~多個job。
  • steps : 可以運行命令(run)、執行actions(uses)、設定參數(with)
  • uses : 使用github上其他人寫好可reuse的action

舉個例子,上面的actions/checkout@v2,你可以在一個名為actions/checkout的repository內找到。進入該repository,打開action.yml檔,可以看到具體內容,@後面是版本。

https://ithelp.ithome.com.tw/upload/images/20210928/20119044vqXy9avonY.png

  • run : 就是執行command
  • with : 設定use actions的變數

Push上Github

接著我們把它push上github,點擊repository的actions。可以看到運行的workflow
https://ithelp.ithome.com.tw/upload/images/20210928/20119044M6ix2uyKXF.png

點擊,打開後你就可以看到CI的輸出。
此外,你在README加上

![example workflow](https://github.com/<OWNER>/<REPOSITORY>/actions/workflows/<WORKFLOW_FILE>/badge.svg)

填入使用者(OWNER)、專案名稱(PEPOSITORY)、你的worflow檔案名稱(WORKFLOW_FILE),即可出現一個驗證符號:
https://ithelp.ithome.com.tw/upload/images/20210929/20119044pHbImWVaQF.png

我們明天來實作將Express自動push上Azure雲端並執行的CI整合。


上一篇
Day 25: ELK持續監控與Dockerize
下一篇
Day 27 : Github Actions實作自動化推上Azure
系列文
DevOps的下克上之旅( ° ∀ ° )ノ゙30

尚未有邦友留言

立即登入留言