注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。
简介
本指南介绍如何构建、测试和发布 Go 包。
GitHub 托管的运行器有一个带有预装软件的工具缓存,其中包括 Go 的依赖项。 有关最新软件和 Go 预安装版本的完整列表,请参阅“关于 GitHub 托管的运行器”。
先决条件
您应该已经熟悉 YAML 语法及其如何与 GitHub Actions 结合使用。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。
建议� 对 Go 语言有基本的了解。 有关详细信息,请参阅 Go 入门。
使用 Go 入门工作流程
GitHub 提供了一个适用于大多数 Go 项目的 Go 入门工作流程。 本指南包含可用于自定义入门工作流程的示例。 有关详细信息,请参阅 Go 入门工作流。
若要快速开始,请将起始工作流添� 到存储库的 .github/workflows
目录。
name: Go package
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.15
- name: Build
run: go build -v ./...
- name: Test
run: go test -v ./...
指定 Go 版本
指定 Go 版本的最简单方法是使用由 GitHub 提供的 setup-go
操作。 有关详细信息,请参阅 setup-go
操作。
若要在 GitHub 托管的运行器上使用 Go 的预安装版本,请将相关版本� 递给 setup-go
操作的 go-version
属性。 此操作从每个运行器上的工具缓存中查找特定版本的 Go,并将必要的二进制文件添� 到 PATH
。 这些更改将持续用于作业的其余部分。
setup-go
操作是 Go与 GitHub Actions 结合使用时的推荐方式,� 为它帮助确保不同运行器和不同版本的 Go 行为一致。 如果使用自托管运行器,则必须安装 Go 并将其添� 到 PATH
。
使用多个版本的 Go
name: Go
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [ '1.14', '1.15', '1.16.x' ]
steps:
- uses: actions/checkout@v2
- name: Setup Go ${{ matrix.go-version }}
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go-version }}
# You can test your matrix by printing the current Go version
- name: Display Go version
run: go version
使用特定的 Go 版本
可以将作业配置为使用 Go 的特定版本,例如 1.16.2
。 或者,您也可以使用语义版本语法来获得最新的次要版本。 此示例使用 Go 1.16 最新的修补程序版本:
- name: Setup Go 1.16.x
uses: actions/setup-go@v2
with:
# Semantic version range syntax or exact version of Go
go-version: '1.16.x'
安装依赖关系
可以使用 go get
安装依赖项:
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: '1.16.x'
- name: Install dependencies
run: |
go get .
go get example.lab/octo-examplemodule
go get example.lab/octo-examplemodule@v1.3.4
构建和测试代� �
您可以使用与本地相同的命令来构建和测试代� �。 此示例工作流演示如何在作业中使用 go build
和 go test
:
name: Go
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: '1.16.x'
- name: Install dependencies
run: go get .
- name: Build
run: go build -v ./...
- name: Test with the Go CLI
run: go test
将工作流数据打包为构件
工作流程完成后,您可以上� 产生的项目进行分析。 例如,您可能需要保存日志文件、� �心转储、测试结果或屏幕截图。 以下示例演示如何使用 upload-artifact
操作上� 测试结果。
有关详细信息,请参阅“将工作流数据存储为构件”。
name: Upload Go test results
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [ '1.14', '1.15', '1.16.x' ]
steps:
- uses: actions/checkout@v2
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go-version }}
- name: Install dependencies
run: go get .
- name: Test with Go
run: go test -json > TestResults-${{ matrix.go-version }}.json
- name: Upload Go test results
uses: actions/upload-artifact@v2
with:
name: Go-results-${{ matrix.go-version }}
path: TestResults-${{ matrix.go-version }}.json