go CI: Use common action and parallel jobs
This commit is contained in:
parent
f9664389d5
commit
205266cb60
|
@ -0,0 +1,25 @@
|
|||
name: 'Common Go'
|
||||
description: 'Checks out, and handles Go setup and caching'
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.cache/go-build
|
||||
~/go/pkg/mod
|
||||
# The OS defines the directories to use, then this is specific to go. The go version could
|
||||
# affect the dependencies. The job can affect what is actually downloaded, and provides
|
||||
# collision resistance. Finally, the hash of the go.sum files ensures a new cache is created
|
||||
# when the dependencies change. Note if this were just a mod cache, we might do this based
|
||||
# on time or something.
|
||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-${{ matrix.go-version }}-${{ github.job }}-
|
||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
||||
${{ runner.os }}-go-
|
||||
|
|
@ -4,7 +4,7 @@ on: [push, pull_request]
|
|||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
test:
|
||||
timeout-minutes: 30
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
|
@ -13,28 +13,64 @@ jobs:
|
|||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/go-common
|
||||
- run: go test -race -count 2 ./...
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
test-benchmarks:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ '1.17' ]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/go-common
|
||||
- run: go test -race -run @ -bench . -benchtime 2x ./...
|
||||
|
||||
- name: Test
|
||||
run: go test -race -count 2 ./...
|
||||
bench:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ '1.17' ]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/go-common
|
||||
- run: go test -run @ -bench . ./...
|
||||
|
||||
- name: Test Benchmarks
|
||||
run: go test -race -run @ -bench . -benchtime 2x ./...
|
||||
|
||||
- name: Bench
|
||||
run: go test -run @ -bench . ./...
|
||||
|
||||
- name: Test on 386
|
||||
run: GOARCH=386 go test ./... -bench .
|
||||
continue-on-error: true
|
||||
test-386:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ '1.16', '1.17' ]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/go-common
|
||||
- run: GOARCH=386 go test ./...
|
||||
- run: GOARCH=386 go test ./... -run @ -bench .
|
||||
|
||||
build-wasm:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ '1.16', '1.17' ]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/go-common
|
||||
- name: Some packages compile for WebAssembly
|
||||
run: GOOS=js GOARCH=wasm go build . ./storage ./tracker/...
|
||||
run: GOOS=js GOARCH=wasm go build -v . ./storage ./tracker/...
|
||||
|
||||
torrentfs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [ '1.17' ]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: ./.github/actions/go-common
|
||||
- name: Install godo
|
||||
run: |
|
||||
# Need master for cross-compiling fix
|
||||
|
|
Loading…
Reference in New Issue