diff --git a/.github/workflows/sync_warp-go.yml b/.github/workflows/sync_warp-go.yml index 6d8079d..d7ae1be 100644 --- a/.github/workflows/sync_warp-go.yml +++ b/.github/workflows/sync_warp-go.yml @@ -1,68 +1,72 @@ -name: Sync WireGuard-go +name: Sync warp-go latest version on: workflow_dispatch: - schedule: - - cron: '18 2 * * *' +# schedule: +# - cron: '3 2 * * *' jobs: - WireGuard-go: - - name: Sync WireGuard-go to the latest - - runs-on: ubuntu-20.04 - + build: + name: Sync warp-go latest version + runs-on: ubuntu-latest env: - WORKDIR: ./wireguard-go-source USERNAME: ${{ secrets.GH_USERNAME }} EMAIL: ${{ secrets.GH_EMAIL }} + REPO: ${{ secrets.GH_REPO }} steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Check the official latest version of WireGuard-go + - uses: actions/checkout@v3 + - name: Update warp-go to latest version run: | - NOW=$(wget -qO- "https://api.github.com/repos/${{ env.USERNAME }}/warp/releases" | grep "tag_name" | grep -i "wireguard-go" | head -n 1 | sed "s/.*_v\(.*\)\".*/\1/g") - LATEST=$(wget -qO- https://git.zx2c4.com/wireguard-go/ | grep '/wireguard-go/tag' | sed -n 1p | sed "s/.*>\([0-9.]\{1,\}\)<.*/\1/g") - - if [ "$LATEST" != "$NOW" ]; then - git clone https://git.zx2c4.com/wireguard-go ${{ env.WORKDIR }} - cp ./.github/wireguard-go-releaser.yml ${{ env.WORKDIR }}/.goreleaser.yml + NOW=$(wget -qO- https://raw.githubusercontent.com/${{ env.USERNAME }}/${{ env.REPO }}/main/warp-go.sh | grep 'latest=${latest' | cut -d \' -f2) + LATEST=$(wget -qO- -T1 -t1 https://gitlab.com/api/v4/projects/ProjectWARP%2Fwarp-go/releases | grep -oP '"tag_name":"v\K[^\"]+' | head -n 1) + NOW1=$(echo $NOW | cut -d \. -f1) + NOW2=$(echo $NOW | cut -d \. -f2) + NOW3=$(echo $NOW | cut -d \. -f3) + LATEST1=$(echo $LATEST | cut -d \. -f1) + LATEST2=$(echo $LATEST | cut -d \. -f2) + LATEST3=$(echo $LATEST | cut -d \. -f3) + NOW_VERSION=$(( NOW1*1000000 + NOW2*1000 + NOW3 )) + LATEST_VERSION=$(( LATEST1*1000000 + LATEST2*1000 + LATEST3 )) + if [ $LATEST_VERSION -gt $NOW_VERSION ]; then + PLATFORM=( "linux_386" + "linux_amd64" + "linux_amd64v2" + "linux_amd64v3" + "linux_amd64v4" + "linux_arm64" + "linux_386" + "linux_s390x" + ) + + SCRIPTS=( "warp-go.sh" + ) + + for i in "${PLATFORM[@]}"; do + wget -NP ${GITHUB_WORKSPACE}/warp-go/ https://gitlab.com/ProjectWARP/warp-go/-/releases/v"$LATEST"/downloads/warp-go_"$LATEST"_"$i".tar.gz + rm -f ${GITHUB_WORKSPACE}/warp-go/warp-go_"$NOW"_"$i".tar.gz + done + + for j in "${SCRIPTS[@]}"; do + sed -i "/判断 warp-go 的最新版本/s/$NOW/$LATEST/; /latest=\${/s/$NOW/$LATEST/" ${GITHUB_WORKSPACE}/$j + done + echo "VERSION=$LATEST" >> $GITHUB_ENV + echo "DIST=${GITHUB_WORKSPACE}/warp-go" >> $GITHUB_ENV fi - - - name: Set up GoReleaser - uses: actions/setup-go@v2 - if: ${{ env.VERSION != '' }} - with: - go-version: "1.18" - - - name: Cross compile WireGuard-go - uses: goreleaser/goreleaser-action@v2 - if: ${{ env.VERSION != '' }} - with: - distribution: goreleaser - workdir: ${{ env.WORKDIR }} - version: latest - args: release --rm-dist - - - name: Release binaries - uses: softprops/action-gh-release@v1 - if: ${{ env.VERSION != '' }} - with: - tag_name: WireGuard-go_v${{ env.VERSION }} - files: ${{ env.WORKDIR }}/dist/*.tar.gz - name: Upload to REPO if: ${{ env.VERSION != '' }} run: | - cp -f ${{ env.WORKDIR }}/dist/*.tar.gz ${GITHUB_WORKSPACE}/wireguard-go/ - rm -rf ${{ env.WORKDIR }} git config --global user.email "${{ env.EMAIL }}" git config --global user.name "${{ env.USERNAME }}" git add . - git commit -m "Wireguard-go V${{ env.VERSION }}, $(date "+%Y/%m/%d")" + git commit -m "Sync warp-go to V${{ env.VERSION }} by Github Actions, $(date "+%Y/%m/%d %H:%M:%S")" git push + + - name: Release binaries + uses: softprops/action-gh-release@v1 + if: ${{ env.VERSION != '' }} + with: + tag_name: warp-go_v${{ env.VERSION }} + files: ${{ env.DIST }}/*