diff --git a/.github/workflows/sync-template.yml b/.github/workflows/sync-template.yml new file mode 100644 index 0000000..dc92ad5 --- /dev/null +++ b/.github/workflows/sync-template.yml @@ -0,0 +1,49 @@ +name: Sync branch to template + +on: + workflow_dispatch: + schedule: + - cron: '14 0 1 * *' + +jobs: + sync: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get GitHub App token + uses: tibdex/github-app-token@v1.7.0 + id: get_installation_token + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.APP_PRIVATE_KEY }} + + - name: Sync branch to template + env: + GH_TOKEN: ${{ steps.get_installation_token.outputs.token }} + IGNORE_FILES: "README.md another-file.txt" + run: | + branch_name=$(git rev-parse --abbrev-ref HEAD) + original_remote=$(git remote get-url origin) + pr_branch="sync-template/${branch_name}" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "github-actions[bot]" + git checkout -b "$pr_branch" + git clone https://github.com/ubiquity/ts-template + for file in $IGNORE_FILES; do + rm -rf "ts-template/$file" + done + cp -rf ts-template/* . + rm -rf ts-template/ + git add . + git commit -m "chore: sync template" + git push "$original_remote" "$pr_branch" + gh pr create --title "Sync branch to template" --body "This pull request merges changes from the template repository." --head "$pr_branch" --base "$branch_name" + +