name: 'Upstream Sync' permissions: contents: write on: schedule: - cron: "0 0 * * *" # every day workflow_dispatch: # click the button on Github repo! inputs: sync_test_mode: # Adds a boolean option that appears during manual workflow run for easy test mode config description: 'Fork Sync Test Mode' type: boolean default: false jobs: sync_latest_from_upstream: runs-on: ubuntu-latest name: Sync latest commits from upstream repo if: ${{ github.event.repository.fork }} steps: # Step 1: run a standard checkout action, provided by github - name: Checkout target repo uses: actions/checkout@v3 with: # optional: set the branch to checkout, # sync action checks out your 'target_sync_branch' anyway ref: ${{ secrets.MY_TARGET_SYNC_BRANCH }} # REQUIRED if your upstream repo is private (see wiki) persist-credentials: false # Step 2: run the sync action - name: Sync upstream changes id: sync uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1 with: target_sync_branch: ${{ secrets.MY_TARGET_SYNC_BRANCH }} # need to set # REQUIRED 'target_repo_token' exactly like this! target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set upstream_sync_branch: main upstream_sync_repo: aormsby/Fork-Sync-With-Upstream-action # Set test_mode true during manual dispatch to run tests instead of the true action!! test_mode: ${{ inputs.sync_test_mode }} # Step 3: Display a sample message based on the sync output var 'has_new_commits' - name: New commits found if: steps.sync.outputs.has_new_commits == 'true' run: echo "New commits were found to sync." - name: No new commits if: steps.sync.outputs.has_new_commits == 'false' run: echo "There were no new commits." - name: Show value of 'has_new_commits' run: echo ${{ steps.sync.outputs.has_new_commits }} - name: Sync check if: failure() run: | echo "[Error] 由于上游仓库的 workflow 文件变更,导致 GitHub 自动暂停了本次自动更新,你需要手动 Sync Fork 一次" echo "[Error] Due to a change in the workflow file of the upstream repository, GitHub has automatically suspended the scheduled automatic update. You need to manually sync your fork." exit 1