diff --git a/.github/workflows/tidy.yml b/.github/workflows/tidy.yml new file mode 100644 index 00000000..73a5091b --- /dev/null +++ b/.github/workflows/tidy.yml @@ -0,0 +1,57 @@ +name: Check and Update xray-core + +on: + push: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: + +jobs: + update: + runs-on: ubuntu-latest + steps: + - name: Checkout our repository + uses: actions/checkout@v4 + + - name: Fetch latest release tag from external repository + id: fetch-release + run: | + EXTERNAL_REPO="XTLS/Xray-core" + LATEST_TAG=$(curl -s https://api.github.com/repos/$EXTERNAL_REPO/releases/latest | jq -r '.tag_name') + echo "Latest tag from external repo: $LATEST_TAG" + echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV + + - name: Fetch current repository release tag + id: fetch-current-tag + run: | + CURRENT_TAG=$(git describe --tags --abbrev=0 || echo "none") + echo "Current tag in this repo: $CURRENT_TAG" + echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV + + - name: Compare tags + id: compare-tags + run: | + if [ "$LATEST_TAG" != "$CURRENT_TAG" ]; then + echo "Tags are different. Updating..." + echo "needs_update=true" >> $GITHUB_ENV + else + echo "Tags are the same. No update needed." + echo "needs_update=false" >> $GITHUB_ENV + fi + + - name: Setup Golang + if: env.needs_update == 'true' + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + + - name: Update and commit changes + if: env.needs_update == 'true' + uses: evantorrie/mott-the-tidier@v1-beta + + - name: Commit and push changes + if: env.needs_update == 'true' + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Updating xray-core to ${{ env.LATEST_TAG }} + tagging_message: ${{ env.LATEST_TAG }}