[DO NOT MERGE] Used to trigger unittest_plugins ONLY #56
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
name: Sync develop with master | |
'on': | |
pull_request: | |
types: | |
- closed | |
branches: | |
- master | |
permissions: | |
contents: write | |
jobs: | |
start: | |
name: "Starting -🤞" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Starting | |
id: init | |
run: | | |
echo "Starting branch synchronization of ${{ github.repository }}" | |
create_pr_for_nonplugin: | |
name: Synchronizing non-plugin PR | |
needs: start # This job now needs the 'start' job to complete first | |
if: > | |
github.event.pull_request.merged == true && | |
!(startsWith(github.event.pull_request.head.ref, 'web_submission_') && | |
contains(github.event.pull_request.title, 'brain-score.org submission')) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the develop branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # Fetch full history | |
ref: develop | |
- name: Reset the develop branch | |
run: | | |
git fetch origin master | |
git reset --hard origin/master | |
- name: Create pull request in develop | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
token: '${{ secrets.PAT }}' | |
commit-message: Sync master into develop | |
title: Sync master into develop | |
body: >- | |
This PR syncs the latest changes from the master branch into the | |
develop branch. | |
base: develop | |
branch: 'developer-sync-pr-${{ github.event.pull_request.number }}' | |
auto_sync_for_plugin: | |
needs: start | |
if: > | |
github.event.pull_request.merged == true && | |
startsWith(github.event.pull_request.head.ref, 'web_submission_') && | |
contains(github.event.pull_request.title, 'brain-score.org submission') | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the develop branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: develop | |
- name: Configure Git user | |
run: | | |
git config --global user.name "Branch Synchronizer" | |
git config --global user.email "[email protected]" | |
- name: Ensure develop branch is updated | |
run: | | |
git fetch origin develop | |
git checkout develop | |
git merge origin/develop | |
# Fetch latest change from master, checkout develop, merge changes from master to develop. | |
# Includes conflict handling | |
- name: Merge master into develop | |
id: merge | |
run: | | |
git fetch origin master | |
git checkout develop | |
git merge origin/master || { | |
if git diff --name-only --diff-filter=U | grep -q '.'; then | |
echo "Merge conflict detected" | |
echo "::set-output name=merge_conflict::true" | |
else | |
echo "Merge failed due to another reason" | |
exit 1 | |
fi | |
} | |
- name: Push changes to develop (if merge is successful) | |
if: steps.merge.conclusion == 'success' | |
run: | #Use force-with-lease to prevent accidental overwrite if branch has been updated. If fails, rebase the update and retry | |
git push origin develop --force-with-lease || { | |
echo "Push failed due to updates in develop. Attempting to rebase and retry..." | |
git fetch origin develop | |
git rebase origin/develop | |
git push origin develop --force-with-lease | |
} | |
- name: Create pull request for merge conflicts | |
if: steps.merge.outputs.merge_conflict == 'true' | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
token: '${{ secrets.PAT }}' | |
commit-message: Merge master into develop with conflict resolution | |
title: Resolve conflicts between master and develop | |
body: This PR resolves merge conflicts between master and develop. | |
base: develop | |
branch: 'developer-sync-pr-conflict-${{ github.event.pull_request.number }}' | |
- name: Handle other merge failures | |
if: failure() && steps.merge.outputs.merge_conflict != 'true' | |
run: > | |
echo "Handle non-conflict related failure, such as network issues or missing branches" | |
# Possibly incorporate additional handling logic here (e.g.,notifications or retries) |