diff --git a/.github/workflows/cross-darwin.yml b/.github/workflows/cross-darwin.yml new file mode 100644 index 000000000..dad435eb9 --- /dev/null +++ b/.github/workflows/cross-darwin.yml @@ -0,0 +1,53 @@ +name: Darwin-Cross + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + + if: "!contains(github.event.head_commit.message, '[ci skip]')" + + steps: + + - name: Set up Go 1.13 + uses: actions/setup-go@v1 + with: + go-version: 1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + + - name: macOS build cmd + env: + GOOS: darwin + GOARCH: amd64 + run: go build ./cmd/... + + - name: macOS build tests + env: + GOOS: darwin + GOARCH: amd64 + run: for d in $(go list -f '{{if .TestGoFiles}}{{.Dir}}{{end}}' ./... ); do (echo $d; cd $d && go test -c ); done + + - uses: k0kubun/action-slack@v2.0.0 + with: + payload: | + { + "attachments": [{ + "text": "${{ job.status }}: ${{ github.workflow }} " + + "() " + + "of ${{ github.repository }}@" + "${{ github.ref }}".split('/').reverse()[0] + " by ${{ github.event.head_commit.committer.name }}", + "color": "danger" + }] + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() && github.event_name == 'push' diff --git a/.github/workflows/cross-freebsd.yml b/.github/workflows/cross-freebsd.yml new file mode 100644 index 000000000..978d57ac7 --- /dev/null +++ b/.github/workflows/cross-freebsd.yml @@ -0,0 +1,53 @@ +name: FreeBSD-Cross + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + + if: "!contains(github.event.head_commit.message, '[ci skip]')" + + steps: + + - name: Set up Go 1.13 + uses: actions/setup-go@v1 + with: + go-version: 1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + + - name: FreeBSD build cmd + env: + GOOS: freebsd + GOARCH: amd64 + run: go build ./cmd/... + + - name: FreeBSD build tests + env: + GOOS: freebsd + GOARCH: amd64 + run: for d in $(go list -f '{{if .TestGoFiles}}{{.Dir}}{{end}}' ./... ); do (echo $d; cd $d && go test -c ); done + + - uses: k0kubun/action-slack@v2.0.0 + with: + payload: | + { + "attachments": [{ + "text": "${{ job.status }}: ${{ github.workflow }} " + + "() " + + "of ${{ github.repository }}@" + "${{ github.ref }}".split('/').reverse()[0] + " by ${{ github.event.head_commit.committer.name }}", + "color": "danger" + }] + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() && github.event_name == 'push' diff --git a/.github/workflows/cross-openbsd.yml b/.github/workflows/cross-openbsd.yml new file mode 100644 index 000000000..7504c9c89 --- /dev/null +++ b/.github/workflows/cross-openbsd.yml @@ -0,0 +1,53 @@ +name: OpenBSD-Cross + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + + if: "!contains(github.event.head_commit.message, '[ci skip]')" + + steps: + + - name: Set up Go 1.13 + uses: actions/setup-go@v1 + with: + go-version: 1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + + - name: OpenBSD build cmd + env: + GOOS: openbsd + GOARCH: amd64 + run: go build ./cmd/... + + - name: OpenBSD build tests + env: + GOOS: openbsd + GOARCH: amd64 + run: for d in $(go list -f '{{if .TestGoFiles}}{{.Dir}}{{end}}' ./... ); do (echo $d; cd $d && go test -c ); done + + - uses: k0kubun/action-slack@v2.0.0 + with: + payload: | + { + "attachments": [{ + "text": "${{ job.status }}: ${{ github.workflow }} " + + "() " + + "of ${{ github.repository }}@" + "${{ github.ref }}".split('/').reverse()[0] + " by ${{ github.event.head_commit.committer.name }}", + "color": "danger" + }] + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() && github.event_name == 'push' diff --git a/.github/workflows/cross-windows.yml b/.github/workflows/cross-windows.yml new file mode 100644 index 000000000..928ce596c --- /dev/null +++ b/.github/workflows/cross-windows.yml @@ -0,0 +1,53 @@ +name: Windows-Cross + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + + if: "!contains(github.event.head_commit.message, '[ci skip]')" + + steps: + + - name: Set up Go 1.13 + uses: actions/setup-go@v1 + with: + go-version: 1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + + - name: Windows build cmd + env: + GOOS: windows + GOARCH: amd64 + run: go build ./cmd/... + + - name: Windows build tests + env: + GOOS: windows + GOARCH: amd64 + run: for d in $(go list -f '{{if .TestGoFiles}}{{.Dir}}{{end}}' ./... ); do (echo $d; cd $d && go test -c ); done + + - uses: k0kubun/action-slack@v2.0.0 + with: + payload: | + { + "attachments": [{ + "text": "${{ job.status }}: ${{ github.workflow }} " + + "() " + + "of ${{ github.repository }}@" + "${{ github.ref }}".split('/').reverse()[0] + " by ${{ github.event.head_commit.committer.name }}", + "color": "danger" + }] + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() && github.event_name == 'push' diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 8b31f8115..2e6754721 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -28,21 +28,6 @@ jobs: - name: Basic build run: go build ./cmd/... - - name: macOS build - env: - GOOS: darwin - GOARCH: amd64 - run: go build ./cmd/... - - - name: Windows build - env: - GOOS: windows - GOARCH: amd64 - run: go build ./cmd/... - - - name: Cross-compile tests for other geese - run: ./test.sh - - name: Run tests on linux run: go test ./... diff --git a/test.sh b/test.sh deleted file mode 100755 index 3c8af9794..000000000 --- a/test.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash - -function remove_test_files { - rm -f ./*test{,.exe} -} - -function fail { - printf '%s\n' "$1" >&2 - # If we fail, clean up after ourselves - remove_test_files - exit 1 -} - -function main { - test_dirs=() - while IFS= read -r -d '' file - do - dir=$(dirname "$file") - if [[ ! " ${test_dirs[*]} " =~ ${dir} ]]; then - test_dirs+=("$dir") - fi - done < <(find . -type f -iname '*_test.go' -print0) - - for goos in openbsd darwin windows - do - for dir in "${test_dirs[@]}"; do - echo "Testing GOOS=$goos in dir $dir" - GOOS="$goos" go test -c "./$dir" || fail "Test failed using $goos and $dir" - done - done - - # If all goes well, we should still clean up the test files - echo "Test complete" - remove_test_files -} - -main "$@" -