Skip to content
Draft
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
83 changes: 83 additions & 0 deletions .github/release-drafter-template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# For core module (empty folder), we want:
# - tag: v1.0.0
# - name: v1.0.0
# For other modules (modulegen, modules/mssql), we want:
# - tag: modulegen/v1.0.0 or modules/mssql/v1.0.0
# - name: modulegen - v1.0.0 or modules/mssql - v1.0.0
name-template: '{{FOLDER}}{{FOLDER_SEP}}v$RESOLVED_VERSION'
tag-template: '{{FOLDER}}{{FOLDER_SLASH}}v$RESOLVED_VERSION'
tag-prefix: '{{FOLDER}}{{FOLDER_SLASH}}v'
include-paths:
- {{FOLDER_PATH}}
categories:
- title: ⚠️ Breaking Changes
labels:
- 'breaking change'
- title: 🔒 Security
labels:
- 'security'
- title: 🚀 Features
labels:
- 'enhancement'
- 'feature'
- title: 🐛 Bug Fixes
labels:
- 'bug'
- title: 📖 Documentation
labels:
- 'documentation'
- title: 🧹 Housekeeping
labels:
- 'chore'
- 'test flakiness'
- title: 📦 Dependency updates
label: 'dependencies'
change-template: '- $TITLE (#$NUMBER)'
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
exclude-contributors:
- dependabot
- dependabot[bot]
version-resolver:
major:
labels:
- 'breaking change'
minor:
labels:
- 'feature'
- 'security'
patch:
labels:
- 'bug'
- 'chore'
- 'documentation'
- 'dependencies'
default: patch
template: |
# What's Changed
$CHANGES

**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...{{FOLDER}}/v$RESOLVED_VERSION

Thank you $CONTRIBUTORS for making this update possible.
autolabeler:
- label: 'breaking change'
title:
- '/^[a-z]+(\(.+\))?!\:/'
- label: 'security'
title:
- '/^security(\(.+\))?!?\:/'
- label: 'feature'
title:
- '/^feat(\(.+\))?!?\:/'
- label: 'bug'
title:
- '/^(fix)(\(.+\))?!?\:/'
- label: 'documentation'
title:
- '/^docs(\(.+\))?!?\:/'
- label: 'chore'
title:
- '/^chore(\(.+\))?!?\:/'
- label: 'dependencies'
title:
- '/^deps(\(.+\))?!?\:/'
50 changes: 0 additions & 50 deletions .github/release-drafter.yml

This file was deleted.

71 changes: 69 additions & 2 deletions .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,81 @@ permissions:
contents: read

jobs:
detect-modules:
runs-on: ubuntu-latest
outputs:
modules: ${{ steps.set-modified-modules.outputs.modules }}
modules_count: ${{ steps.set-modified-modules-count.outputs.modules_count }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- id: changed-files
name: Get changed files
uses: tj-actions/changed-files@823fcebdb31bb35fdf2229d9f769b400309430d0 # v46.0.3

- id: set-modified-modules
name: Set all modified modules
env:
ALL_CHANGED_FILES: "${{ steps.changed-files.outputs.all_changed_files }}"
run: echo "modules=$(./scripts/changed-modules.sh)" >> $GITHUB_OUTPUT

- id: set-modified-modules-count
name: Set all modified modules count
run: echo "modules_count=$(echo ${{ toJSON(steps.set-modified-modules.outputs.modules) }} | jq '. | length')" >> $GITHUB_OUTPUT

- name: Print out the modules to be used
run: |
echo "${{ steps.set-modified-modules-count.outputs.modules_count }} modules in the build"
echo "${{ steps.set-modified-modules.outputs.modules }}"

update_release_draft:
needs: detect-modules
if: ${{ needs.detect-modules.outputs.modules_count > 0 }}
permissions:
contents: write # for release-drafter/release-drafter to create a github release
pull-requests: write # for release-drafter/release-drafter to add label to PR
runs-on: ubuntu-latest
strategy:
matrix:
module: ${{ fromJSON(needs.detect-modules.outputs.modules) }}
steps:
- uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0
- name: Check out code into the Go module directory
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
disable-autolabeler: false
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0

- name: Generate dynamic config from template
id: generate-config
run: |
folder="${{ matrix.module }}"
if [ -z "$folder" ]; then
# Core module
folder_sep=""
folder_slash=""
folder_filename="core"
folder_path="."
else
# Any other module
folder_sep=" - "
folder_slash="/"
# Sanitize folder name for filename by replacing / with -
folder_filename=$(echo "$folder" | tr '/' '-')
folder_path="$folder"
fi
sed -e "s|{{FOLDER}}|$folder|g" \
-e "s|{{FOLDER_SEP}}|$folder_sep|g" \
-e "s|{{FOLDER_PATH}}|$folder_path|g" \
-e "s|{{FOLDER_SLASH}}|$folder_slash|g" \
.github/release-drafter-template.yml > .github/release-drafter-$folder_filename.yml
echo "config<<EOF" >> $GITHUB_OUTPUT
cat .github/release-drafter-$folder_filename.yml >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Use dynamic release-drafter configuration
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: ReneWerner87/release-drafter@6dec4ceb1fb86b6514f11a2e7a39e1dedce709d0
with:
config: ${{ steps.generate-config.outputs.config }}
Loading