Skip to content
This repository has been archived by the owner on Aug 29, 2023. It is now read-only.

Commit

Permalink
feat: allow skipping go-test on certain OSes (#455)
Browse files Browse the repository at this point in the history
* feat: standarise JSON config reading

* feat: allow skipping go-test on certain OSes

* fix: go-test conditional

* chore: show config after extracting it
  • Loading branch information
galargh authored Feb 6, 2023
1 parent b66f621 commit 8c30e23
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 19 deletions.
22 changes: 22 additions & 0 deletions .github/actions/read-config/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: read config
description: Reads workflow config

outputs:
json:
description: JSON config
value: ${{ steps.config.outputs.json }}

runs:
using: "composite"
steps:
- id: config
run: |
eof="EOF$RANDOM"
path="${GITHUB_WORKFLOW_REF%.yml@*}"
path="./${path#*/*/}-config.json"
printf "json<<$eof\n%s\n$eof" "$(cat "$path" || echo '{}')" >> $GITHUB_OUTPUT
shell: bash
- env:
CONFIG: ${{ steps.config.outputs.json }}
run: echo "$CONFIG"
shell: bash
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,13 @@ To completely disable running 32-bit tests set `skip32bit` to `true` in `.github
}
```

If your project cannot be built on one of the supported operating systems, you can disable it by setting `skipOSes` to a list of operating systems in `.github/workflows/go-test-config.json`:
```json
{
"skipOSes": ["windows", "macos"]
}
```

## Technical Preview

You can opt-in to receive early updates from the `next` branch in-between official Unified CI releases.
Expand Down
12 changes: 3 additions & 9 deletions templates/.github/workflows/go-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,18 @@ jobs:
unit:
runs-on: ubuntu-latest
name: All
env:
RUNGOGENERATE: false
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- id: config
uses: protocol/.github/.github/actions/read-config@master
- uses: actions/setup-go@v3
with:
go-version: "1.19.x"
- name: Run repo-specific setup
uses: ./.github/actions/go-check-setup
if: hashFiles('./.github/actions/go-check-setup') != ''
- name: Read config
if: hashFiles('./.github/workflows/go-check-config.json') != ''
run: |
if jq -re .gogenerate ./.github/workflows/go-check-config.json; then
echo "RUNGOGENERATE=true" >> $GITHUB_ENV
fi
- name: Install staticcheck
run: go install honnef.co/go/tools/cmd/staticcheck@376210a89477dedbe6fdc4484b233998650d7b3c # 2022.1.3 (v0.3.3)
- name: Check that go.mod is tidy
Expand Down Expand Up @@ -57,7 +51,7 @@ jobs:
staticcheck ./... | sed -e 's@\(.*\)\.go@./\1.go@g'
- name: go generate
uses: protocol/[email protected]
if: (success() || failure()) && env.RUNGOGENERATE == 'true'
if: (success() || failure()) && fromJSON(steps.config.outputs.json).gogenerate == true
with:
run: |
git clean -fd # make sure there aren't untracked files / directories
Expand Down
20 changes: 10 additions & 10 deletions templates/.github/workflows/go-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@ jobs:
go: [ "1.18.x", "1.19.x" ]
env:
COVERAGES: ""
SKIP32BIT: false
runs-on: ${{ fromJSON(vars[format('UCI_GO_TEST_RUNNER_{0}', matrix.os)] || format('"{0}-latest"', matrix.os)) }}
name: ${{ matrix.os }} (go ${{ matrix.go }})
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- id: config
uses: protocol/.github/.github/actions/read-config@master
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go }}
Expand All @@ -35,22 +36,19 @@ jobs:
- name: Run repo-specific setup
uses: ./.github/actions/go-test-setup
if: hashFiles('./.github/actions/go-test-setup') != ''
- name: Read config
if: hashFiles('./.github/workflows/go-test-config.json') != ''
shell: bash
run: |
if jq -re .skip32bit ./.github/workflows/go-test-config.json; then
echo "SKIP32BIT=true" >> $GITHUB_ENV
fi
- name: Run tests
if: contains(fromJSON(steps.config.outputs.json).skipOSes, matrix.os) == false
uses: protocol/[email protected]
with:
# Use -coverpkg=./..., so that we include cross-package coverage.
# If package ./A imports ./B, and ./A's tests also cover ./B,
# this means ./B's coverage will be significantly higher than 0%.
run: go test -v -shuffle=on -coverprofile=module-coverage.txt -coverpkg=./... ./...
- name: Run tests (32 bit)
if: matrix.os != 'macos' && env.SKIP32BIT == 'false' # can't run 32 bit tests on OSX.
# can't run 32 bit tests on OSX.
if: matrix.os != 'macos' &&
fromJSON(steps.config.outputs.json).skip32bit != true &&
contains(fromJSON(steps.config.outputs.json).skipOSes, matrix.os) == false
uses: protocol/[email protected]
env:
GOARCH: 386
Expand All @@ -59,7 +57,9 @@ jobs:
export "PATH=${{ env.PATH_386 }}:$PATH"
go test -v -shuffle=on ./...
- name: Run tests with race detector
if: ${{ matrix.os == 'ubuntu' }} # speed things up. Windows and OSX VMs are slow
# speed things up. Windows and OSX VMs are slow
if: matrix.os == 'ubuntu' &&
contains(fromJSON(steps.config.outputs.json).skipOSes, matrix.os) == false
uses: protocol/[email protected]
with:
run: go test -v -race ./...
Expand Down

0 comments on commit 8c30e23

Please sign in to comment.