diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ebceea1e..598b157f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,124 +1,118 @@ name: Build +on: + pull_request: + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true -on: pull_request - jobs: - verify-openssl: - runs-on: windows-2022 + build: + strategy: + matrix: + os: [windows-2022, ubuntu-latest] + fail-fast: false + + runs-on: ${{ matrix.os }} + steps: - - name: Check out repository + - name: Check out Git repository uses: actions/checkout@v4 - - name: Verify OpenSSL 1.1 DLLs exist + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 20.18.3 + + - name: Install dependencies + run: yarn --frozen-lockfile + + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: 3.9 + + - name: Install dependencies + run: pip install -r requirements.txt + + - name: Download OpenSSL 1.1.1w installer + if: matrix.os == 'windows-2022' shell: pwsh run: | - $dll1 = "vendor/openssl-1.1/win64/libcrypto-1_1-x64.dll" - $dll2 = "vendor/openssl-1.1/win64/libssl-1_1-x64.dll" + $url = "https://slproweb.com/download/Win64OpenSSL-1_1_1w.exe" + $out = "$env:RUNNER_TEMP\Win64OpenSSL-1_1_1w.exe" + Invoke-WebRequest $url -OutFile $out - $missing = @() + - name: Silent install OpenSSL 1.1.1w + if: matrix.os == 'windows-2022' + shell: pwsh + run: | + $installer = "$env:RUNNER_TEMP\Win64OpenSSL-1_1_1w.exe" + if (!(Test-Path $installer)) { Write-Error "Installer not found: $installer"; exit 1 } + $dest = Join-Path $env:ProgramFiles "OpenSSL-Win64" + $args = "/VERYSILENT /SUPPRESSMSGBOXES /SP- /NORESTART /DIR=""$dest""" + Start-Process -FilePath $installer -ArgumentList $args -Wait -NoNewWindow - if (-not (Test-Path $dll1)) { $missing += $dll1 } - if (-not (Test-Path $dll2)) { $missing += $dll2 } + - name: Build with cx_Freeze + run: python python_rpc/setup.py build - if ($missing.Count -gt 0) { - Write-Error "Missing required OpenSSL 1.1 DLLs:`n$($missing -join "`n")" - exit 1 - } else { - Write-Host "✅ Both OpenSSL 1.1 DLLs found" - } + - name: Build Linux + if: matrix.os == 'ubuntu-latest' + run: | + yarn build:linux + env: + MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }} + MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }} + MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }} + MAIN_VITE_WS_URL: ${{ vars.MAIN_VITE_WS_STAGING_URL }} + RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} + MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + RENDERER_VITE_SENTRY_DSN: ${{ vars.SENTRY_DSN }} + RENDERER_VITE_REAL_DEBRID_REFERRAL_ID: ${{ vars.RENDERER_VITE_REAL_DEBRID_REFERRAL_ID }} + RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }} -# jobs: -# build: -# strategy: -# matrix: -# os: [windows-2022, ubuntu-latest] -# fail-fast: false + - name: Build Windows + if: matrix.os == 'windows-2022' + run: yarn build:win + env: + MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }} + MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }} + MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }} + MAIN_VITE_WS_URL: ${{ vars.MAIN_VITE_WS_STAGING_URL }} + RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} + MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + RENDERER_VITE_SENTRY_DSN: ${{ vars.SENTRY_DSN }} + RENDERER_VITE_REAL_DEBRID_REFERRAL_ID: ${{ vars.RENDERER_VITE_REAL_DEBRID_REFERRAL_ID }} + RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }} -# runs-on: ${{ matrix.os }} + - name: Upload build + env: + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} + S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} + S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} + S3_BUILDS_BUCKET_NAME: ${{ secrets.S3_BUILDS_BUCKET_NAME }} + BUILDS_URL: ${{ secrets.BUILDS_URL }} + BUILD_WEBHOOK_URL: ${{ secrets.BUILD_WEBHOOK_URL }} + GITHUB_ACTOR: ${{ github.actor }} + run: node scripts/upload-build.cjs -# steps: -# - name: Check out Git repository -# uses: actions/checkout@v4 - -# - name: Install Node.js -# uses: actions/setup-node@v4 -# with: -# node-version: 20.18.3 - -# - name: Install dependencies -# run: yarn --frozen-lockfile - -# - name: Install Python -# uses: actions/setup-python@v5 -# with: -# python-version: 3.9 - -# - name: Install dependencies -# run: pip install -r requirements.txt - -# - name: Build with cx_Freeze -# run: python python_rpc/setup.py build - -# - name: Build Linux -# if: matrix.os == 'ubuntu-latest' -# run: | -# yarn build:linux -# env: -# MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }} -# MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }} -# MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }} -# MAIN_VITE_WS_URL: ${{ vars.MAIN_VITE_WS_STAGING_URL }} -# RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} -# MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} -# RENDERER_VITE_SENTRY_DSN: ${{ vars.SENTRY_DSN }} -# RENDERER_VITE_REAL_DEBRID_REFERRAL_ID: ${{ vars.RENDERER_VITE_REAL_DEBRID_REFERRAL_ID }} -# RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }} - -# - name: Build Windows -# if: matrix.os == 'windows-2022' -# run: yarn build:win -# env: -# MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_STAGING_API_URL }} -# MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_STAGING_AUTH_URL }} -# MAIN_VITE_CHECKOUT_URL: ${{ vars.MAIN_VITE_STAGING_CHECKOUT_URL }} -# MAIN_VITE_WS_URL: ${{ vars.MAIN_VITE_WS_STAGING_URL }} -# RENDERER_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} -# MAIN_VITE_EXTERNAL_RESOURCES_URL: ${{ vars.EXTERNAL_RESOURCES_URL }} -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} -# RENDERER_VITE_SENTRY_DSN: ${{ vars.SENTRY_DSN }} -# RENDERER_VITE_REAL_DEBRID_REFERRAL_ID: ${{ vars.RENDERER_VITE_REAL_DEBRID_REFERRAL_ID }} -# RENDERER_VITE_TORBOX_REFERRAL_CODE: ${{ vars.RENDERER_VITE_TORBOX_REFERRAL_CODE }} - -# - name: Upload build -# env: -# BRANCH_NAME: ${{ github.head_ref || github.ref_name }} -# S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} -# S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} -# S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} -# S3_BUILDS_BUCKET_NAME: ${{ secrets.S3_BUILDS_BUCKET_NAME }} -# BUILDS_URL: ${{ secrets.BUILDS_URL }} -# BUILD_WEBHOOK_URL: ${{ secrets.BUILD_WEBHOOK_URL }} -# GITHUB_ACTOR: ${{ github.actor }} -# run: node scripts/upload-build.cjs - -# - name: Create artifact -# uses: actions/upload-artifact@v4 -# with: -# name: Build-${{ matrix.os }} -# path: | -# dist/*-portable.exe -# dist/*.zip -# dist/*.dmg -# dist/*.deb -# dist/*.rpm -# dist/*.tar.gz -# dist/*.yml -# dist/*.blockmap -# dist/*.AppImage + - name: Create artifact + uses: actions/upload-artifact@v4 + with: + name: Build-${{ matrix.os }} + path: | + dist/*-portable.exe + dist/*.zip + dist/*.dmg + dist/*.deb + dist/*.rpm + dist/*.tar.gz + dist/*.yml + dist/*.blockmap + dist/*.AppImage