GitHub Actions入門


一、一些概念

持續集成(Continuous integration)

頻繁地向一個共享倉庫提交少量代碼變更的軟件開發實踐。 使用 GitHub Actions,可以創建自定義的 CI 工作流,以自動構建並測試你的代碼。 從你的倉庫中,你可以查看代碼變更的狀態和工作流中每個操作的詳細日志。 CI 通過提供代碼變更的及時反饋來更快地檢測並解決 bugs,從而節省開發人員的時間。

持續部署(Continuous deployment)

持續部署建立在持續集成的基礎上。 當提交新代碼和通過你的 CI 測試時,代碼將自動部署到生產環境中。 使用 GitHub Actions,可以創建自定義的 CD 工作流,以便從你的倉庫自動部署代碼到任何雲、自托管服務或平台。 CD 通過自動化部署過程節省開發人員的時間,並更快地向你的客戶部署經過測試的、穩定的代碼變更。

GitHub Actions 的一些術語

(1)workflow (工作流程):持續集成一次運行的過程,就是一個 workflow。

(2)job (任務):一個 workflow 由一個或多個 jobs 構成,含義是一次持續集成的運行,可以完成多個任務。

(3)step(步驟):每個 job 由多個 step 構成,一步步完成。 一個工作中的每個步驟都在相同的虛擬環境中執行,從而允許使用文件系統共享信息。

(4)action (動作):每個 step 可以依次執行一個或多個命令(action)。 你可以創建自己的action、使用 GitHub 社區共享的action。

二、workflow文件

GitHub Actions 的配置文件叫做 workflow 文件,存放在代碼倉庫的.github/workflows目錄。

workflow 文件采用 YAML 格式,文件名可以任意取,但是后綴名統一為.yml,比如foo.yml。一個庫可以有多個 workflow 文件。GitHub 只要發現.github/workflows目錄里面有.yml文件,就會自動運行該文件。

先貼一個完整的示例(沒啥實際作用):

name: CI

on: 
  push:
    branches: 
      - master
      - release/*
  
jobs:
  build:
    name: My Test
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
      
    - name: Run a one-line script
      run: echo Hello, world!
      
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.
        
    - name: Setup Node
      uses: actions/setup-node@v1
      with:
        node-version: '10.x'

1. name

name 定義工作流的名稱,對該工作流要完成的任務進行簡單的描述.

2. on

on 設置工作流的觸發條件,一般指定為 push,表示在每次 git push 操作后自動觸發該項目的工作流。

on: [push]

可以讓工作流在 master 和 release 分支的 push 事件上運行:

on:
  push:
    branches:
    - master
    - release/*

或只在 master 分支的 pull_request 事件上運行:

on:
  pull_request:
    branches:
    - master

也可以設置定時運行計划,在周一到周五每天的 02:00 運行:

on:
  schedule:
  - cron: 0 2 * * 1-5

3. runs-on

runs-on 指定運行所在操作系統的類型。GitHub Actions 提供 Linux、Windows 和 macOS 來構建運行。 

jobs:
  build:

    runs-on: ubuntu-latest # 表示工作流將在 ubuntu 的最新版本上運行

可用的虛擬機類型如下:

ubuntu-latest,ubuntu-18.04 或 ubuntu-16.04
windows-latest,windows-2019 或 windows-2016
macOS-latest 或 macOS-10.14

4. checkout

這是github官方的一個action,用於clone該倉庫的源碼到工作流中。

- uses: actions/checkout@v1

在本例中使用 v1 可以確保你使用的是簽出操作的一個穩定版本。

要淺層克隆你的倉庫或只復制你倉庫的最新版本,使用下面的語法設置提取深度(fetch-depth):

- uses: actions/checkout@v1
  with:
    fetch-depth: 1

5. run

也是一種acton,即在終端中執行的 shell 命令。

    - name: make # 定義命令的名稱
      run: make # 使用 Makefile 來構建項目
    - name: dependencies
      run: |
        sudo apt install mysql-server mysql-client
        sudo apt install libmysqlclient-dev

等各種各樣的命令,docker命令也可。

workflow 文件的配置字段非常多,詳見官方文檔

三、應用實例

使用Nodejs + Github Actions實現一個Weather-Bot,能夠自動將當日天氣發送到郵箱。

項目地址

 

 

 參考鏈接:

1. mistydrew's Blog-GitHub Action工作流入門

2. GitHub Actions官方文檔

3. miyouluo-50行實現定時發送天氣預報提醒郵件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM