diff --git a/.github/workflows/golang_quality.yaml b/.github/workflows/golang_quality.yaml new file mode 100644 index 0000000..7cde40c --- /dev/null +++ b/.github/workflows/golang_quality.yaml @@ -0,0 +1,50 @@ +on: + workflow_call: + inputs: + workdir: + required: false + default: "./" + type: string + +jobs: + golangci: + runs-on: ubuntu-latest + if: "!startsWith(github.ref, 'refs/tags/')" + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: v1.22.5 + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + version: v1.59 + working-directory: "${{ inputs.workdir }}" + go_tidy: + runs-on: ubuntu-latest + if: "!startsWith(github.ref, 'refs/tags/')" + container: + image: cubicrootxyz/golang-ci:v1.22.5-3 + options: --user root + steps: + - uses: actions/checkout@v4 + - run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + - name: Run go mod tidy + run: (cd ${{ inputs.workdir }} && go mod tidy) + - name: Run git diff + run: git diff --exit-code + go_generate: + runs-on: ubuntu-latest + if: "!startsWith(github.ref, 'refs/tags/')" + container: + image: cubicrootxyz/golang-ci:v1.22.5-3 + options: --user root + steps: + - uses: actions/checkout@v4 + - run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + - name: Install mockgen + run: go install github.com/golang/mock/mockgen@v1.6.0 + - name: Run go generate + run: go generate ${{ inputs.workdir }}... + - name: Run git diff + run: git diff --exit-code \ No newline at end of file diff --git a/.github/workflows/golang_quality_test.yaml b/.github/workflows/golang_quality_test.yaml new file mode 100644 index 0000000..ffe9919 --- /dev/null +++ b/.github/workflows/golang_quality_test.yaml @@ -0,0 +1,7 @@ +on: push + +jobs: + golang_quality: + uses: ./.github/workflows/golang_quality.yaml + with: + workdir: "tests/golang_quality" \ No newline at end of file diff --git a/README.md b/README.md index c03c6dd..0543a2a 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,17 @@ jobs: dockerhub_user: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_token: ${{ secrets.DOCKERHUB_TOKEN }} ``` + +## Golang + +### Code Quality + +To ensure code quality use the provided `golang_quality` workflow. It runs multiple analysis tools. + +```yaml +jobs: + golang_quality: + uses: ./.github/workflows/golang_quality.yaml + with: + workdir: "golang/application/subfolder" +``` \ No newline at end of file diff --git a/tests/golang_quality/go.mod b/tests/golang_quality/go.mod new file mode 100644 index 0000000..c14b105 --- /dev/null +++ b/tests/golang_quality/go.mod @@ -0,0 +1,3 @@ +module golang_quality + +go 1.22.1 diff --git a/tests/golang_quality/main.go b/tests/golang_quality/main.go new file mode 100644 index 0000000..ce83eea --- /dev/null +++ b/tests/golang_quality/main.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Println("I am used for testing CI workflows") +}