diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 25575c19..029d9360 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,32 +1 @@ -# FIX | FEAT | REFACTOR | PERF | DOCS : TITLE - -- closes #TICKET_NUMBER - -## Description - -[JIRA LINK] - -Acceptance Criterias - -## Validation - -- [ ] Storybook add or modified -- [ ] version Update in package.json and Release.md -- [ ] Code Approved -- [ ] QA Done -- [ ] Design/UI Approved from design - -## Screenshot -### Before - -### After - -## QA - -Steps to validate -Url (storybook, ...) -... - -## Mention - -@kstonge @luclemo +Generating Content .... diff --git a/.github/workflows/create_pr_template.yml b/.github/workflows/create_pr_template.yml new file mode 100644 index 00000000..66481912 --- /dev/null +++ b/.github/workflows/create_pr_template.yml @@ -0,0 +1,108 @@ +name: Update Pull Request Template +on: + pull_request: + types: [opened, edited] + +jobs: + update-pr-template: + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: read + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.head.sha }} + + - name: Extract commit parts + id: extract_parts + shell: bash + run: | + COMMIT_MESSAGE=$(git log -1 --pretty=%B) + echo "Commit message: $COMMIT_MESSAGE" + + # Simpler regex pattern that's more forgiving + if [[ "$COMMIT_MESSAGE" =~ ^([^(:]+)(\(([^)]*)\))?:[[:space:]]*([A-Z]+-[0-9]+)?[[:space:]]*(.+)$ ]]; then + echo "type=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT + echo "scope=${BASH_REMATCH[3]:-}" >> $GITHUB_OUTPUT + echo "ticket=${BASH_REMATCH[4]:-}" >> $GITHUB_OUTPUT + echo "subject=${BASH_REMATCH[5]}" >> $GITHUB_OUTPUT + + # Debug output + echo "Extracted parts:" + echo "Type: ${BASH_REMATCH[1]}" + echo "Full scope: ${BASH_REMATCH[2]}" + echo "Scope content: ${BASH_REMATCH[3]}" + echo "Ticket: ${BASH_REMATCH[4]}" + echo "Subject: ${BASH_REMATCH[5]}" + else + echo "Invalid commit message format. Expected: type(scope): TICKET-123 subject" + echo "Received: $COMMIT_MESSAGE" + exit 1 + fi + + - name: Generate PR body + id: generate_body + shell: bash + run: | + TYPE="${{ steps.extract_parts.outputs.type }}" + SCOPE="${{ steps.extract_parts.outputs.scope }}" + TICKET="${{ steps.extract_parts.outputs.ticket }}" + SUBJECT="${{ steps.extract_parts.outputs.subject }}" + + cat << EOF > pr_body.md + # ${TYPE}${SCOPE:+($SCOPE)}: ${SUBJECT} + + ${TICKET:+- Closes ${TICKET}} + + ## Description + + + ## Acceptance Criterias + + + ## Links + - [JIRA](https://ferlab-crsj.atlassian.net/browse/${TICKET}) + - [Design](https://) + + ## Extra Validation + - [ ] Reviewer video or screenshots attached + - [ ] QA Done + - [ ] Design/UI Approved from design + + ## Screenshot or Video + ### Before + + + ### After + + + ## QA + ### Steps to validate + + 1. + 2. + + ## Mention + + EOF + + PR_BODY=$(cat pr_body.md) + echo "pr_body<> $GITHUB_OUTPUT + echo "$PR_BODY" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Update PR + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + await github.rest.pulls.update({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.issue.number, + body: `${{ steps.generate_body.outputs.pr_body }}` + }); +