From b33c4ae2f53426f1f5ae9d3e9ad683234f121395 Mon Sep 17 00:00:00 2001 From: Markson Hon Date: Wed, 10 Jul 2024 21:15:01 +0800 Subject: [PATCH 1/4] ci: add gVisor TUN build flag --- .github/workflows/beta_release_main.yml | 76 ++---------------------- .github/workflows/release_main.yml | 77 +++---------------------- .github/workflows/test_build_main.yml | 12 ++-- 3 files changed, 19 insertions(+), 146 deletions(-) diff --git a/.github/workflows/beta_release_main.yml b/.github/workflows/beta_release_main.yml index ef7a2cd8..6cfc83d8 100644 --- a/.github/workflows/beta_release_main.yml +++ b/.github/workflows/beta_release_main.yml @@ -80,7 +80,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arm in @('7')) { @@ -88,7 +88,7 @@ jobs: $env:GOARM = $arm $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-arm$arm")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -96,7 +96,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."windows-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -104,7 +104,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."darwin-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -112,7 +112,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."freebsd-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -120,71 +120,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."openbsd-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - - name: Upload Artifact - uses: nanoufo/action-upload-artifacts-and-release-assets@v2 - with: - path: | - v2raya_binaries/* - Build_v2rayA_SingTun_Binaries: - runs-on: ubuntu-latest - needs: [Build_v2rayA_Web] - env: - CGO_ENABLED: 0 - NAME: v2raya - DESC: "A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols" - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Download Artifact - uses: actions/download-artifact@v4 - with: - name: web - path: service/server/router/web - - name: Check Version - id: prep - env: - REF: ${{ inputs.tag }} - run: | - tag=${{ inputs.tag }} - version=$(echo $tag | sed 's/v//g') - echo "VERSION=$version" >> $GITHUB_OUTPUT - echo "VERSION=$version" >> $GITHUB_ENV - - name: Set up Go - uses: actions/setup-go@v5 - with: - cache-dependency-path: | - service/go.mod - service/go.sum - go-version: ^1.21 - - name: Build v2rayA SingTun Binaries - shell: pwsh - run: | - New-Item -ItemType Directory -Path v2raya_binaries - foreach ($arch in @('amd64', 'arm64')) { - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - foreach ($arch in @('amd64', 'arm64')) { - $env:GOOS = 'windows' - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."windows-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - foreach ($arch in @('amd64', 'arm64')) { - $env:GOOS = 'darwin' - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."darwin-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } - name: Upload Artifact diff --git a/.github/workflows/release_main.yml b/.github/workflows/release_main.yml index 599833f1..e89548f3 100644 --- a/.github/workflows/release_main.yml +++ b/.github/workflows/release_main.yml @@ -80,7 +80,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arm in @('7')) { @@ -88,7 +88,7 @@ jobs: $env:GOARM = $arm $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-arm$arm")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -96,7 +96,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."windows-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -104,7 +104,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."darwin-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -112,7 +112,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."freebsd-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -120,7 +120,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."openbsd-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } @@ -129,70 +129,7 @@ jobs: with: path: | v2raya_binaries/* - Build_v2rayA_SingTun_Binaries: - runs-on: ubuntu-latest - needs: [Build_v2rayA_Web] - env: - CGO_ENABLED: 0 - NAME: v2raya - DESC: "A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols" - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Download Artifact - uses: actions/download-artifact@v4 - with: - name: web - path: service/server/router/web - - name: Check Version - id: prep - env: - REF: ${{ inputs.tag }} - run: | - tag=${{ inputs.tag }} - version=$(echo $tag | sed 's/v//g') - echo "VERSION=$version" >> $GITHUB_OUTPUT - echo "VERSION=$version" >> $GITHUB_ENV - - name: Set up Go - uses: actions/setup-go@v5 - with: - cache-dependency-path: | - service/go.mod - service/go.sum - go-version: ^1.21 - - name: Build v2rayA SingTun Binaries - shell: pwsh - run: | - New-Item -ItemType Directory -Path v2raya_binaries - foreach ($arch in @('amd64', 'arm64')) { - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - foreach ($arch in @('amd64', 'arm64')) { - $env:GOOS = 'windows' - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."windows-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - foreach ($arch in @('amd64', 'arm64')) { - $env:GOOS = 'darwin' - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."darwin-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - - name: Upload Artifact - uses: nanoufo/action-upload-artifacts-and-release-assets@v2 - with: - path: | - v2raya_binaries/* + Build_Windows_Installers: runs-on: windows-latest needs: [Build_v2rayA_Binaries] diff --git a/.github/workflows/test_build_main.yml b/.github/workflows/test_build_main.yml index a7c388fb..caa94dd4 100644 --- a/.github/workflows/test_build_main.yml +++ b/.github/workflows/test_build_main.yml @@ -81,7 +81,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arm in @('7')) { @@ -89,7 +89,7 @@ jobs: $env:GOARM = $arm $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-arm$arm")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -97,7 +97,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."windows-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -105,7 +105,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."darwin-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -113,7 +113,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."freebsd-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } foreach ($arch in @('amd64', 'arm64')) { @@ -121,7 +121,7 @@ jobs: $env:GOARCH = $arch $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."openbsd-$arch")."friendlyName" Set-Location -Path service - go build -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath + go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_${filename}_${env:VERSION}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath Set-Location -Path .. } - name: Upload Artifact From f0c1e6c19ee9802d7f6a679e5dab4a6b6cbe1817 Mon Sep 17 00:00:00 2001 From: Markson Hon Date: Wed, 10 Jul 2024 21:17:00 +0800 Subject: [PATCH 2/4] ci: add gVisor TUN build flag --- .github/workflows/beta_release_main.yml | 2 +- .github/workflows/release_main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/beta_release_main.yml b/.github/workflows/beta_release_main.yml index 6cfc83d8..11da4f44 100644 --- a/.github/workflows/beta_release_main.yml +++ b/.github/workflows/beta_release_main.yml @@ -334,7 +334,7 @@ jobs: fpm_packages/* GitHub_Release: runs-on: ubuntu-22.04 - needs: [Build_v2rayA_Binaries, Build_Windows_Installers, Build_Linux_Packages, Build_v2rayA_SingTun_Binaries] + needs: [Build_v2rayA_Binaries, Build_Windows_Installers, Build_Linux_Packages] steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/release_main.yml b/.github/workflows/release_main.yml index e89548f3..09cb05fb 100644 --- a/.github/workflows/release_main.yml +++ b/.github/workflows/release_main.yml @@ -336,7 +336,7 @@ jobs: fpm_packages/* GitHub_Release: runs-on: ubuntu-22.04 - needs: [Build_v2rayA_Binaries, Build_Windows_Installers, Build_Linux_Packages, Build_v2rayA_SingTun_Binaries] + needs: [Build_v2rayA_Binaries, Build_Windows_Installers, Build_Linux_Packages] steps: - uses: actions/checkout@v4 with: From c2a345a461db92c596d0a27984f4d9694a7b8344 Mon Sep 17 00:00:00 2001 From: Markson Hon Date: Sun, 14 Jul 2024 18:34:39 +0800 Subject: [PATCH 3/4] ci: enable gVisor for all builds --- .github/workflows/test_build_main.yml | 99 ++++++++++++++++----------- 1 file changed, 59 insertions(+), 40 deletions(-) diff --git a/.github/workflows/test_build_main.yml b/.github/workflows/test_build_main.yml index caa94dd4..e487a85d 100644 --- a/.github/workflows/test_build_main.yml +++ b/.github/workflows/test_build_main.yml @@ -130,9 +130,9 @@ jobs: path: | v2raya_binaries/* - Build_v2rayA_SingTun_Binaries: - runs-on: ubuntu-latest - needs: [Build_v2rayA_Web] + Build_Windows_installer: + runs-on: windows-latest + needs: [Build_v2rayA_Binaries] env: CGO_ENABLED: 0 NAME: v2raya @@ -141,11 +141,6 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Download Artifact - uses: actions/download-artifact@v4 - with: - name: web - path: service/server/router/web - name: Check Version id: prep run: | @@ -156,42 +151,66 @@ jobs: version="unstable-$date.r${count}.$commit" echo "VERSION=$version" >> $GITHUB_OUTPUT echo "VERSION=$version" >> $GITHUB_ENV - - name: Set up Go - uses: actions/setup-go@v5 + - name: Download Artifact Windows x64 + uses: actions/download-artifact@v4 with: - cache-dependency-path: | - service/go.mod - service/go.sum - go-version: ^1.21 - - name: Build v2rayA SingTun Binaries + name: v2raya_windows_x64_${{ steps.prep.outputs.VERSION }}.exe + path: D:\Downloads + - name: Download Artifact Windows arm64 + uses: actions/download-artifact@v4 + with: + name: v2raya_windows_arm64_${{ steps.prep.outputs.VERSION }}.exe + path: D:\Downloads + - name: Install Inno Setup shell: pwsh run: | - New-Item -ItemType Directory -Path v2raya_binaries - foreach ($arch in @('amd64', 'arm64')) { - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."linux-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - foreach ($arch in @('amd64', 'arm64')) { - $env:GOOS = 'windows' - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."windows-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION}.exe -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } - foreach ($arch in @('amd64', 'arm64')) { - $env:GOOS = 'darwin' - $env:GOARCH = $arch - $filename = $((Get-Content ./install/friendly-filenames.json | ConvertFrom-Json)."darwin-$arch")."friendlyName" - Set-Location -Path service - go build -tags "with_gvisor" -o ../v2raya_binaries/v2raya_with_singtun_${filename}_${env:VERSION} -ldflags="-X github.com/v2rayA/v2rayA/conf.Version=${env:VERSION} -s -w" -trimpath - Set-Location -Path .. - } + choco install innosetup -y + - name: Build Windows Installer + shell: pwsh + run: | + ## Create Destination Directory + New-Item -ItemType Directory -Path "D:\v2raya-x86_64-windows\data" + New-Item -ItemType Directory -Path "D:\v2raya-x86_64-windows\bin" + New-Item -ItemType Directory -Path "D:\v2raya-arm64-windows\data" + New-Item -ItemType Directory -Path "D:\v2raya-arm64-windows\bin" + ## Copy v2rayA to Destination Directory + Copy-Item -Path D:\Downloads\v2raya_windows_arm64_${{ steps.prep.outputs.VERSION }}.exe -Destination D:\v2raya-arm64-windows\bin\v2raya.exe + Copy-Item -Path D:\Downloads\v2raya_windows_x64_${{ steps.prep.outputs.VERSION }}.exe -Destination D:\v2raya-x86_64-windows\bin\v2raya.exe + Copy-Item -Path ".\install\windows-inno\v2raya.ico" -Destination "D:\v2raya.ico" + ## Download and extract v2ray + $Url_v2ray_x64 = "https://github.com/v2fly/v2ray-core/releases/latest/download/v2ray-windows-64.zip" + $Url_v2ray_A64 = "https://github.com/v2fly/v2ray-core/releases/latest/download/v2ray-windows-arm64-v8a.zip" + Invoke-WebRequest $Url_v2ray_x64 -OutFile "D:\v2ray-windows-x64.zip" + Expand-Archive -Path "D:\v2ray-windows-x64.zip" -DestinationPath "D:\v2raya-x86_64-windows\bin\" + Move-Item -Path "D:\v2raya-x86_64-windows\bin\*.dat" -Destination "D:\v2raya-x86_64-windows\data\" + Remove-Item -Path "D:\v2raya-x86_64-windows\bin\*.json" -Force -Recurse -ErrorAction SilentlyContinue + Invoke-WebRequest $Url_v2ray_A64 -OutFile "D:\v2ray-windows-A64.zip" + Expand-Archive -Path "D:\v2ray-windows-A64.zip" -DestinationPath "D:\v2raya-arm64-windows\bin\" + Move-Item -Path "D:\v2raya-arm64-windows\bin\*.dat" -Destination "D:\v2raya-arm64-windows\data\" + Remove-Item -Path "D:\v2raya-arm64-windows\bin\*.json" -Force -Recurse -ErrorAction SilentlyContinue + ## Download WinSW + ## WinSW said they have a native ARM64 version, but I cannot find it, so use net4 version instead on ARM-based Windows. + ## See more in "https://visualstudiomagazine.com/articles/2022/08/12/net-framework-4-8-1.aspx" + $Url_WinSW = "https://github.com/winsw/winsw/releases/download/v3.0.0-alpha.11/WinSW-net461.exe" + Invoke-WebRequest $Url_WinSW -OutFile "D:\WinSW.exe" + Copy-Item -Path "D:\WinSW.exe" -Destination "D:\v2raya-x86_64-windows\v2rayA-service.exe" + Copy-Item -Path "D:\WinSW.exe" -Destination "D:\v2raya-arm64-windows\v2rayA-service.exe" + ## Copy License and Service Config + Copy-Item -Path ".\LICENSE" -Destination "D:\LICENSE.txt" + Copy-Item -Path ".\install\windows-inno\v2rayA-service.xml" -Destination "D:\v2raya-x86_64-windows\v2rayA-service.xml" + Copy-Item -Path ".\install\windows-inno\v2rayA-service.xml" -Destination "D:\v2raya-arm64-windows\v2rayA-service.xml" + ## Set Version + $(Get-Content -Path .\install\windows-inno\windows_x86_64.iss).replace("TheRealVersion", "${{ steps.prep.outputs.VERSION }}") | Out-File "D:\windows_x86_64.iss" + $(Get-Content -Path .\install\windows-inno\windows_arm64.iss).replace("TheRealVersion", "${{ steps.prep.outputs.VERSION }}") | Out-File "D:\windows_arm64.iss" + ## Build Installer + & 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' "D:\windows_x86_64.iss" + & 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' "D:\windows_arm64.iss" + ## Rename to Friendly Name + Copy-Item -Path D:\installer_windows_inno_x64.exe -Destination .\installer_windows_inno_x64_${{ steps.prep.outputs.VERSION }}.exe + Copy-Item -Path D:\installer_windows_inno_arm64.exe -Destination .\installer_windows_inno_arm64_${{ steps.prep.outputs.VERSION }}.exe - name: Upload Artifact uses: nanoufo/action-upload-artifacts-and-release-assets@v2 with: path: | - v2raya_binaries/* + installer_windows_inno_x64_${{ steps.prep.outputs.VERSION }}.exe + installer_windows_inno_arm64_${{ steps.prep.outputs.VERSION }}.exe From 09df0d992c8ffdd2607cc59a1786f011ffe56a84 Mon Sep 17 00:00:00 2001 From: Markson Hon Date: Sun, 14 Jul 2024 18:39:29 +0800 Subject: [PATCH 4/4] ci: enable gVisor for all builds --- .github/workflows/test_build_main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test_build_main.yml b/.github/workflows/test_build_main.yml index e487a85d..8119e373 100644 --- a/.github/workflows/test_build_main.yml +++ b/.github/workflows/test_build_main.yml @@ -143,6 +143,7 @@ jobs: fetch-depth: 0 - name: Check Version id: prep + shell: bash run: | echo "P_DIR=$(pwd)" >> $GITHUB_OUTPUT date=$(git log -1 --format="%cd" --date=short | sed s/-//g)