You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

64 lines
2.4 KiB

name: Slash Command Action
on:
issue_comment:
types: [created]
jobs:
changelog:
if: |
github.event.issue.pull_request
&& contains(github.event.comment.body, '/changelog create')
&& (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER' || github.event.comment.author_association == 'COLLABORATOR')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Parse changelog command
id: parse_command
run: |
# Extract the full command body
command_body="${{ github.event.comment.body }}"
# Remove the command prefix to get the arguments
# Handles both -t and --type flag formats
parsed_body=$(echo "$command_body" | sed -E 's/\/changelog create (-t|--type) ([a-z]+) (.*)$/\2|\3/')
# The parsed output will be 'type|message'
changelog_type=$(echo "$parsed_body" | cut -d'|' -f1)
message=$(echo "$parsed_body" | cut -d'|' -f2)
# Set outputs for use in later steps
echo "changelog_type=$changelog_type" >> $GITHUB_OUTPUT
echo "message=$message" >> $GITHUB_OUTPUT
# check out our repo and install our requirements
- uses: actions/checkout@v4
with:
# issue_comment event runs on main, we need to checkout the PR
ref: refs/pull/${{ github.event.issue.number }}/head
fetch-depth: 0
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: 3.13
architecture: x64
- name: Install dependencies
run: ./script/bootstrap
# add the changelog entry
- name: Changelog Create
id: changelog
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
# Get the branch name from the PR using GitHub API
branch=$(curl -s -H "Authorization: token ${{ github.token }}" \
"https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.issue.number }}" | \
jq -r .head.ref)
echo "Branch: $branch"
./script/changelog create -c -t "${{ steps.parse_command.outputs.changelog_type }}" "${{ steps.parse_command.outputs.message }}"
git push origin HEAD:"$branch"