我有一个Go语言项目,其中包含Makefile
test:
@go test -cover ./...
和一个mod文件
module path/to/repo
go 1.19
require github.com/go-chi/chi/v5 v5.0.8
我创建了一个Github动作示例来在Github PR上运行测试
name: QA on pull request
on: pull_request
jobs:
run-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: 1.19
- name: Run tests
run: make test
我想知道为什么此工作流在没有install dependencies
步骤的情况下工作。项目本身正在使用外部依赖项,我认为应该有一个运行go get ./...
的步骤
如果不存在,Go语言会在引擎盖下安装它们吗?或者actions/setup-go@v3
操作会安装依赖项吗?
1条答案
按热度按时间r7xajy2e1#
根据
go test
文档(或者您可以在本地运行go help test
以阅读其描述):“Go test”会重新编译每个包以及名称与文件模式“*_test.go”匹配的任何文件。
它还安装所有依赖项;因此,当操作执行
go test
时会发生这种情况。您可能会在日志中观察到这种情况。actions/setup-go@v3
并不依赖于代码本身,它只是设置了您要求的go
环境,在您的设置中,如果您将setup-go
和checkout
交换,它仍然可以工作。