Skip to content

ci: free disk space #230

ci: free disk space

ci: free disk space #230

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: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: 1de2026f28ead93ff1773e6e680387643e914ea1 # 2024.07.12
- name: Get Dependencies
run: |
set -ex
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
ninja-build
sudo apt clean
- name: Install vcpkg packages
run: |
vcpkg install --clean-after-build curl:x86-android openssl:x86-android
vcpkg install --clean-after-build curl:x64-android openssl:x64-android
vcpkg install --clean-after-build curl:arm-neon-android openssl:arm-neon-android
vcpkg install --clean-after-build curl:arm64-android openssl:arm64-android
- name: Free Disk Space
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: false
dotnet: true
haskell: true
large-packages: false
docker-images: false
swap-storage: false
- 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/