From 43566b770c09a2f800e7cfa84155258bbcdc6eec Mon Sep 17 00:00:00 2001 From: kawashima Date: Mon, 16 Oct 2023 11:57:10 +0900 Subject: [PATCH] ci: setup ci env --- .github/workflows/ci.yml | 60 +++++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 26 +++++++++++++++ .goreleaser.yml | 2 -- Makefile | 20 +++++++----- 4 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..cbae53c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: CI +on: + push: + branches: + - main + - master + paths-ignore: + - "README.md" + tags-ignore: + - "v[0-9]+.[0-9]+.[0-9]+" + pull_request: + branches: + - main + - master + paths-ignore: + - "README.md" + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup go + uses: actions/setup-go@v4 + with: + go-version: 1.21 + + - name: Unshallow + run: git fetch --prune --unshallow --tags + + - name: Build + run: make build + + - name: Run golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: v1.54 + args: --timeout=5m + + - name: Run govulncheck + uses: golang/govulncheck-action@v1 + with: + go-version-input: 1.21 + go-package: ./... + + - name: Run tests + run: | + git diff --cached --exit-code + make test + make bench + make vet + make cover + + - name: Archive code coverage results + uses: actions/upload-artifact@v3 + with: + name: code-coverage-report + path: cover.html diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..85f700c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,26 @@ +name: Release +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+" +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup go + uses: actions/setup-go@v4 + with: + go-version: 1.21 + + - name: Run goreleaser + uses: goreleaser/goreleaser-action@v4 + with: + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yml b/.goreleaser.yml index 8f4919c..88cd89b 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -11,14 +11,12 @@ builds: - -s -w - -X github.com/nekrassov01/alpen/main.Version={{.Version}} - -X github.com/nekrassov01/alpen/main.Revision={{.ShortCommit}} - - env: - CGO_ENABLED=0 goos: - linux - windows - darwin - archives: - format: tar.gz name_template: >- diff --git a/Makefile b/Makefile index 48f689c..cdbab49 100644 --- a/Makefile +++ b/Makefile @@ -21,10 +21,10 @@ export GO111MODULE=on .PHONY: build build: clean go mod tidy - go build -ldflags "-X main.Version=$(VERSION) -X main.Revision=$(REVISION)" -o $(BIN) + go build -ldflags "-X main.Version=$(VERSION) -X main.Revision=$(REVISION)" -o $(BIN) . .PHONY: check -check: test vet golangci-lint govulncheck +check: test bench vet cover golangci-lint govulncheck .PHONY: deps deps: @@ -44,7 +44,7 @@ golangci-lint: .PHONY: govulncheck govulncheck: deps - $(GOBIN)/govulncheck ./... + $(GOBIN)/govulncheck -test -json ./... .PHONY: show-version show-version: deps @@ -52,16 +52,20 @@ show-version: deps .PHONY: bump bump: deps - @gobump up -w . - -.PHONY: vet -vet: - go vet ./... + $(GOBIN)/gobump up -w . .PHONY: test test: go test -race -cover -v ./... -coverprofile=cover.out -covermode=atomic +.PHONY: bench +bench: + go test -bench . -benchmem + +.PHONY: vet +vet: + go vet ./... + .PHONY: cover cover: go tool cover -html=cover.out -o cover.html