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 --no-latest - 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