Generate Template #17
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 branch | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: main | |
| token: ${{ secrets.PAT_TOKEN || secrets.GITHUB_TOKEN }} | |
| persist-credentials: true | |
| fetch-depth: 0 | |
| - name: Prepare or reuse generated-template branch | |
| id: prepare_branch | |
| run: | | |
| BRANCH="generated-template" | |
| git fetch origin | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git config user.name "github-actions[bot]" | |
| if git show-ref --verify --quiet refs/remotes/origin/$BRANCH; then | |
| echo "Branch exists — checking out and pulling latest" | |
| git checkout $BRANCH | |
| git pull origin $BRANCH | |
| else | |
| echo "Branch does not exist — creating new one" | |
| git checkout -b $BRANCH | |
| git push --set-upstream 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 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 | |
| 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.GITHUB_TOKEN }} | |
| 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 |