mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-18 20:51:45 +00:00
meta: move cross-compiled builds to their own parallel jobs
And add FreeBSD. Fixes #37 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
2cafbd74c7
commit
b5346fe7b4
53
.github/workflows/cross-darwin.yml
vendored
Normal file
53
.github/workflows/cross-darwin.yml
vendored
Normal file
@ -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 }} <https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks|${{ env.COMMIT_DATE }} #${{ env.COMMIT_NUMBER_OF_DAY }}> " +
|
||||||
|
"(<https://github.com/${{ github.repository }}/commit/${{ github.sha }}|" + "${{ github.sha }}".substring(0, 10) + ">) " +
|
||||||
|
"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'
|
53
.github/workflows/cross-freebsd.yml
vendored
Normal file
53
.github/workflows/cross-freebsd.yml
vendored
Normal file
@ -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 }} <https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks|${{ env.COMMIT_DATE }} #${{ env.COMMIT_NUMBER_OF_DAY }}> " +
|
||||||
|
"(<https://github.com/${{ github.repository }}/commit/${{ github.sha }}|" + "${{ github.sha }}".substring(0, 10) + ">) " +
|
||||||
|
"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'
|
53
.github/workflows/cross-openbsd.yml
vendored
Normal file
53
.github/workflows/cross-openbsd.yml
vendored
Normal file
@ -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 }} <https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks|${{ env.COMMIT_DATE }} #${{ env.COMMIT_NUMBER_OF_DAY }}> " +
|
||||||
|
"(<https://github.com/${{ github.repository }}/commit/${{ github.sha }}|" + "${{ github.sha }}".substring(0, 10) + ">) " +
|
||||||
|
"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'
|
53
.github/workflows/cross-windows.yml
vendored
Normal file
53
.github/workflows/cross-windows.yml
vendored
Normal file
@ -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 }} <https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks|${{ env.COMMIT_DATE }} #${{ env.COMMIT_NUMBER_OF_DAY }}> " +
|
||||||
|
"(<https://github.com/${{ github.repository }}/commit/${{ github.sha }}|" + "${{ github.sha }}".substring(0, 10) + ">) " +
|
||||||
|
"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'
|
15
.github/workflows/linux.yml
vendored
15
.github/workflows/linux.yml
vendored
@ -28,21 +28,6 @@ jobs:
|
|||||||
- name: Basic build
|
- name: Basic build
|
||||||
run: go build ./cmd/...
|
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
|
- name: Run tests on linux
|
||||||
run: go test ./...
|
run: go test ./...
|
||||||
|
|
||||||
|
38
test.sh
38
test.sh
@ -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 "$@"
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user