--- /dev/null
+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-
+
jobs:
- build:
+ test:
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
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 }}
-
- - name: Test
- run: go test -race -count 2 ./...
-
- - name: Test Benchmarks
- run: go test -race -run @ -bench . -benchtime 2x ./...
+ 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: Bench
- run: go test -run @ -bench . ./...
+ 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 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