Skip to content

Generate Template

Generate Template #28

name: Generate Template
on:
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
generate-template:
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0
token: ${{ secrets.PAT_TOKEN }}
- name: Configure Git for push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git remote set-url origin "https://${{ secrets.PAT_TOKEN }}@github.com/${{ github.repository }}.git"
- name: Prepare or reuse generated-template branch
id: prepare_branch
run: |
BRANCH="generated-template"
git fetch origin
if git show-ref --verify --quiet refs/remotes/origin/$BRANCH; then
echo "Branch exists — checking it out."
git checkout $BRANCH
git pull origin $BRANCH
else
echo "Branch does not exist — creating it."
git checkout -b $BRANCH
git push -u origin $BRANCH
fi
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
- name: Make script executable
run: chmod +x ./generate-cookiecutter-template-from-example-project.sh
- name: Generate cookiecutter template
run: ./generate-cookiecutter-template-from-example-project.sh
- name: Copy generated template to {{cookiecutter.app_name}}
run: |
rsync -a --delete --exclude='.git' ./example-template/ ./{{cookiecutter.app_name}}/
- name: Commit and push changes
id: commit
run: |
git add .
if git diff --cached --quiet; then
echo "no_changes=true" >> $GITHUB_OUTPUT
echo "✅ No changes detected."
else
git commit -m "ci: update generated cookiecutter template from example"
git push origin generated-template
sleep 10
echo "no_changes=false" >> $GITHUB_OUTPUT
fi
- name: Create or update Pull Request
if: steps.commit.outputs.no_changes == 'false'
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.PAT_TOKEN }} # ✅ use same working PAT
base: main
branch: ${{ steps.prepare_branch.outputs.branch }}
title: "ci: update generated cookiecutter template from example"
body: |
This PR was created automatically by the Generate Template workflow.
It contains updates generated from the example project.
commit-message: "ci: update generated cookiecutter template from example"
labels: automated-pr
delete-branch: false