[英]Golang Pre commit hook throwing error https://github.com/dnephin/pre-commit-golang
[英]run pre-commit.com script for golang in github actions
我正在嘗試運行 pre-commit.com 腳本,其中包含 github 操作中與 golang 相關的一些鈎子。 似乎測試環境缺少一些工具來執行 go-imports 和 golangci-lint。 在預提交步驟之前,我已經添加了在環境中設置所需工具的步驟,但這沒有幫助。
.pre-commit-config.yaml:
repos:
- repo: https://github.com/dnephin/pre-commit-golang
rev: v0.5.0
hooks:
- id: go-imports
- id: golangci-lint
- id: go-unit-tests
github 動作文件配置:
name: pre-commit
on:
pull_request:
push:
branches: [main]
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: actions/setup-go@v3
- run: go install golang.org/x/tools/cmd/goimports@latest
- run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.49.0
- uses: pre-commit/action@v2.0.2
Gihub Action Output:所有 go 環境設置步驟已成功完成
pre-commit/action@v2.0.2 的詳細信息:
[...]
[INFO] This may take a few minutes...
go imports...............................................................Failed
- hook id: go-imports
- exit code: 127
/home/runner/.cache/pre-commit/repow0byklud/run-go-imports.sh: line 8: goimports: command not found
golangci-lint............................................................Failed
- hook id: golangci-lint
- exit code: 127
/home/runner/.cache/pre-commit/repow0byklud/run-golangci-lint.sh: 2: exec: golangci-lint: not found
go-unit-tests............................................................Passed
[...]
所以,問題是在 go 工具安裝后,.../go/bin 目錄沒有被添加到執行環境中的 $PATH (所以 goimports 和 golangci-lint 對於 BASH 不可見)
(由於 github 操作特定,$PATH 本身被包裝在 $GITHUB_ENV 中。)
在 pre-commit action 執行之前的這個語句可以解決這個問題(見最后的完整代碼):
run: echo "PATH=$PATH:/home/runner/go/bin" >> $GITHUB_ENV
感謝@Anthony Sottile 在對原始問題的評論中
Github 動作設置代碼:
name: pre-commit
on:
pull_request:
push:
branches: [main]
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: actions/setup-go@v3
- run: go install golang.org/x/tools/cmd/goimports@latest
- run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s - -b $(go env GOPATH)/bin v1.49.0
- run: echo "PATH=$PATH:/home/runner/go/bin" >> $GITHUB_ENV
- uses: pre-commit/action@v2.0.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.