Release #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# Workflow for triggering a release. | |
name: Release | |
on: | |
schedule: | |
- cron: '0 0 * * *' | |
workflow_dispatch: # Dispatch runs build and validate, then push to the appropriate storage location. | |
inputs: | |
type: | |
description: Build Type | |
default: nightly | |
required: true | |
version: | |
description: Version Tag | |
default: nightly | |
required: true | |
concurrency: # This keeps multiple instances of the job from running concurrently for the same ref and event type. | |
group: release-${{ github.ref }}-${{ github.event_name }} | |
cancel-in-progress: true | |
jobs: | |
update-changelogs: | |
name: Update changelog | |
runs-on: ubuntu-latest | |
outputs: | |
ref: ${{ steps.target.outputs.ref }} | |
version: ${{ steps.target.outputs.version }} | |
type: ${{ steps.target.outputs.type }} | |
run: ${{ steps.target.outputs.run }} | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
- name: Prepare base ref | |
id: target | |
run: >- | |
.github/scripts/prepare-release-base.sh \ | |
${{ github.repository }} \ | |
${{ github.event_name }} \ | |
${{ github.event.inputs.type }} \ | |
${{ github.event.inputs.version }} \ | |
${{ secrets.NETDATA_RELEASE_TEST }} | |
- name: Generate Nightly Changleog | |
id: nightly-changelog | |
if: steps.target.outputs.run == 'true' && steps.target.outputs.type == 'nightly' | |
uses: heinrichreimer/[email protected] | |
with: | |
bugLabels: IGNOREBUGS | |
excludeLabels: "stale,duplicate,question,invalid,wontfix,discussion,no changelog" | |
issues: false | |
sinceTag: v1.10.0 | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
unreleasedLabel: "**Next release**" | |
verbose: true | |
maxIssues: 500 | |
- name: Generate Release Changelog | |
id: release-changelog | |
if: steps.target.outputs.run == 'true' && steps.target.outputs.type != 'nightly' | |
uses: heinrichreimer/[email protected] | |
with: | |
bugLabels: IGNOREBUGS | |
excludeLabels: "stale,duplicate,question,invalid,wontfix,discussion,no changelog" | |
futureRelease: ${{ github.event.inputs.version }} | |
issues: false | |
sinceTag: v1.10.0 | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
unreleasedLabel: "**Next release**" | |
verbose: true | |
maxIssues: 500 | |
- name: Commit Changes | |
id: commit | |
if: steps.target.outputs.run == 'true' | |
env: | |
GITHUB_TOKEN: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
run: | | |
git config user.name "netdatabot" | |
git config user.email "[email protected]" | |
git add packaging/version CHANGELOG.md | |
git commit -m "[ci skip] ${{ steps.target.outputs.message }}" | |
if [ "${{ steps.target.outputs.type }}" != "nightly" ]; then | |
git tag -a "${{ github.event.inputs.version }}" -m "${{ steps.target.outputs.message }}" | |
fi | |
if [ -n "${{ steps.target.outputs.new-branch }}" ]; then | |
git branch "${{ steps.target.outputs.new-branch }}" | |
fi | |
git push --tags origin "${{ steps.target.outputs.branch }}" | |
if [ -n "${{ steps.target.outputs.new-branch }}" ]; then | |
git push origin "${{ steps.target.outputs.new-branch }}" | |
fi | |
- name: Failure Notification | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_COLOR: 'danger' | |
SLACK_FOOTER: '' | |
SLACK_ICON_EMOJI: ':github-actions:' | |
SLACK_TITLE: 'Failed to prepare changelog:' | |
SLACK_USERNAME: 'GitHub Actions' | |
SLACK_MESSAGE: |- | |
${{ github.repository }}: Failed to prepare changelog. | |
Checkout: ${{ steps.checkout.outcome }} | |
Prepare base ref: ${{ steps.target.outcome }} | |
Generate nightly changelog: ${{ steps.nightly-changelog.outcome }} | |
Generate release changelog: ${{ steps.release-changelog.outcome }} | |
Commit changes: ${{ steps.commit.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: failure() | |
trigger-artifacts: | |
name: Trigger artifact builds | |
runs-on: ubuntu-latest | |
needs: update-changelogs | |
if: needs.update-changelogs.outputs.run == 'true' | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.update-changelogs.outputs.ref }} | |
- name: Trigger build | |
id: trigger | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
repo: ${{ github.repository }} | |
workflow: build.yml | |
ref: ${{ needs.update-changelogs.outputs.ref }} | |
inputs: '{"version": "${{ needs.update-changelogs.outputs.version }}", "type": "${{ needs.update-changelogs.outputs.type }}"}' | |
- name: Failure Notification | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_COLOR: 'danger' | |
SLACK_FOOTER: '' | |
SLACK_ICON_EMOJI: ':github-actions:' | |
SLACK_TITLE: 'Failed to trigger ${{ needs.update-changelogs.outputs.type }} artifact builds:' | |
SLACK_USERNAME: 'GitHub Actions' | |
SLACK_MESSAGE: |- | |
${{ github.repository }}: Failed to trigger ${{ needs.update-changelogs.outputs.type }} artifact builds. | |
Checkout: ${{ steps.checkout.outcome }} | |
Trigger build: ${{ steps.trigger.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: failure() | |
trigger-docker: | |
name: Trigger docker builds | |
runs-on: ubuntu-latest | |
needs: update-changelogs | |
if: needs.update-changelogs.outputs.run == 'true' | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.update-changelogs.outputs.ref }} | |
- name: Trigger build | |
id: trigger | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
repo: ${{ github.repository }} | |
workflow: docker.yml | |
ref: ${{ needs.update-changelogs.outputs.ref }} | |
inputs: '{"version": "${{ needs.update-changelogs.outputs.version }}"}' | |
- name: Failure Notification | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_COLOR: 'danger' | |
SLACK_FOOTER: '' | |
SLACK_ICON_EMOJI: ':github-actions:' | |
SLACK_TITLE: 'Failed to trigger ${{ needs.update-changelogs.outputs.type }} Docker builds:' | |
SLACK_USERNAME: 'GitHub Actions' | |
SLACK_MESSAGE: |- | |
${{ github.repository }}: Failed to trigger ${{ needs.update-changelogs.outputs.type }} Docker builds. | |
Checkout: ${{ steps.checkout.outcome }} | |
Trigger build: ${{ steps.trigger.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: failure() | |
trigger-packages: | |
name: Trigger package builds | |
runs-on: ubuntu-latest | |
needs: update-changelogs | |
if: needs.update-changelogs.outputs.run == 'true' | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.update-changelogs.outputs.ref }} | |
- name: Trigger build | |
id: trigger | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
repo: ${{ github.repository }} | |
workflow: packaging.yml | |
ref: ${{ needs.update-changelogs.outputs.ref }} | |
inputs: '{"version": "${{ needs.update-changelogs.outputs.version }}", "type": "${{ needs.update-changelogs.outputs.type }}"}' | |
- name: Failure Notification | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_COLOR: 'danger' | |
SLACK_FOOTER: '' | |
SLACK_ICON_EMOJI: ':github-actions:' | |
SLACK_TITLE: 'Failed to trigger ${{ needs.update-changelogs.outputs.type }} package builds:' | |
SLACK_USERNAME: 'GitHub Actions' | |
SLACK_MESSAGE: |- | |
${{ github.repository }}: Failed to trigger ${{ needs.update-changelogs.outputs.type }} package builds. | |
Checkout: ${{ steps.checkout.outcome }} | |
Trigger build: ${{ steps.trigger.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: failure() |