From 7fb50bd56e50df885cea9ca16f9450d9581ebef7 Mon Sep 17 00:00:00 2001 From: Prasad Ghangal Date: Wed, 31 Mar 2021 12:46:10 +0530 Subject: [PATCH] Add release process (#42) Co-authored-by: Vishal --- .github/workflows/go.yml | 8 +++++++ .goreleaser.yml | 34 +++++++++++++++++++++++++++++ .release | 1 + build/release.sh | 46 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 .goreleaser.yml create mode 100644 .release create mode 100755 build/release.sh diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index b56312c..49f128c 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -23,3 +23,11 @@ jobs: - name: Test run: go test -v ./... + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..1da9d23 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,34 @@ +before: + hooks: + - go mod download +builds: +- id: kbrew + binary: kbrew + main: cmd/cli/main.go + env: + - CGO_ENABLED=0 + goos: + - linux + - windows + goarch: + - 386 + - amd64 + - arm + - arm64 +archives: +- replacements: + darwin: Darwin + linux: Linux + windows: Windows + 386: i386 + amd64: x86_64 +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ .Tag }}" +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' diff --git a/.release b/.release new file mode 100644 index 0000000..cc03ca2 --- /dev/null +++ b/.release @@ -0,0 +1 @@ +release=v0.0.0 diff --git a/build/release.sh b/build/release.sh new file mode 100755 index 0000000..20444c4 --- /dev/null +++ b/build/release.sh @@ -0,0 +1,46 @@ +set -e + +version=$(cut -d'=' -f2- .release) +if [[ -z ${version} ]]; then + echo "Invalid version set in .release" + exit 1 +fi + + +if [[ -z ${GITHUB_TOKEN} ]]; then + echo "GITHUB_TOKEN not set. Usage: GITHUB_TOKEN= ./hack/release.sh" + exit 1 +fi + +echo "Publishing release ${version}" + +generate_changelog() { + local version=$1 + + # generate changelog from github + github_changelog_generator --user kbrew-dev --project kbrew -t ${GITHUB_TOKEN} --future-release ${version} -o CHANGELOG.md + sed -i '$d' CHANGELOG.md +} + +git_tag() { + local version=$1 + echo "Creating a git tag" + git add .release CHANGELOG.md + git commit -m "Release ${version}" + git tag ${version} + git push --tags origin main + echo 'Git tag pushed successfully' +} + +make_release() { + goreleaser release --rm-dist --debug +} + +generate_changelog $version +git_tag $version +make_release + +echo "=========================== Done =============================" +echo "Congratulations!! Release ${version} published." +echo "Don't forget to add changelog in the release description." +echo "=============================================================="