Skip to content

wip: Attempt mobile builds #15

wip: Attempt mobile builds

wip: Attempt mobile builds #15

Workflow file for this run

name: deploy_tauri
on:
push:
branches:
- release
# This workflow will trigger on each push to the `release` branch to create or update a GitHub release, build your app, and upload the artifacts to the release.
env:
APPLE_DEVELOPMENT_TEAM: ${{ secrets.APPLE_TEAM_ID }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
NODE_OPTIONS: --max-old-space-size=4096
NUXT_PUBLIC_CDN_URL: ${{ secrets.VITE_APP_CDN_URL }}
NUXT_PUBLIC_DISCORD_INVITE_LINK: ${{ secrets.VITE_DISCORD_INVITE_LINK }}
NUXT_PUBLIC_FATHOM_EVENT_ACCOUNT_REGISTRATION: ${{ secrets.VUE_APP_FATHOM_GOAL_ACCOUNT_REGISTRATION }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_CONTINUE_WITH_PRO: ${{ secrets.VUE_APP_FATHOM_EVENT_CTA_CONTINUE_WITH_PRO }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_MODAL_UPGRADE: ${{ secrets.VITE_FATHOM_EVENT_CTA_MODAL_UPGRADE }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_OPEN_APP: ${{ secrets.VITE_FATHOM_EVENT_CTA_OPEN_APP }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_SAVE_DOCS: ${{ secrets.VUE_APP_FATHOM_GOAL_CTA_SYNC_DOCS }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_SETTINGS_UPGRADE: ${{ secrets.VITE_FATHOM_EVENT_CTA_SETTINGS_UPGRADE }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_SIGN_UP_NOW: ${{ secrets.VITE_FATHOM_EVENT_CTA_SIGN_UP_NOW }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_TRY_IT_OUT: ${{ secrets.VITE_FATHOM_EVENT_CTA_TRY_IT_OUT }}
NUXT_PUBLIC_FATHOM_EVENT_CTA_UPGRADE_TO_PRO: ${{ secrets.VUE_APP_FATHOM_EVENT_CTA_UPGRADE_TO_PRO }}
NUXT_PUBLIC_FATHOM_SITE_ID: ${{ secrets.VUE_APP_FATHOM_SITE_ID }}
NUXT_PUBLIC_FATHOM_SITE_URL: ${{ secrets.VUE_APP_FATHOM_SITE_URL }}
NUXT_PUBLIC_FIREBASE_API_KEY: ${{ secrets.VUE_APP_FIREBASE_API_KEY }}
NUXT_PUBLIC_FIREBASE_APP_ID: ${{ secrets.VUE_APP_FIREBASE_APP_ID }}
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${{ secrets.VUE_APP_FIREBASE_AUTH_DOMAIN }}
NUXT_PUBLIC_FIREBASE_DATABASE_URL: ${{ secrets.VUE_APP_FIREBASE_DATABASE_URL }}
NUXT_PUBLIC_FIREBASE_DISABLED:
NUXT_PUBLIC_FIREBASE_LOG_LEVEL: ${{ secrets.VITE_FIREBASE_LOG_LEVEL }}
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VUE_APP_FIREBASE_MESSAGING_SENDER_ID }}
NUXT_PUBLIC_FIREBASE_PROJECT_ID: ${{ secrets.VUE_APP_FIREBASE_PROJECT_ID }}
NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET: ${{ secrets.VUE_APP_FIREBASE_STORAGE_BUCKET }}
NUXT_PUBLIC_LINK_FEEDBACK: ${{ secrets.LINK_FEEDBACK }}
NUXT_PUBLIC_STRIPE_MONTHLY_PRICE: ${{ secrets.VUE_APP_STRIPE_MONTHLY_PRICE }}
TAURI: 1
TAURI_DESKTOP: 1
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD:
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- name: desktop_macos_arm
platform: macos-latest # for Arm based macs (M1 and above).
args: --verbose --target aarch64-apple-darwin
rust_targets: aarch64-apple-darwin,x86_64-apple-darwin
- name: desktop_macos_intel
platform: macos-latest # for Intel based macs.
args: --verbose --target x86_64-apple-darwin
rust_targets: aarch64-apple-darwin,x86_64-apple-darwin
- name: mobile_ios
platform: macos-latest # for Intel based macs.
args: --verbose --target x86_64-apple-darwin
rust_targets: aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim
ios: true
- name: desktop_linux
platform: ubuntu-22.04 # for Tauri v1 you could replace this with ubuntu-20.04.
args: --verbose
- name: mobile_android
platform: ubuntu-latest # for Tauri v1 you could replace this with ubuntu-20.04.
args: --verbose
rust_targets: aarch64-linux-android,armv7-linux-androideabi,i686-linux-android,x86_64-linux-android
android: true
# Not working yet.
# - name: Desktop Windows
# platform: windows-latest
# args: --verbose
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: Install Node
uses: actions/setup-node@v4
with:
node-version: 18
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.rust_targets }}
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04' || matrix.platform == 'ubuntu-latest' # This must match the platform value defined above.
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install xcode
uses: maxim-lobanov/setup-xcode@v1
if: matrix.ios
with:
xcode-version: latest-stable
- name: Install Java
if: matrix.android
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
- name: Setup Android SDK
if: matrix.android
uses: android-actions/setup-android@v3
- name: Setup Android NDK
if: matrix.android
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r26d
link-to-sdk: true
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
key: v1-${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
path: |
${{ env.STORE_PATH }}
restore-keys: v1-${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --shamefully-hoist
- name: init android
if: matrix.android
env:
NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
pnpm tauri android init
- name: init ios
if: matrix.ios
run: |
pnpm tauri ios init
- name: Import Apple Developer Certificate
if: matrix.platform == 'macos-latest'
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
security find-identity -v -p codesigning build.keychain
- name: Verify Certificate
if: matrix.platform == 'macos-latest'
run: |
set -x
CERT_INFO=$(security find-identity -v -p codesigning build.keychain | grep "Developer ID Application")
CERT_ID=$(echo "$CERT_INFO" | awk -F'"' '{print $2}')
echo "CERT_ID=$CERT_ID" >> $GITHUB_ENV
echo "Certificate imported."
- name: Tauri info
run: |
pnpm tauri info
- name: Build iOS app
if: matrix.ios
run: |
pnpm tauri ios build --verbose
- name: Build Android app
if: matrix.android
env:
NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
pnpm tauri android build --verbose
# - uses: tauri-apps/tauri-action@v0
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
# APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
# APPLE_ID: ${{ secrets.APPLE_ID }}
# APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
# APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# APPLE_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
# APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }}
# with:
# tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version.
# releaseName: App v__VERSION__
# releaseBody: See the assets to download this version and install.
# releaseDraft: true
# prerelease: false
# args: ${{ matrix.args }}