Check and Update v2ray-core #342
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
| name: Check and Update v2ray-core | |
| on: | |
| schedule: | |
| - cron: '0 0 * * *' | |
| workflow_dispatch: | |
| jobs: | |
| update: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout our repository | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: '0' | |
| - name: Fetch latest release tag from external repository | |
| id: fetch-release | |
| run: | | |
| EXTERNAL_REPO="v2fly/v2ray-core" | |
| LATEST_TAG=$(curl -s https://api.github.com/repos/$EXTERNAL_REPO/tags | jq -r '.[0]') | |
| LATEST_TAG_NAME=$(echo $LATEST_TAG | jq -r .name) | |
| LATEST_TAG_SHA=$(echo $LATEST_TAG | jq -r .commit.sha) | |
| echo "Latest tag from external repo: $LATEST_TAG_NAME" | |
| echo "LATEST_TAG_NAME=$LATEST_TAG_NAME" >> $GITHUB_ENV | |
| echo "LATEST_TAG_SHA=$LATEST_TAG_SHA" >> $GITHUB_ENV | |
| - name: Fetch current repository release tag | |
| id: fetch-current-tag | |
| run: | | |
| CURRENT_TAG_NAME=$(git describe --tags --abbrev=0) | |
| echo "Current tag in this repo: $CURRENT_TAG_NAME" | |
| echo "CURRENT_TAG_NAME=$CURRENT_TAG_NAME" >> $GITHUB_ENV | |
| - name: Compare tags | |
| id: compare-tags | |
| run: | | |
| if [ "$LATEST_TAG_NAME" != "$CURRENT_TAG_NAME" ]; then | |
| if [ "$(printf '%s\n' "$LATEST_TAG_NAME" "$CURRENT_TAG_NAME" | sort -V | tail -n1)" == "$CURRENT_TAG_NAME" ]; then | |
| echo "Upstream LATEST_TAG_NAME less than the CURRENT_TAG_NAME, no update needed." | |
| else | |
| echo "Tags are different. Updating..." | |
| echo "needs_update=true" >> $GITHUB_ENV | |
| fi | |
| 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.4.0 | |
| with: | |
| go-version: 'stable' | |
| - name: Update and commit changes | |
| if: env.needs_update == 'true' | |
| run: | | |
| # Sync Go version from upstream go.mod | |
| EXTERNAL_REPO="v2fly/v2ray-core" | |
| GO_VERSION=$(curl -s https://raw.githubusercontent.com/$EXTERNAL_REPO/${{ env.LATEST_TAG_NAME }}/go.mod | awk '/^go / {print $2; exit}') | |
| if [ -n "$GO_VERSION" ]; then | |
| echo "Syncing Go version to $GO_VERSION" | |
| go mod edit -go=$GO_VERSION | |
| else | |
| echo "Failed to detect Go version from upstream go.mod" | |
| fi | |
| go get github.com/v2fly/v2ray-core/v5@${{ env.LATEST_TAG_NAME }} | |
| # Clean up and verify module dependencies | |
| go mod tidy -v | |
| # Show changes | |
| git diff | |
| - name: Commit and push changes | |
| id: auto-commit-action | |
| if: env.needs_update == 'true' | |
| uses: stefanzweifel/git-auto-commit-action@v5.1.0 | |
| with: | |
| commit_message: Updating v2ray-core to ${{ env.LATEST_TAG_NAME }} ${{ env.LATEST_TAG_SHA }} | |
| tagging_message: ${{ env.LATEST_TAG_NAME }} | |
| - name: Trigger build | |
| if: env.needs_update == 'true' && steps.auto-commit-action.outputs.changes_detected == 'true' | |
| run: | | |
| curl -X POST \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
| https://api.github.com/repos/${{ github.repository }}/actions/workflows/main.yml/dispatches \ | |
| -d "{ | |
| \"ref\": \"master\", | |
| \"inputs\": { | |
| \"release_tag\": \"${{ env.LATEST_TAG_NAME }}\" | |
| } | |
| }" |