From 062da82dc40755ea498cf54fb35de88ef1c9a6e4 Mon Sep 17 00:00:00 2001 From: Aleksey Khorev Date: Sat, 19 Dec 2020 18:24:11 +0300 Subject: [PATCH] add GHA --- .github/workflows/go.yml | 24 ++++++++++++++ .github/workflows/lint.yml | 59 ++++++++++++++++++++++++++++++++++ .github/workflows/release.yaml | 24 ++++++++++++++ .idea/CodeReadingNote.xml | 7 ++++ 4 files changed, 114 insertions(+) create mode 100644 .github/workflows/go.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/release.yaml create mode 100644 .idea/CodeReadingNote.xml diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml new file mode 100644 index 0000000..0a2c0a5 --- /dev/null +++ b/.github/workflows/go.yml @@ -0,0 +1,24 @@ +name: Tests +on: [push, pull_request] +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + runs-on: ${{ matrix.os }} + + steps: + - name: Set up Go 1.15 + uses: actions/setup-go@v2 + with: + go-version: 1.15 + + - name: Check out code + uses: actions/checkout@v2 + + - name: Download dependencies + run: go mod download + + - name: Run tests + run: go test -v -test.short ./... diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..4865099 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,59 @@ +name: Lint +on: + push: + paths: + - "**.go" + - go.mod + - go.sum + pull_request: + paths: + - "**.go" + - go.mod + - go.sum + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Set up Go 1.15 + uses: actions/setup-go@v2 + with: + go-version: 1.15 + + - name: Check out code + uses: actions/checkout@v2 + + - name: Verify dependencies + run: | + go mod verify + go mod download + + LINT_VERSION=1.29.0 + curl -fsSL https://github.com/golangci/golangci-lint/releases/download/v${LINT_VERSION}/golangci-lint-${LINT_VERSION}-linux-amd64.tar.gz | \ + tar xz --strip-components 1 --wildcards \*/golangci-lint + mkdir -p bin && mv golangci-lint bin/ + + - name: Run checks + run: | + STATUS=0 + assert-nothing-changed() { + local diff + "$@" >/dev/null || return 1 + if ! diff="$(git diff -U1 --color --exit-code)"; then + printf '\e[31mError: running `\e[1m%s\e[22m` results in modifications that you must check into version control:\e[0m\n%s\n\n' "$*" "$diff" >&2 + git checkout -- . + STATUS=1 + fi + } + + assert-nothing-changed go fmt ./... + assert-nothing-changed go mod tidy + + while read -r file linter msg; do + IFS=: read -ra f <<<"$file" + printf '::error file=%s,line=%s,col=%s::%s\n' "${f[0]}" "${f[1]}" "${f[2]}" "[$linter] $msg" + STATUS=1 + done < <(bin/golangci-lint run --out-format tab) + + exit $STATUS \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..7ae3f87 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,24 @@ +name: Release +on: + push: + tags: + - v[0-9]+\.[0-9]+\.[0-9]+ +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Go 1.15 + uses: actions/setup-go@v2 + with: + go-version: 1.15 + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.idea/CodeReadingNote.xml b/.idea/CodeReadingNote.xml new file mode 100644 index 0000000..2a0133f --- /dev/null +++ b/.idea/CodeReadingNote.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file