Skip to main content

Release & Notifications

Five workflows handle the release lifecycle — from generating changelogs and cutting GitHub releases to sending formatted Slack notifications.


release-tag​

Automate semantic versioning with tag creation and changelog generation — analyzes conventional commit messages to determine whether to bump the major, minor, or patch version, creates a git tag, and generates a CHANGELOG.md entry.

View workflow →

When to use: On pushes to your main branch to automatically version your project.

on:
push:
branches: [master]

jobs:
release:
uses: clouddrove/github-shared-workflows/.github/workflows/release-tag.yml@master
with:
target_branch: master # default: master
secrets:
GITHUB: ${{ secrets.GITHUB_TOKEN }}

Version bump rules (based on commit type):

  • feat: → minor bump (1.0.0 → 1.1.0)
  • fix:, docs:, chore: → patch bump (1.0.0 → 1.0.1)
  • feat!: or BREAKING CHANGE: → major bump (1.0.0 → 2.0.0)

release-changelog​

Generate a changelog and create a GitHub release — reads conventional commits since the last tag, generates a formatted CHANGELOG.md, and publishes a GitHub release with release notes.

View workflow →

on:
push:
tags:
- 'v*'

jobs:
changelog:
uses: clouddrove/github-shared-workflows/.github/workflows/release-changelog.yml@master
with:
branch: master # required
secrets:
GITHUB: ${{ secrets.GITHUB_TOKEN }}
InputRequiredDescription
branchYesBranch to generate changelog from

release-changelog-internal​

Internal changelog generation on tag push — a variant of release-changelog used within the shared-workflows repo itself. Typically you would use release-changelog instead.

View workflow →

on:
push:
tags:
- 'v*'

jobs:
changelog:
uses: clouddrove/github-shared-workflows/.github/workflows/release-changelog-internal.yml@master
with:
branch: master
secrets:
GITHUB: ${{ secrets.GITHUB_TOKEN }}

notify-slack​

Send formatted Slack notifications with CloudDrove branding — posts a rich Slack message with customizable status, title, fields, body text, and a call-to-action button.

View workflow →

When to use: Notify your team about deployment completions, failures, or any significant pipeline event.

jobs:
deploy:
uses: clouddrove/github-shared-workflows/.github/workflows/tf-workflow.yml@master
# ...

notify:
needs: deploy
if: always()
uses: clouddrove/github-shared-workflows/.github/workflows/notify-slack.yml@master
with:
channel: "#deployments"
title: "Production Deploy"
status: ${{ needs.deploy.result }} # success | failure | cancelled
fields_json: |
[
{"title": "Repo", "value": "${{ github.repository }}", "short": true},
{"title": "Branch", "value": "${{ github.ref_name }}", "short": true}
]
body_md: "Deployment triggered by ${{ github.actor }}"
button_text: "View Run"
button_url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
secrets:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
InputRequiredDefaultDescription
channelYes—Slack channel name (e.g., #deployments)
titleYes—Notification title
statusNosuccesssuccess, failure, or cancelled
fields_jsonNo—JSON array of Slack attachment fields
body_mdNo—Markdown body text
button_textNo—Call-to-action button label
button_urlNo—Call-to-action button URL
brandNoCloudDroveBranding name shown in footer
Always-run notifications

Use if: always() on the notify job so it runs even when the previous job fails, giving your team visibility into failures.