diff --git a/.github/workflows/benchstat.yml b/.github/workflows/benchstat.yml new file mode 100644 index 0000000..4fa343f --- /dev/null +++ b/.github/workflows/benchstat.yml @@ -0,0 +1,82 @@ +# This workflow runs benchmarks against the current branch, +# compares them to benchmarks against master, +# and uploads the results as an artifact. + +name: benchstat + +on: [pull_request] + +jobs: + incoming: + runs-on: ubuntu-latest + services: + redis: + image: redis + ports: + - 6379:6379 + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.x + - name: Benchmark + run: go test -run=^$ -bench=. -count=5 -timeout=60m ./... | tee -a new.txt + - name: Upload Benchmark + uses: actions/upload-artifact@v2 + with: + name: bench-incoming + path: new.txt + + current: + runs-on: ubuntu-latest + services: + redis: + image: redis + ports: + - 6379:6379 + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + ref: master + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.x + - name: Benchmark + run: go test -run=^$ -bench=. -count=5 -timeout=60m ./... | tee -a old.txt + - name: Upload Benchmark + uses: actions/upload-artifact@v2 + with: + name: bench-current + path: old.txt + + benchstat: + needs: [incoming, current] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.x + - name: Install benchstat + run: go get -u golang.org/x/perf/cmd/benchstat + - name: Download Incoming + uses: actions/download-artifact@v2 + with: + name: bench-incoming + - name: Download Current + uses: actions/download-artifact@v2 + with: + name: bench-current + - name: Benchstat Results + run: benchstat old.txt new.txt | tee -a benchstat.txt + - name: Upload benchstat results + uses: actions/upload-artifact@v2 + with: + name: benchstat + path: benchstat.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..7aadded --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,35 @@ +name: build + +on: [push, pull_request] + +jobs: + build: + strategy: + matrix: + os: [ubuntu-latest] + go-version: [1.13.x, 1.14.x, 1.15.x] + runs-on: ${{ matrix.os }} + services: + redis: + image: redis + ports: + - 6379:6379 + steps: + - uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go-version }} + + - name: Build + run: go build -v ./... + + - name: Test + run: go test -race -v -coverprofile=coverage.txt -covermode=atomic ./... + + - name: Benchmark Test + run: go test -run=^$ -bench=. -loglevel=debug ./... + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v1 diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml deleted file mode 100644 index d881004..0000000 --- a/.github/workflows/go.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Go - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - - build: - runs-on: ubuntu-latest - services: - redis: - image: redis - ports: - - 6379:6379 - steps: - - uses: actions/checkout@v2 - - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.15 - - - name: Build - run: go build -v ./... - - - name: Test - run: go test -race -v ./... diff --git a/README.md b/README.md index 8f0a87b..cac886a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Asynq -![Build Status](https://github.com/hibiken/asynq/workflows/Go/badge.svg) +![Build Status](https://github.com/hibiken/asynq/workflows/build/badge.svg) [![GoDoc](https://godoc.org/github.com/hibiken/asynq?status.svg)](https://godoc.org/github.com/hibiken/asynq) [![Go Report Card](https://goreportcard.com/badge/github.com/hibiken/asynq)](https://goreportcard.com/report/github.com/hibiken/asynq) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)