Generate Template #28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |