GitHub Action 入门 && 徽章

Caret Up

GitHub Action

GitHub Action 是 GitHub 推出的 CI/CD 服务

CI/CD

参考文章 什么是CI/CD

Workflow 配置文件

GitHub Actions 的配置文件称为 workflow 文件,统一放在项目的 .github/workflows 目录下

GitHub 只要发现目录下存在 .yml 文件,就会自动运行该文件

.yml 文件没有命名及数量限制

workflow 的配置字段非常多,详细可看官方文档

示例

常用字段解析

.github/workflows/test.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
name: Test # workflow 名
#on: [push,pull_request] # 在哪些动作下触发本workflow
on: # 也可以写成这样
  push: # 指定触发事件
    branches: # 分支
      - main
  pull_request: null # 指定所有的拉取请求都触发

jobs: # 主体字段,表示执行的一项或多项任务
  my_first_job: # job id
    name: My first job # 任务说明
    runs-on: ubuntu-latest # 指定运行所需要的虚拟机环境,必填字段
    env: # 当前job的环境变量
      MODE: dev
    steps: # 指定每个 job 的运行步骤,可以有一个或多个
      - name: print a greeting # 步骤名称
        env: # 当前步骤的环境变量
          NAME: northes
        run: | # 运行命令
          echo Hello $NAME
  my_second_job:
    name: My second job
    needs: [ my_first_job ] # 规定当前任务的依赖关系,即运行顺序。my_second_job 需要在 my_first_job 之后运行
    runs-on: ubuntu-latest
    steps:
      - name: print
        run: | # 运行命令
          echo This is second job

Go项目构建与测试

.github/workflows/go.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
name: Go
on:
  - push

jobs:
  build:
    name: build & test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2 # 使用官方提供actions签出仓库

      - name: Set up Go
        uses: actions/setup-go@v2 # 使用官方的actions初始化go环境
        with:
          go-version: 1.16 # 指定go版本

      - name: Build
        run: go build -v ./... # -v 打印构建出来的文件名

      - name: Test
        #        run: go test -v ./...
        run: go test -v -race -covermode=atomic -coverprofile=coverage.out ./... # 生成覆盖率测试报告,用以上传codecov

      - name: Codecov
        uses: codecov/[email protected] # 上报测试覆盖率,需在 https://about.codecov.io/ 注册账号并在GitHub设置secrets
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

徽章

CI徽章

Go

  • 用于展示CI状态。
  • 可在 GitHub Actions 某一 Workflows 的右手边点 Create status badge 生成

Codecov徽章

codecov

  • https://codecov.io
  • 用于展示测试覆盖率 。可在 CodecovSettings 下的 Badge 选项处生成

Go代码质量徽章

Go Report Card

  • https://goreportcard.com/
  • 前提是您的包的 go.modmodule 必须与您的仓库地址一致,否则会提示无法拉取包

Go包文档徽章

Go Reference

  • https://pkg.go.dev/badge/
  • 包名要求与 Go代码质量徽章 的要求一样
  • 会直接跳转到 pkg.go.dev 的包文档,文档自动生成(需按照一定的规则,自行 Google )

自定义徽章

参考