diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 000000000..b75873f80 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,92 @@ +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +name: release-please + +jobs: + release-please: + runs-on: ubuntu-latest + outputs: + release_created: "${{ steps.release-please.outputs.release_created }}" + release_tag: "${{ steps.release-please.outputs.tag_name }}" + + steps: + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + with: + # https://github.com/actions/checkout/issues/1467 + fetch-depth: 0 + + - uses: googleapis/release-please-action@7987652d64b4581673a76e33ad5e98e3dd56832f # v4.1.3 + id: release-please + with: + config-file: .release-please.json + manifest-file: .release-please-manifest.json + github-token: ${{ github.secret }} + + # If a release was created, also create the binaries and attach them + release-binaries: + runs-on: ubuntu-latest + needs: + - release-please + if: needs.release-please.outputs.release_created + + steps: + - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + with: + # https://github.com/actions/checkout/issues/1467 + fetch-depth: 0 + ref: "${{ needs.release-please.outputs.release_tag }}" + + - name: Look up release + id: lookup-release + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const currentTag = "${{ needs.release-please.outputs.release_tag }}"; + core.info(`Looking for release associated with '${currentTag}'`); + const release = await github.rest.repos.getReleaseByTag({owner: context.repo.owner, repo: context.repo.repo, tag: currentTag}); + core.info(`Release found: ${release.data.id}'`); + core.setOutput('release_id', release.data.id); + + + - uses: ./.github/actions/setup-goversion + + - name: Build binaries + run: make cross + + - name: Attach binaries + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + github-token: ${{ github.token }} + script: | + const path = require('node:path'); + const fs = require('node:fs/promises'); + + const releaseId = '${{ steps.lookup-release.outputs.release_id }}'; + const globber = await glob.create('dist/*'); + + for await (const file of globber.globGenerator()) { + const filename = path.basename(file); + try { + await github.rest.repos.uploadReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: releaseId, + name: filename, + data: await fs.readFile(file), + }); + } catch (e) { + if (e.status === 422) { + core.setFailed(`${filename} already attached to release`); + return; + } + throw e; + } + } + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index d170502e2..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Release - -on: - push: - tags: - - v* - -permissions: - contents: write - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - # https://github.com/actions/checkout/issues/1467 - fetch-depth: 0 - - uses: ./.github/actions/setup-goversion - - run: make cross - - id: docker_tag - run: echo "DOCKER_TAG=${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV" - - name: Release - uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v2.0.9 - with: - body: | - This is release `${{ github.ref_name }}` of Tanka (`tk`). - - ## Install instructions - - #### Binary: - ```bash - # download the binary (adapt os and arch as needed) - $ curl -fSL -o "/usr/local/bin/tk" "https://github.com/grafana/tanka/releases/download/${{ github.ref_name }}/tk-linux-amd64" - - # make it executable - $ chmod a+x "/usr/local/bin/tk" - - # have fun :) - $ tk --help - ``` - - #### Docker container: - https://hub.docker.com/r/grafana/tanka - ```bash - $ docker pull grafana/tanka:${{ env.DOCKER_TAG }} - ``` - draft: true - files: | - dist/* diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 000000000..2d8c67d51 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1 @@ +{".": "0.28.3"} diff --git a/.release-please.json b/.release-please.json new file mode 100644 index 000000000..31be90c2d --- /dev/null +++ b/.release-please.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "changelog-sections": [ + { + "section": "🎉 Features", + "type": "feat" + }, + { + "section": "🐛 Bug Fixes", + "type": "fix" + }, + { + "section": "⚡ Performance Improvements", + "type": "perf" + }, + { + "section": "🔗 Dependencies", + "type": "deps" + }, + { + "section": "📝 Documentation", + "type": "docs" + }, + { + "section": "🏗️ Build System", + "type": "build" + }, + { + "section": "🤖 Continuous Integration", + "type": "ci" + }, + { + "section": "🔧 Miscellaneous Chores", + "type": "chore" + }, + { + "section": "⏪ Reverts", + "type": "revert" + }, + { + "section": "✅ Tests", + "type": "test" + }, + { + "section": "💄 Style", + "type": "style" + }, + { + "section": "♻️ Code Refactoring", + "type": "refactor" + } + ], + "draft-pull-request": true, + "include-v-in-tag": true, + "packages": { + ".": { + } + }, + "release-type": "go" +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 76fbbe1fb..1bdd2e5f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -For releases from v0.24.0 forward, you can find the changelog in Github releases: https://github.com/grafana/tanka/releases +For releases from v0.24.0 to v0.28.3, you can find the changelog in the GitHub releases: https://github.com/grafana/tanka/releases ## 0.23.1 (2022-09-28)