name: Build-Windows on: [push] jobs: build: runs-on: windows-latest steps: - name: Setup Go uses: actions/setup-go@v2 with: go-version: 1.18.x - name: Check out code into the Go module directory uses: actions/checkout@v3 - name: Go cache paths id: go-cache-paths run: | echo "::set-output name=go-build::$(go env GOCACHE)" echo "::set-output name=go-mod::$(go env GOMODCACHE)" - name: Cache go module uses: actions/cache@v2 with: path: | ${{ steps.go-cache-paths.outputs.go-mod }} ${{ steps.go-cache-paths.outputs.go-build }} key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Setup Python uses: actions/setup-python@v3 with: python-version: '3.9' architecture: 'x64' - name: Get dependencies, run test id: test run: | cmd /c mklink /J D:\python-amd64 $env:pythonLocation echo "::set-output name=file_sha::$(git describe --tags --always)" echo "::set-output name=file_date::$(Get-Date -Format 'yyyyMMdd')" ((Get-Content -path constant/version.go -Raw) -replace 'unknown version',$(Get-Date -Format 'yyyy.MM.dd')) | Set-Content -Path constant/version.go ((Get-Content -path constant/version.go -Raw) -replace 'unknown time',$(Get-Date)) | Set-Content -Path constant/version.go # go test go test -tags build_actions ./... - name: Build #if: startsWith(github.ref, 'refs/tags/') run: | $env:CGO_ENABLED=1; go build -tags build_actions -trimpath -ldflags '-w -s -buildid=' -o bin/clash-plus-pro-windows-amd64.exe $env:GOAMD64="v3"; $env:CGO_ENABLED=1; go build -tags build_actions -trimpath -ldflags '-w -s -buildid=' -o bin/clash-plus-pro-windows-amd64-v3.exe $version = Get-Date -Format 'yyyy.MM.dd' cd bin/ Compress-Archive -Path clash-plus-pro-windows-amd64.exe -DestinationPath clash-plus-pro-windows-amd64-$version.zip Compress-Archive -Path clash-plus-pro-windows-amd64-v3.exe -DestinationPath clash-plus-pro-windows-amd64-v3-$version.zip Remove-Item -Force clash-plus-pro-windows-amd64.exe Remove-Item -Force clash-plus-pro-windows-amd64-v3.exe "$version" | Out-File version.txt -NoNewLine - name: Upload files to tag if: startsWith(github.ref, 'refs/tags/') == false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | $version = Get-Date -Format 'yyyy.MM.dd' $plus_pro = curl ` -H "Accept: application/vnd.github.v3+json" ` -H "Authorization: token $env:GITHUB_TOKEN" ` https://api.github.com/repos/yaling888/clash/releases/tags/plus_pro | ConvertFrom-Json $plus_pro_url = $plus_pro.url $upload_url = $plus_pro.upload_url $plus_pro_upload_url = $upload_url.Substring(0,$upload_url.Length-13) curl ` -X PATCH ` -H "Accept: application/vnd.github.v3+json" ` -H "Authorization: token $env:GITHUB_TOKEN" ` "$plus_pro_url" ` -d "{`"name`":`"Plus Pro $version`",`"draft`":true}" | Out-Null foreach ($asset in $plus_pro.assets) { curl ` -X DELETE ` -H "Accept: application/vnd.github.v3+json" ` -H "Authorization: token $env:GITHUB_TOKEN" ` "$($asset.url)" | Out-Null } curl ` -X POST ` -H "Content-Type: application/zip" ` -T "bin/clash-plus-pro-windows-amd64-$version.zip" ` -H "Accept: application/vnd.github.v3+json" ` -H "Authorization: token $env:GITHUB_TOKEN" ` "$plus_pro_upload_url?name=clash-plus-pro-windows-amd64-$version.zip" | Out-Null curl ` -X POST ` -H "Content-Type: application/zip" ` -T "bin/clash-plus-pro-windows-amd64-v3-$version.zip" ` -H "Accept: application/vnd.github.v3+json" ` -H "Authorization: token $env:GITHUB_TOKEN" ` "$plus_pro_upload_url?name=clash-plus-pro-windows-amd64-v3-$version.zip" | Out-Null curl ` -X POST ` -H "Content-Type: text/plain" ` -T "bin/version.txt" ` -H "Accept: application/vnd.github.v3+json" ` -H "Authorization: token $env:GITHUB_TOKEN" ` "$plus_pro_upload_url?name=version.txt" | Out-Null #- name: Upload files to Artifacts # uses: actions/upload-artifact@v2 # with: # name: clash-windows-amd64-${{ steps.test.outputs.file_sha }}-${{ steps.test.outputs.file_date }} # path: | # bin/* - name: Upload Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: bin/* draft: true prerelease: false generate_release_notes: false #- name: Delete workflow runs # uses: GitRML/delete-workflow-runs@main # with: # retain_days: 1 # keep_minimum_runs: 2