66
77# 🚨 GITHUB SECRETS REQUIRED:
88# - UPDATE_FROM_TEMPLATE_PAT: A fine-grained Personal Access Token.
9- # This token is used to access the project repository and create the Pull Request .
9+ # This token is used to commit and push to the project repository .
1010# You can generate one from here: https://github.com/settings/tokens?type=beta
1111# Set the Repository access to "Only select repositories" and select the project repository.
1212# Set the following Repo permissions:
1313# - Contents: Read & write (to commit and push the update branch to the project repository)
1414# - Metadata: Read-only (mandatory by GitHub)
15- # - Pull requests: Read & write (to create the Pull Request in the project repository)
1615# - Workflows: Read and write (to create, update and delete workflows in the project repository)
1716# Make sure to add it to the repo secrets with the name UPDATE_FROM_TEMPLATE_PAT:
1817# - Go to Repository Settings > Secrets and variables > Actions > New repository secret
@@ -29,8 +28,14 @@ name: 🔄 Sync with template
2928
3029on :
3130 schedule :
32- - cron : ' 0 12 * * * ' # Everyday at 12:00 UTC
31+ - cron : ' 0 12 * * 1-5 ' # At 12:00 UTC on every day-of-week from Monday through Friday
3332 workflow_dispatch :
33+ inputs :
34+ template-version :
35+ type : string
36+ description : ' Template release version to sync with (e.g. v1.0.0). Leave empty to sync with the latest release.'
37+ required : false
38+ default : ' '
3439
3540env :
3641 TEMPLATE_REPOSITORY : rootstrap/react-native-template
4247 .github/workflows/deploy-docs.yml
4348 .github/workflows/new-template-version.yml
4449 .github/workflows/upstream-to-pr.yml
50+ .github/workflows/sync-with-upstream.yml
4551 README-project.md
4652
4753jobs :
5056 permissions :
5157 actions : write
5258 contents : read
59+ pull-requests : write
5360
5461 steps :
5562 - name : Check if Personal Access Token exists
@@ -68,12 +75,17 @@ jobs:
6875 - name : Get template version used in project from package.json
6976 run : |
7077 echo "PROJECT_TEMPLATE_VERSION=v$(jq -r 'if has("rsMetadata") then .rsMetadata.templateVersion else .osMetadata.initVersion end' project/package.json | sed 's/^.*@//')" >> $GITHUB_ENV
71- - name : Get latest release of template from GitHub
78+ - name : Set template version to sync with
7279 run : |
73- echo "TEMPLATE_LATEST_VERSION=$(curl -s https://api.github.com/repos/${{ env.TEMPLATE_REPOSITORY }}/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> $GITHUB_ENV
74- - name : Check if the template is up to date
80+ if [ -z "${{ inputs.template-version }}" ]; then
81+ TEMPLATE_UPDATE_VERSION=$(curl -s https://api.github.com/repos/${{ env.TEMPLATE_REPOSITORY }}/releases/latest | jq '.tag_name' | sed 's/\"//g')
82+ else
83+ TEMPLATE_UPDATE_VERSION=${{ inputs.template-version }}
84+ fi
85+ echo "TEMPLATE_UPDATE_VERSION=$TEMPLATE_UPDATE_VERSION" >> $GITHUB_ENV
86+ - name : Check if the project is up to date
7587 run : |
76- if [[ $TEMPLATE_LATEST_VERSION == $PROJECT_TEMPLATE_VERSION ]]; then
88+ if [[ $TEMPLATE_UPDATE_VERSION == $PROJECT_TEMPLATE_VERSION ]]; then
7789 echo "Template is up to date"
7890 cd project
7991 gh run cancel ${{ github.run_id }}
8597 run : |
8698 cd project
8799 git fetch origin
88- BRANCH_NAME=update-template-${{ env.TEMPLATE_LATEST_VERSION }}
100+ BRANCH_NAME=update-template-${{ env.TEMPLATE_UPDATE_VERSION }}
89101 echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
90102 git branch -r | grep -q "origin/$BRANCH_NAME" && echo "BRANCH_EXISTS=true" >> $GITHUB_ENV || echo "BRANCH_EXISTS=false" >> $GITHUB_ENV
91103 - name : Check if PR already exists
@@ -101,17 +113,17 @@ jobs:
101113 echo "PR_EXISTS=false" >> $GITHUB_ENV
102114 fi
103115 env :
104- GITHUB_TOKEN : ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }}
116+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
105117 - name : Install dependencies
106118 if : ${{ env.BRANCH_EXISTS == 'false' }}
107119 run : |
108120 sudo apt install wiggle
109- - name : Checkout latest release of template
121+ - name : Checkout update release of template
110122 if : ${{ env.BRANCH_EXISTS == 'false' }}
111123 uses : actions/checkout@v3
112124 with :
113125 repository : ${{ env.TEMPLATE_REPOSITORY }}
114- ref : ${{ env.TEMPLATE_LATEST_VERSION }}
126+ ref : ${{ env.TEMPLATE_UPDATE_VERSION }}
115127 fetch-depth : 0
116128 path : react-native-template
117129 - name : Get diff between latest release and used release
@@ -128,7 +140,7 @@ jobs:
128140 run : |
129141 cd project
130142 jq 'del(.osMetadata)' package.json > tmp.json && mv tmp.json package.json
131- PLAIN_VERSION=${TEMPLATE_LATEST_VERSION #v}
143+ PLAIN_VERSION=${TEMPLATE_UPDATE_VERSION #v}
132144 jq --arg version $PLAIN_VERSION '.rsMetadata.templateVersion = $version' package.json > tmp.json && mv tmp.json package.json
133145 - name : Apply diff to project repository
134146 if : ${{ env.BRANCH_EXISTS == 'false' }}
@@ -156,13 +168,13 @@ jobs:
156168 git config --global user.name "github-actions[bot]"
157169 git checkout -b ${{ env.BRANCH_NAME }}
158170 git add .
159- git commit -m "chore: update template to ${{ env.TEMPLATE_LATEST_VERSION }}"
171+ git commit -m "chore: update template to ${{ env.TEMPLATE_UPDATE_VERSION }}"
160172 git push origin ${{ env.BRANCH_NAME }}
161173 echo "BRANCH_EXISTS=true" >> $GITHUB_ENV
162174 - name : 🎉 Create PR with changes
163175 if : ${{ env.BRANCH_EXISTS == 'true' && env.PR_EXISTS == 'false' }}
164176 run : |
165177 cd project
166- gh pr create --title "chore: update template to ${{ env.TEMPLATE_LATEST_VERSION }}" --body "Integrating latest changes from [rootstrap/react-native-template@${{ env.TEMPLATE_LATEST_VERSION }}](https://github.com/rootstrap/react-native-template/releases/tag/${{ env.TEMPLATE_LATEST_VERSION }})" --head ${{ env.BRANCH_NAME }}
178+ gh pr create --title "chore: update template to ${{ env.TEMPLATE_UPDATE_VERSION }}" --body "Integrating latest changes from [rootstrap/react-native-template@${{ env.TEMPLATE_UPDATE_VERSION }}](https://github.com/rootstrap/react-native-template/releases/tag/${{ env.TEMPLATE_UPDATE_VERSION }})" --head ${{ env.BRANCH_NAME }}
167179 env :
168- GITHUB_TOKEN : ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }}
180+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments