go-modules-action - GitHub action for get G0 modules from repository.
inputs: no
outputs:
- modules
{
"modules": [
{
"name": "module-name",
"dir": "./pkg/module-name"
}
]
}
jobs:
detect-modules:
runs-on: ubuntu-latest
outputs:
modules: ${{ steps.get-modules.outputs.modules }}
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Get GO modules
uses: ci-space/go-modules-action@master
id: get-modules
- name: Print modules
run: ${{ steps.get-modules.outputs.modules }}
jobs:
detect-modules:
runs-on: ubuntu-latest
outputs:
modules: ${{ steps.get-modules.outputs.modules }}
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Get GO modules
uses: ci-space/go-modules-action@master
id: get-modules
unit-test:
name: unit-test
runs-on: ubuntu-latest
needs: detect-modules
strategy:
matrix:
module: ${{ fromJSON(needs.detect-modules.outputs.modules) }}
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v4 # action page: <https://github.com/actions/setup-go>
with:
go-version: stable
cache-dependency-path: ${{ matrix.module.dir }}/go.sum
- name: Install Go dependencies
run: cd ${{ matrix.module.dir }} && go mod download
- name: Run tests
run: cd ${{ matrix.module.dir }} && go test ./...
jobs:
detect-modules:
runs-on: ubuntu-latest
outputs:
modules: ${{ steps.get-modules.outputs.modules }}
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Get GO modules
uses: ci-space/go-modules-action@master
id: get-modules
code-lint:
name: code-lint
runs-on: ubuntu-latest
needs: detect-modules
strategy:
matrix:
module: ${{ fromJSON(needs.detect-modules.outputs.modules) }}
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v4 # action page: <https://github.com/actions/setup-go>
with:
go-version: stable
cache-dependency-path: ${{ matrix.module.dir }}/go.sum
- name: Install Go dependencies
run: cd ${{ matrix.module.dir }} && go mod download
- name: Run lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.60
working-directory: ${{ matrix.module.dir }}