forked from obytes/react-native-template-obytes
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
116 additions
and
34 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
# 🔗 Links: | ||
# Source file: https://github.com/rootstrap/react-native-template/blob/master/.github/workflows/sync-with-upstream.yml | ||
|
||
# ✍️ Description: | ||
# This workflow is used to keep the template up to date with the latest version of the upstream repository. | ||
|
||
# 🚨 GITHUB SECRETS REQUIRED: | ||
# - UPDATE_FROM_TEMPLATE_PAT: A fine-grained Personal Access Token. | ||
# This token is used to access the template repository and create the Pull Request. | ||
# You can generate one from here: https://github.com/settings/tokens?type=beta | ||
# Set the Repository access to "Only select repositories" and select the template repository. | ||
# Set the following Repo permissions: | ||
# - Contents: Read & write (to commit and push the update branch to the template repository) | ||
# - Metadata: Read-only (mandatory by GitHub) | ||
# - Pull requests: Read & write (to create the Pull Request in the template repository) | ||
# - Workflows: Read and write (to create, update and delete workflows in the template repository) | ||
# Make sure to add it to the repo secrets with the name UPDATE_FROM_TEMPLATE_PAT: | ||
# - Go to Repository Settings > Secrets and variables > Actions > New repository secret | ||
# - Name: UPDATE_FROM_TEMPLATE_PAT | ||
# - Value: The Personal Access Token you created | ||
|
||
# ℹ️ Environment variables: | ||
# - UPSTREAM_REPOSITORY: Repository to sync with | ||
# - DIFF_EXCLUDED_ROUTES: List of files or directories to exclude from the diff. | ||
# Any changes in these files or directories will be ignored | ||
# and won't be incorporated to the Pull Request. | ||
|
||
name: 🔄 Sync with upstream | ||
|
||
on: | ||
schedule: | ||
- cron: '0 12 * * *' # Everyday at 12:00 UTC | ||
workflow_dispatch: | ||
|
||
env: | ||
UPSTREAM_REPOSITORY: obytes/react-native-template-obytes | ||
DIFF_EXCLUDED_ROUTES: | | ||
ios | ||
android | ||
jobs: | ||
sync: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
actions: write | ||
contents: read | ||
|
||
steps: | ||
- name: Check if Personal Access Token exists | ||
env: | ||
PAT: ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }} | ||
if: env.PAT == '' | ||
run: | | ||
echo "UPDATE_FROM_TEMPLATE_PAT secret not found. Please create a fine-grained Personal Access Token following the instructions in the workflow file." | ||
exit 1 | ||
- name: Checkout template repository | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
token: ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }} | ||
- name: Get latest release of upstream from GitHub | ||
run: | | ||
echo "UPSTREAM_LATEST_VERSION=$(curl -s https://api.github.com/repos/${{ env.UPSTREAM_REPOSITORY }}/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> $GITHUB_ENV | ||
- name: Check if branch already exists | ||
run: | | ||
git fetch origin | ||
BRANCH_NAME=update-upstream-${{ env.UPSTREAM_LATEST_VERSION }} | ||
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV | ||
git branch -r | grep -q "origin/$BRANCH_NAME" && echo "BRANCH_EXISTS=true" >> $GITHUB_ENV || echo "BRANCH_EXISTS=false" >> $GITHUB_ENV | ||
- name: Check if PR already exists | ||
run: | | ||
prs=$(gh pr list \ | ||
--head "$BRANCH_NAME" \ | ||
--json title \ | ||
--jq 'length') | ||
if ((prs > 0)); then | ||
echo "PR_EXISTS=true" >> $GITHUB_ENV | ||
else | ||
echo "PR_EXISTS=false" >> $GITHUB_ENV | ||
fi | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }} | ||
- name: Checkout latest release of upstream | ||
if: ${{ env.BRANCH_EXISTS == 'false' }} | ||
run: | | ||
git remote add upstream https://github.com/${{ env.UPSTREAM_REPOSITORY }}.git | ||
git fetch upstream | ||
- name: Merge latest release of upstream | ||
if: ${{ env.BRANCH_EXISTS == 'false' }} | ||
run: | | ||
UPSTREAM_LATEST_VERSION_HASH=$(git ls-remote --tags upstream | grep $UPSTREAM_LATEST_VERSION | sed -n 2p | cut -f1) | ||
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||
git config --global user.name "github-actions[bot]" | ||
git merge --no-commit --no-ff $UPSTREAM_LATEST_VERSION_HASH | ||
for route in $DIFF_EXCLUDED_ROUTES; do | ||
git reset -- $route | ||
done | ||
continue-on-error: true | ||
- name: Commit and push changes to the update branch | ||
if: ${{ env.BRANCH_EXISTS == 'false' }} | ||
run: | | ||
git checkout -b ${{ env.BRANCH_NAME }} | ||
git add . | ||
git commit -m "chore: update upstream to ${{ env.UPSTREAM_LATEST_VERSION }}" | ||
git push origin ${{ env.BRANCH_NAME }} | ||
echo "BRANCH_EXISTS=true" >> $GITHUB_ENV | ||
- name: 🎉 Create PR with changes | ||
if: ${{ env.BRANCH_EXISTS == 'true' && env.PR_EXISTS == 'false' }} | ||
run: | | ||
gh pr create --title "chore: update upstream to ${{ env.UPSTREAM_LATEST_VERSION }}" --body "Integrating latest changes from [obytes/react-native-template-obytes@${{ env.UPSTREAM_LATEST_VERSION }}](https://github.com/obytes/react-native-template-obytes/releases/tag/${{ env.UPSTREAM_LATEST_VERSION }})" --head ${{ env.BRANCH_NAME }} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
This file was deleted.
Oops, something went wrong.
This file contains 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