70 lines
2.3 KiB
YAML
70 lines
2.3 KiB
YAML
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
|
|
# SPDX-License-Identifier: MIT
|
|
name: Update PRs titles on stable branches
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, edited]
|
|
branches:
|
|
- "stable*"
|
|
|
|
concurrency:
|
|
group: stable-pr-title-${{ github.event.pull_request.number }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
update-pr-title:
|
|
runs-on: ubuntu-latest-low
|
|
permissions:
|
|
pull-requests: write
|
|
contents: read
|
|
|
|
steps:
|
|
- name: Wait for potential title edits
|
|
run: sleep 15
|
|
|
|
- name: Get PR details and update title
|
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
script: |
|
|
const { data: pr } = await github.rest.pulls.get({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
pull_number: context.issue.number,
|
|
});
|
|
|
|
const baseBranch = pr.base.ref;
|
|
const currentTitle = pr.title;
|
|
|
|
// Check if this is a stable branch
|
|
// Should not happen as we only trigger on stable* branches 🤷♀️
|
|
if (!baseBranch.startsWith('stable')) {
|
|
console.log(`Not a stable branch: ${baseBranch}`);
|
|
return;
|
|
}
|
|
|
|
const prefix = `[${baseBranch}]`;
|
|
|
|
// Check if title already has the correct prefix and no other stable tags
|
|
const correctTagRegex = new RegExp(`^\\[${baseBranch}\\]\\s*`);
|
|
const hasOtherStableTags = /\[stable[\d.]*\]/.test(currentTitle.replace(correctTagRegex, ''));
|
|
|
|
if (correctTagRegex.test(currentTitle) && !hasOtherStableTags) {
|
|
console.log(`Title already has correct prefix only: ${currentTitle}`);
|
|
return;
|
|
}
|
|
|
|
// Remove all stable tags and add the correct one
|
|
const cleanTitle = currentTitle.replace(/\[stable[\d.]*\]\s*/g, '').trim();
|
|
const newTitle = `${prefix} ${cleanTitle}`;
|
|
|
|
console.log(`Updating title from: "${currentTitle}" to: "${newTitle}"`);
|
|
|
|
await github.rest.pulls.update({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
pull_number: context.issue.number,
|
|
title: newTitle,
|
|
});
|