Skip to content

ci: Install vcpkg packages #178

ci: Install vcpkg packages

ci: Install vcpkg packages #178

Workflow file for this run

name: Build apps
on:
push:
pull_request:
jobs:
desktop:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
arch: [x64]
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
# Windows: Create dev cert for .appx package
- name: Create dev cert
if: ${{ matrix.os == 'windows-latest' }}
run: |
$cert = New-SelfSignedCertificate -Subject "CN=9FB02A40-50B6-49F9-92D4-AA9DC9AC1AAB" -TextExtension "2.5.29.37={text}1.3.6.1.5.5.7.3.3" -CertStoreLocation cert:\CurrentUser\My
$pwd = ConvertTo-SecureString -String "password" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath apps/desktop/assets/appx/cert.pfx -Password $pwd
- name: Install
run: npm ci
# x64 build
- name: Build
if: startsWith(github.ref, 'refs/tags/v') != true
run: npm run build:desktop
# Publish x64 build on tags starting with 'v'
- name: Publish
if: startsWith(github.ref, 'refs/tags/v')
run: npm -w @pikatorrent/desktop run publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# arm64 build
- name: Build for arm64
if: ${{ matrix.os == 'ubuntu-latest' && startsWith(github.ref, 'refs/tags/v') != true }}
run: |
# Clean all node modules before installing arm64 compatibles deps
npx --ws rimraf@5 --glob **/node_modules
TARGET_ARCH=arm64 npm ci
npm run build:desktop -- -- --arch=arm64
# Publish arm64 build on tags starting with 'v'
- name: Publish arm64
if: ${{ matrix.os == 'ubuntu-latest' && startsWith(github.ref, 'refs/tags/v') }}
run: |
# Clean all node modules before installing arm64 compatibles deps
npx --ws rimraf@5 --glob **/node_modules
TARGET_ARCH=arm64 npm ci
npm -w @pikatorrent/desktop run publish -- -- --arch=arm64
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: pikatorrent-${{ matrix.os }}
path: apps/desktop/out/make/**/*
android:
# EAS will not be able to use expo token in pull request
if: ${{ github.event_name != 'pull_request' }}
name: android
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "temurin"
- name: Install dependencies
run: sudo apt update && sudo apt install -y --no-install-recommends git g++ wget curl zip vim pkg-config tar cmake unzip ca-certificates
- name: Setup Android SDK
uses: android-actions/setup-android@v3
# - name: Install NDK
# run: sdkmanager "ndk;27.0.11902837"
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: 1de2026f28ead93ff1773e6e680387643e914ea1 # 2024.07.12
- name: Install vcpkg packages
run: |
vcpkg install curl:x86-android openssl:x86-android
vcpkg install curl:x64-android openssl:x64-android
vcpkg install curl:arm-android openssl:arm-android
vcpkg install curl:arm64-android openssl:arm64-android
- name: Setup EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: Install
run: npm ci
- name: Build preview (.apk)
run: npm -w @pikatorrent/app run build:android:preview
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: pikatorrent.apk
path: apps/app/*.apk
# Build production (.aab) on tags starting with 'v'
- name: Build production
if: startsWith(github.ref, 'refs/tags/v')
run: npm -w @pikatorrent/app run build:android:production
# Upload production (.aab) on tags starting with 'v'
- name: Upload artifacts
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@v4
with:
name: pikatorrent.aab
path: apps/app/*.aab
web:
name: web
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- name: Install
run: npm ci
- name: Build
run: npm run build:web
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: pikatorrent-web
path: apps/app/dist/