簡體   English   中英

在 github 動作中為 golang 運行 pre-commit.com 腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM