81 lines
2.2 KiB
YAML
81 lines
2.2 KiB
YAML
name: Go
|
|
on: [push]
|
|
jobs:
|
|
test:
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macOS-latest]
|
|
go: ['1.12', '1.13']
|
|
runs-on: ${{ matrix.os }}
|
|
name: Test Go ${{ matrix.go }} on ${{ matrix.os }}
|
|
steps:
|
|
- uses: pelletier/setup-go@v1.0.2-patch
|
|
with:
|
|
go-version: ${{ matrix.go }}
|
|
- uses: actions/checkout@v1
|
|
- run: go test ./...
|
|
|
|
coverage:
|
|
name: Coverage
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: pelletier/setup-go@v1.0.2-patch
|
|
with:
|
|
go-version: '1.12'
|
|
- uses: actions/checkout@v1
|
|
- run: go test -race -coverprofile=coverage.txt -covermode=atomic
|
|
- run: bash <(curl -s https://codecov.io/bash)
|
|
env:
|
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
|
|
fmt:
|
|
name: Go fmt
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: pelletier/setup-go@v1.0.2-patch
|
|
- uses: actions/checkout@v1
|
|
- run: go fmt ./...
|
|
|
|
benchmark:
|
|
name: Run benchmark
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: pelletier/setup-go@v1.0.2-patch
|
|
with:
|
|
go-version: '1.13'
|
|
- uses: actions/checkout@v1
|
|
- run: ./benchmark.sh master https://github.com/$GITHUB_REPOSITORY.git
|
|
|
|
fuzzing:
|
|
name: Run fuzzing
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: pelletier/setup-go@v1.0.2-patch
|
|
with:
|
|
go-version: '1.13'
|
|
- uses: actions/checkout@v1
|
|
- run: mkdir -p /home/runner/go/src/github.com/pelletier/go-toml
|
|
| cp -R . /home/runner/go/src/github.com/pelletier/go-toml
|
|
- run: ./fuzzit.sh
|
|
env:
|
|
TYPE: local-regression
|
|
|
|
docker:
|
|
name: Build Docker image
|
|
runs-on: ubuntu-latest
|
|
needs: [test, fuzzing, fmt]
|
|
steps:
|
|
- uses: actions/setup-go@v1
|
|
with:
|
|
go-version: '1.13'
|
|
- uses: actions/checkout@v1
|
|
- run: docker build -t toml .
|
|
- uses: actions/docker/tag@master
|
|
with:
|
|
args: toml pelletier/go-toml
|
|
- run: docker tag pelletier/go-toml pelletier/go-toml:latest
|
|
if: github.ref == 'heads/refs/master'
|
|
- name: Docker login
|
|
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
|
- run: docker push pelletier/go-toml
|