Browse Source
feat: auto-generate changelog on release
feat: auto-generate changelog on release
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>pull/53054/head
1 changed files with 87 additions and 0 deletions
@ -0,0 +1,87 @@ |
|||
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors |
|||
# SPDX-License-Identifier: MIT |
|||
|
|||
name: Generate changelog on release |
|||
|
|||
on: |
|||
release: |
|||
types: [published] |
|||
|
|||
permissions: |
|||
contents: write |
|||
|
|||
jobs: |
|||
changelog_generate: |
|||
runs-on: ubuntu-latest |
|||
|
|||
# Only allowed to be run on nextcloud-releases repositories |
|||
if: ${{ github.repository_owner == 'nextcloud-releases' }} |
|||
|
|||
steps: |
|||
- name: Check actor permission |
|||
uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0 |
|||
with: |
|||
require: write |
|||
|
|||
- name: Checkout github_helper |
|||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
|||
with: |
|||
persist-credentials: false |
|||
repository: nextcloud/github_helper |
|||
path: github_helper |
|||
|
|||
- name: Checkout server |
|||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
|||
with: |
|||
persist-credentials: false |
|||
path: server |
|||
fetch-depth: 0 |
|||
|
|||
- name: Get previous tag |
|||
shell: bash |
|||
run: | |
|||
cd server |
|||
# Print all tags |
|||
git log --decorate --oneline | egrep '^[0-9a-f]+ \((HEAD, )?tag: ' | sed -r 's/^.+tag: ([^ ]+)[,\)].+$/\1/g' |
|||
# Get the current tag |
|||
TAGS=$(git log --decorate --oneline | egrep '^[0-9a-f]+ \((HEAD, )?tag: ' | sed -r 's/^.+tag: ([^ ]+)[,\)].+$/\1/g') |
|||
CURRENT_TAG=$(echo "$TAGS" | head -n 1) |
|||
# Get the previous tag that is not an rc, beta or alpha |
|||
PREVIOUS_TAG=$(echo "$TAGS" | grep -v 'rc\|beta\|alpha' | sed -n '2p') |
|||
echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV |
|||
echo "PREVIOUS_TAG=$PREVIOUS_TAG" >> $GITHUB_ENV |
|||
|
|||
- name: Verify current tag |
|||
run: | |
|||
if [ "${{ github.ref_name }}" != "${{ env.CURRENT_TAG }}" ]; then |
|||
echo "Current tag does not match the release tag. Exiting." |
|||
exit 1 |
|||
fi |
|||
|
|||
- name: Set up php 8.2 |
|||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0 |
|||
with: |
|||
php-version: 8.2 |
|||
coverage: none |
|||
ini-file: development |
|||
env: |
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|||
|
|||
- name: Set credentials |
|||
run: | |
|||
echo '{"username": "github-actions"}' > github_helper/credentials.json |
|||
|
|||
- name: Generate changelog between ${{ env.PREVIOUS_TAG }} and ${{ github.ref_name }} |
|||
env: |
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|||
run: | |
|||
cd github_helper/changelog |
|||
composer install |
|||
php index.php generate:changelog --no-bots --format=forum server ${{ env.PREVIOUS_TAG }} ${{ github.ref_name }} > changelog.md |
|||
|
|||
- name: Set changelog to release |
|||
env: |
|||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|||
run: | |
|||
cd server |
|||
gh release edit ${{ github.ref_name }} --notes-file "../github_helper/changelog/changelog.md" --title "${{ github.ref_name }}" |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue