From 9f14c3f0f5291e701e5a0ef34cb424dd0dcdeec7 Mon Sep 17 00:00:00 2001 From: roopeshsn Date: Wed, 23 Apr 2025 18:06:48 +0530 Subject: [PATCH] Add workflow to automate release process --- .github/workflows/release.yml | 47 +++++++++++++++++++++++++++++++++++ Makefile | 5 ++++ 2 files changed, 52 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..d76e786 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +name: Automated Release +on: + push: + tags: + - 'v*' +jobs: + test: + name: Run Unit Tests + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.24.0 + - name: Display the version of go that we have installed + run: go version + release: + name: Release + runs-on: ubuntu-latest + needs: test + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.24.0 + - name: Display the version of go that we have installed + run: go version + - name: Extract tag version + id: get_tag + run: echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + - name: Create GitHub Release with Notes + id: create_release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.get_tag.outputs.version }} + name: Release ${{ steps.get_tag.outputs.version }} + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/Makefile b/Makefile index 91fb0ef..bbe0329 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,11 @@ unittest: unittestwithcover: $(GOFOLDERS) | xargs $(GO) test -cover $(GOTEST_FLAGS) -timeout=$(TEST_TIMEOUT) -run UnitTest$ +# To create a new release: `make release VERSION=v0.2.0` +release: + git tag $(VERSION) + git push origin $(VERSION) + COVER_PKGS := `find . -name '*_test.go' ! -path "./.git/*" ! -path "./Godeps/*" ! -path "./vendor/*" | xargs -I{} dirname {} | sort -u` coverdata: echo 'mode: $(COVER_MODE)' > $(COVER_TMPFILE)