github新出的action是什么? 用他做自動測試?

體驗分享

本文一個嘗鮮的體驗分享, 并沒有太復雜的技巧, 做了一個最少代碼的例子展示, 讓每個人都可以把action用起來, 如果路過的大牛有高級技巧請留言分享, 我會補充. 下面正文開始.

是什么?

是一個免費的操作系統容器(Linux/Windows/macOS), 我們可以讓他預裝開發環境(node/php/python...).
注: 后面的文章假設我們選了一臺裝有nodejs的linux服務器.

有什么用?

我們可以上傳(git push)代碼, 然后在他的nodejs中執行, 如果我們寫的代碼中有測試腳本, 那么他執行完畢后會給我們一個圖標反饋到github的提交記錄, 如下圖:

image

如果代碼執行出現錯誤, 會反饋一個紅色的"x"圖標.

怎么用?

進入action頁面

現在任何倉庫都多了一個action按鈕, 如圖:

image

選擇需要的環境

第一次進入會讓我們選擇開發環境, 這里我選擇了nodejs, 點擊對應的"Set up this workflow"按鈕, 如圖:

image

告訴action你要干什么

點擊后我們進入了編輯界面, 在這里我們要告訴"action"他要做什么, 如圖:

image

如果仔細觀察你會發現: 這個編輯界面對應的是一個文件, 我們根目錄下多了一個".github/workflows/nodejs.yml", 我們對action的設置都會存儲在這里, 下次修改我們直接編輯這個文件即可.

解釋下配置文件

name: Node CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@master
    - name: Use Node.js 10.x
      uses: actions/setup-node@v1
    - name: test
      run: |
        npm i
        npm run test:rules

name

顯示標題, 運行時顯示, 沒太大意義.

on

看到on就想到事件觸發, 是的他可以注冊對git動作的監視, 比如監視倉庫的push/pull_request等動作, 想了解更多動作解釋看文檔

比如設置監視多個動作:

on: [push, pull_request]

還可以針對分支來監控

on:
  push:
    branches:
    - develop

jobs

這個是核心功能了, 在這里我們要告訴action做什么,

jobs.id

其下的 "build" 字段暫時可理解成id, 我們可以改成其他名字比如"test", 如果有多個可以讓多個job并行, 但是id不能相同.
注: 文檔中有個needs字段可設置依賴執行, 我還沒實踐他, 如果這篇看的人多, 我研究下然后在寫第二篇補充下 ??)

jobs.id.run-on

表示運行的操作系統, ubuntu-latest代表最新版本的Ubuntu, 也可以指定版本號, 根據文檔提示action支持如下系統:

  • ubuntu-latest, ubuntu-18.04, or ubuntu-16.04
  • windows-latest, windows-2019, or windows-2016
  • macOS-latest or macOS-10.14
jobs.id.steps

設置動作, 也就是action的核心功能.

jobs.id.steps.name

用來設置每步動作的顯示標題, 運行時顯示, 可以隨意寫.

jobs.id.steps.uses

可以執行一些action封裝好的動作:

  1. uses: actions/checkout@master, 拉取代碼.
  2. actions/setup-node@v1, 初始化node環境.
jobs.id.steps.run

執行命令

  1. 安裝包: npm run test:rules
  2. 執行我們寫好的測試命令 npm run test:rules

執行結果

image

在action中我們可以看到我們寫的腳本被執行了, 如果執行沒有報錯那么就會提示我們"成功", 用"綠色"表示.

查看真實項目

總結

好了就寫這么多吧, 也是初用, 寫的時候也是戰戰兢兢, 怕發布的時候被大牛噴, 不過真的很喜歡action, 還是想寫個文章推廣下, 拋磚引玉. 謝謝大家的閱讀.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容