Sync Primary Repository to GitHub Mirror #1044
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
# GitHub Actions workflow file to sync an external repository to this GitHub mirror. | |
# This file was automatically generated by go-github-sync. | |
# | |
# The workflow does the following: | |
# - Runs on a scheduled basis (and can also be triggered manually) | |
# - Clones the GitHub mirror repository | |
# - Fetches changes from the primary external repository | |
# - Applies those changes to the mirror repository | |
# - Pushes the updated content back to the GitHub mirror | |
# | |
# Authentication is handled by the GITHUB_TOKEN secret provided by GitHub Actions. | |
jobs: | |
sync: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Validate Github Actions Environment | |
run: if [ "$GITHUB_ACTIONS" != "true" ]; then echo 'This script must be run in a GitHub Actions environment.'; exit 1; fi | |
- name: Checkout GitHub Mirror | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Configure Git | |
run: |- | |
git config user.name 'GitHub Actions' | |
git config user.email 'actions@github.com' | |
- env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
name: Sync Primary Repository | |
run: |- | |
# Add the primary repository as a remote | |
git remote add primary https://i2pgit.org/I2P_Developers/i2p.i2p.git | |
# Fetch the latest changes from the primary repository | |
git fetch primary | |
# Check if the primary branch exists in the primary repository | |
if git ls-remote --heads primary master | grep -q master; then | |
echo "Primary branch master found in primary repository" | |
else | |
echo "Error: Primary branch master not found in primary repository" | |
exit 1 | |
fi | |
# Check if we're already on the mirror branch | |
if git rev-parse --verify --quiet master; then | |
git checkout master | |
else | |
# Create the mirror branch if it doesn't exist | |
git checkout -b master | |
fi | |
# Force-apply all changes from primary, overriding any conflicts | |
echo "Performing force sync from primary/master to master" | |
git reset --hard primary/master | |
# Push changes back to the mirror repository | |
git push origin master | |
name: Sync Primary Repository to GitHub Mirror | |
"on": | |
push: {} | |
schedule: | |
- cron: 0 * * * * | |
workflow_dispatch: {} |