Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ci): add release-please for release-automation #1195

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions .github/workflows/release-binaries.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Release binaries

on:
release:
types:
- created

jobs:
build-binaries:
runs-on: ubuntu-latest
steps:
- id: get-secrets
uses: grafana/shared-workflows/actions/get-vault-secrets@main
with:
repo_secrets: |
TANKABOT_APP_ID=tankabot_app:id
TANKABOT_APP_PRIVATE_KEY=tankabot_app:private_key

- uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0
id: app-token
with:
app-id: ${{ env.TANKABOT_APP_ID }}
private-key: ${{ env.TANKABOT_APP_PRIVATE_KEY }}

# At first we should wait for a release to be created by the
# release-please workflow
- name: Check for release
id: lookup-release
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const timers = require('node:timers/promises');
const ref = context.ref;
if (!ref.startsWith('refs/tags/')) {
core.setFailed('Not a valid ref');
return;
}
const currentTag = ref.substring('refs/tags/'.length);
core.info(`Looking for release associated with '${currentTag}'`);
let remainingAttempts = 6;
while (remainingAttempts > 0) {
try {
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);
return;
} catch (e) {
if (remainingAttempts === 1) {
if (e.status !== 404) {
console.log(e);
}
}
remainingAttempts -= 1;
await timers.setTimeout(10000);
}
}
core.setFailed('Release not found');

- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with:
# https://github.com/actions/checkout/issues/1467
fetch-depth: 0

- 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: ${{ steps.app-token.outputs.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;
}
}

33 changes: 33 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
on:
push:
branches:
- main

permissions:
contents: write
pull-requests: write

name: release-please

jobs:
release-please:
runs-on: ubuntu-latest
steps:
- id: get-secrets
uses: grafana/shared-workflows/actions/get-vault-secrets@main
with:
repo_secrets: |
TANKABOT_APP_ID=tankabot_app:id
TANKABOT_APP_PRIVATE_KEY=tankabot_app:private_key

- uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0
id: app-token
with:
app-id: ${{ env.TANKABOT_APP_ID }}
private-key: ${{ env.TANKABOT_APP_PRIVATE_KEY }}

- uses: googleapis/release-please-action@7987652d64b4581673a76e33ad5e98e3dd56832f # v4.1.3
with:
config-file: .release-please.json
manifest-file: .release-please-manifest.json
github-token: ${{ steps.app-token.outputs.token }}
50 changes: 0 additions & 50 deletions .github/workflows/release.yml

This file was deleted.

1 change: 1 addition & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{".": "0.28.3"}
60 changes: 60 additions & 0 deletions .release-please.json
Original file line number Diff line number Diff line change
@@ -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"
}
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)

Expand Down
Loading