Github 原生 CI/CD,初嘗 Github Actions ...
Github 原生 CI/CD,初嘗 Github Actions
Intro
Github 目前已經推出了自己的 CICD 服務 —— Github Actions,而且比微軟的 Azure DevOps Pipelines 對開發者來說更友好,使用起來更好用。
Github Actions 核心概念
總體看下來感覺是從 Azure Pipelines 遷移過來的東西,有許多概念和 Azure Pipelines 是類似的,如果你之前用過 azure pipelines,應該很容易上手
- Runner 用來跑 cicd build 的伺服器
- Github Hosted Runner Github 官方提供的 Runner
- Self-Hosted Runner 用自己的伺服器作為 Runner
- Workflow 定義 CI/CD 的流程,需要執行哪些操作,需要做什麼
- Workflow 定義 workflow 的配置文件,通常放在項目根目錄下的
.github/workflows
文件夾下 - Workflow Run 每一次 CI/CD build
- Event 觸發 ci/cd build 的事件,如 push/issue/pr
- Job 由一系列 Step 組成,Job 可以並行執行也可以串列執行,每一個 Job 都是一個新的環境
- Step 對應 Job 執行的每一個步驟
- Action 對應 Step 里執行的可復用的操作
Github Actions 配置示例
來看一個 Github Actions 的 dotnet 配置:
name: dotnetcore # workflow name
on: [push] # event trigger,什麼事件觸發 build
jobs:
build:
runs-on: ubuntu-latest # 指定 runner,使用 Github 提供的 runner
steps:
- uses: actions/checkout@v1 # checkout
- name: Setup .NET Core # 設置 dotnet core 環境
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.0.100
- name: dotnet info # 輸出 dotnet -info,查看 dotnet 版本信息
run: dotnet --info
- name: build
run: bash build.sh # 在 bash 中運行 build 腳本
Github 示例: https://github.com/WeihanLi/WeihanLi.Common/blob/dev/.github/workflows/dotnetcore.yml
More
徽章:
Sample:
[![Github Build Status](https://github.com/WeihanLi/WeihanLi.Common/workflows/dotnetcore/badge.svg?branch=dev)](https://github.com/WeihanLi/WeihanLi.Common/actions?query=workflow%3Adotnetcore+branch%3Adev)
https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg
https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg?branch=<branch-name>
Summary
總體來說,用起來還可以,但是感覺還是不如 travis-ci 以及 azure pipelines成熟,比如說常用 ci 都支持的 commit message 里包含 [skip ci] 的不觸發 build,目前 Github Action 還是不支持的,不過畢竟是新推出來的產品,相信以後一定會越來越好噠,想嘗試的小伙伴們可以實踐一下
Reference
- https://github.com/features/actions
- https://mp.weixin.qq.com/s/Fb9alhm2z-CzG6x92NFDmg
- https://help.github.com/en/actions/automating-your-workflow-with-github-actions
- https://help.github.com/cn/actions/automating-your-workflow-with-github-actions
- https://github.com/actions
- https://github.com/WeihanLi/WeihanLi.Common