diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml new file mode 100644 index 000000000..5dfa5f80e --- /dev/null +++ b/.github/workflows/sync.yml @@ -0,0 +1,42 @@ +name: Sync Upstream + +env: + UPSTREAM_URL: "https://github.com/binaricat/Netcatty.git" + UPSTREAM_BRANCH: "main" + TARGET_BRANCH: "main" + +on: + schedule: + - cron: '0 0 * * *' # Run daily at midnight + workflow_dispatch: # Allow manual trigger + +jobs: + sync: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ env.TARGET_BRANCH }} + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Configure Git + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: Merge Upstream + run: | + echo "Adding upstream remote..." + git remote add upstream ${{ env.UPSTREAM_URL }} + git fetch upstream ${{ env.UPSTREAM_BRANCH }} + + echo "Merging upstream/${{ env.UPSTREAM_BRANCH }} into ${{ env.TARGET_BRANCH }}..." + # This will fail if there are conflicts, which is the desired behavior (notify user via failure) + git merge upstream/${{ env.UPSTREAM_BRANCH }} --no-edit + + echo "Pushing changes..." + git push origin ${{ env.TARGET_BRANCH }}