123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- ---
- # 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/github-changelog-generator-action@v2.4
- 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/github-changelog-generator-action@v2.4
- 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 "bot@netdata.cloud"
- 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()
|