103 lines
2.5 KiB
YAML
103 lines
2.5 KiB
YAML
name: GitHub Actions CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
branches: [ master ]
|
|
|
|
jobs:
|
|
|
|
build:
|
|
name: build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
|
|
- name: Set up Go 1.x
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
# Run on the latest minor release of Go 1.18:
|
|
go-version: ^1.18
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Share cache with other actions
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Ensure all files were formatted as per gofmt
|
|
run: |
|
|
[ "$(gofmt -l $(find . -name '*.go') 2>&1)" = "" ]
|
|
|
|
- name: Go Vet
|
|
run: |
|
|
go vet
|
|
|
|
- name: Build
|
|
run: |
|
|
go build -v ./cmd/...
|
|
|
|
test:
|
|
name: test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
|
|
- name: Set up Go 1.x
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
# Run on the latest minor release of Go 1.18:
|
|
go-version: ^1.18
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Share cache with other actions
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Test
|
|
run: |
|
|
go test -v -race ./internal/...
|
|
|
|
integrationtest:
|
|
name: integrationtest
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
|
|
- name: Set up Go 1.x
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
# Run on the latest minor release of Go 1.18:
|
|
go-version: ^1.18
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Share cache with other actions
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Build Docker container with the tools our tests require
|
|
run: |
|
|
docker build --pull --no-cache --rm -t=router7 -f travis/Dockerfile .
|
|
|
|
- name: Run tests in Docker container
|
|
run: |
|
|
exit=0; for pkg in $(go list ./integration/...); do go test -c $pkg && docker run --privileged --net=host -v $PWD:/usr/src:ro router7 /bin/sh -c "./$(basename $pkg).test -test.v" || exit=1; done; [ $exit = 0 ]
|