はじめに
モノレポで開発をしている中でGitHub Actionsを利用してGoのテストをするのに時間がかかったのでその原因をまとめます
問題
リポジトリを以下の構成で作成しました
┣ .github
┣ workflows
┣ run.yjobs:
test:
name: Run Go and Jest tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.20.3 # Replace with your required Go version
version
- name: cd api
run: cd ./lt-api && ls
- name: Download Go modules
run: go mod downloadml
┣ frot
┣ api
┣ go.mod
┣ main.go
ここでGitHub Actionsで以下を実行しようとすると失敗しました
run.yml
jobs:
test:
name: Run Go and Jest tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.20.3 # Replace with your required Go version
version
- name: cd api
run: cd ./api && ls
- name: Download Go modules
run: go mod download
ここでgo mod download
で以下のエラーになりました
Run go mod download
go: no modules specified (see 'go help mod download')
Error: Process completed with exit code 1.
cd api
で移動しているのでgo.mod
があるはずなのにおかしいと考えていました
解決方法
GitHub Actions内でcdコマンドを使ってディレクトリを変更した場合、その変更はそのステップ内でのみ有効で、次のステップには影響を与えないということが頭から抜けていました
いまのcd api
はまったく次のステップでは意味がないということでした
以下に修正してうまくいきました
run.yml
- name: Download Go modules
run: |
cd api
go mod download
```
# おわりに
よくよく考えればそうだなという感じですが、沼ってしまい気づくのにじかんがかかりま