mirror of
https://github.com/jimeh/envctl.git
synced 2026-02-19 12:06:40 +00:00
ci(github): add basic GitHub Actions CI tasks
This commit is contained in:
139
.github/workflows/ci.yml
vendored
Normal file
139
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
---
|
||||||
|
name: CI
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
name: Lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: golangci-lint
|
||||||
|
uses: golangci/golangci-lint-action@v2
|
||||||
|
with:
|
||||||
|
version: v1.35
|
||||||
|
env:
|
||||||
|
VERBOSE: "true"
|
||||||
|
|
||||||
|
tidy:
|
||||||
|
name: Tidy
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: 1.15
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/go/pkg/mod
|
||||||
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-go-
|
||||||
|
- name: Check if mods are tidy
|
||||||
|
run: make check-tidy
|
||||||
|
|
||||||
|
benchmark:
|
||||||
|
name: Benchmarks
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.ref != 'refs/heads/master'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: 1.15
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/go/pkg/mod
|
||||||
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-go-
|
||||||
|
- name: Run benchmarks
|
||||||
|
run: make bench | tee output.raw
|
||||||
|
- name: Fix benchmark names
|
||||||
|
run: >-
|
||||||
|
perl -pe 's/^(Benchmark.+?)\/(\S+)(-\d+)(\s+)/\1__\2\4/' output.raw |
|
||||||
|
tr '-' '_' | tee output.txt
|
||||||
|
- name: Announce benchmark result
|
||||||
|
uses: rhysd/github-action-benchmark@v1
|
||||||
|
with:
|
||||||
|
tool: "go"
|
||||||
|
output-file-path: output.txt
|
||||||
|
fail-on-alert: true
|
||||||
|
comment-on-alert: true
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
auto-push: false
|
||||||
|
|
||||||
|
cov:
|
||||||
|
name: Coverage
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: 1.15
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/go/pkg/mod
|
||||||
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-go-
|
||||||
|
- name: Publish coverage
|
||||||
|
uses: paambaati/codeclimate-action@v2.7.4
|
||||||
|
env:
|
||||||
|
VERBOSE: "true"
|
||||||
|
GOMAXPROCS: 4
|
||||||
|
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||||
|
with:
|
||||||
|
coverageCommand: make cov
|
||||||
|
prefix: github.com/${{ github.repository }}
|
||||||
|
coverageLocations: |
|
||||||
|
${{ github.workspace }}/coverage.out:gocov
|
||||||
|
|
||||||
|
test:
|
||||||
|
name: Test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: 1.15
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/go/pkg/mod
|
||||||
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-go-
|
||||||
|
- name: Run tests
|
||||||
|
run: make test
|
||||||
|
env:
|
||||||
|
VERBOSE: "true"
|
||||||
|
|
||||||
|
benchmark-store:
|
||||||
|
name: Store benchmarks
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.ref == 'refs/heads/master'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: 1.15
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/go/pkg/mod
|
||||||
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-go-
|
||||||
|
- name: Run benchmarks
|
||||||
|
run: make bench | tee output.raw
|
||||||
|
- name: Fix benchmark names
|
||||||
|
run: >-
|
||||||
|
perl -pe 's/^(Benchmark.+?)\/(\S+)(-\d+)(\s+)/\1__\2\4/' output.raw |
|
||||||
|
tr '-' '_' | tee output.txt
|
||||||
|
- name: Store benchmark result
|
||||||
|
uses: rhysd/github-action-benchmark@v1
|
||||||
|
with:
|
||||||
|
tool: "go"
|
||||||
|
output-file-path: output.txt
|
||||||
|
github-token: ${{ secrets.GH_PUSH_TOKEN }}
|
||||||
|
comment-on-alert: true
|
||||||
|
auto-push: true
|
||||||
Reference in New Issue
Block a user