Skip to content

release: 2.19.1 (348) #10

release: 2.19.1 (348)

release: 2.19.1 (348) #10

Workflow file for this run

name: build_release
on:
workflow_call: # for beta releases from main - release.yml / dispatch_beta_release
inputs:
is_main_build:
type: boolean
required: true
app_build:
type: string
required: true
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"
env:
APP_GIT_REF: ${{ inputs.is_main_build && github.sha || github.ref_name }}
APP_BUILD: ${{ inputs.app_build }}
concurrency:
group: release
jobs:
build_web:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: corepack enable
- name: 📦 Install dependencies
run: pnpm install --frozen-lockfile
- name: Build dist bundle
run: pnpm build
- name: Upload dist bundle to S3
if: inputs.is_main_build != true
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: dist
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Compress artifacts
run: |
zip -r Voyager-Web-$APP_GIT_REF.zip dist
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: Voyager-Web-${{ env.APP_GIT_REF }}.zip
path: Voyager-Web-${{ env.APP_GIT_REF }}.zip
build_ios:
environment: deploy
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Download bumped version artifacts
if: inputs.is_main_build
uses: actions/download-artifact@v4
with:
name: trapeze-artifacts
- uses: actions/setup-node@v4
with:
node-version: 22
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
- name: Install Fastlane
run: |
gem install bundler
bundle install
- run: corepack enable
- run: pnpm i --frozen-lockfile
- name: Build (Ionic)
run: pnpm exec ionic cap sync
env:
CI_PLATFORM: ios
- name: Deploy to TestFlight
run: |
echo "$APP_STORE_CONNECT_KEY" > authkey.json
bundle exec fastlane deploy
env:
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
COMMIT_MSG: ${{ github.event.commits[0].message }}
- name: Upload iOS IPA as artifact
uses: actions/upload-artifact@v4
with:
name: Voyager-iOS-${{ env.APP_GIT_REF }}.ipa
path: Voyager-iOS-${{ env.APP_GIT_REF }}.ipa
build_android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download bumped version artifacts
if: inputs.is_main_build
uses: actions/download-artifact@v4
with:
name: trapeze-artifacts
- uses: actions/setup-node@v4
with:
node-version: 22
- run: corepack enable
- run: pnpm i --frozen-lockfile
- name: Build (Ionic)
run: pnpm exec ionic cap sync
env:
BUILD_FOSS_ONLY: 1
CI_PLATFORM: android
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "corretto"
cache: gradle
- name: Build (Android)
run: |
echo $ANDROID_KEYSTORE | base64 --decode > android/app/release-ci.keystore
cd android
./gradlew assembleRelease
env:
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
- run: mv android/app/build/outputs/apk/release/app-release.apk Voyager-Android-${{ env.APP_GIT_REF }}.apk
- name: Send to Artifacts
uses: actions/upload-artifact@v4
with:
name: Voyager-Android-${{ env.APP_GIT_REF }}.apk
path: Voyager-Android-${{ env.APP_GIT_REF }}.apk
build_android_play:
environment: deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download bumped version artifacts
if: inputs.is_main_build
uses: actions/download-artifact@v4
with:
name: trapeze-artifacts
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
- name: Install Fastlane
run: |
gem install bundler
bundle install
- run: corepack enable
- run: pnpm i --frozen-lockfile
- name: Build (Ionic)
run: pnpm exec ionic cap sync
env:
CI_PLATFORM: android
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "corretto"
cache: gradle
- name: Build (Android)
run: |
echo $ANDROID_KEYSTORE | base64 --decode > android/app/release-ci.keystore
env:
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
- name: Setup service account
run: echo $GOOGLE_SERVICE_ACCOUNT | base64 --decode > android/pc-api.json
env:
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
- name: Run Fastlane
run: bundle exec fastlane android deploy
env:
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
create_release:
needs: [build_web, build_ios, build_android_play, build_android]
if: inputs.is_main_build != true
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download dist artifacts
uses: actions/download-artifact@v4
with:
name: Voyager-Web-${{ env.APP_GIT_REF }}.zip
path: artifacts/web
- name: Download iOS Artifact
uses: actions/download-artifact@v4
with:
name: Voyager-iOS-${{ env.APP_GIT_REF }}.ipa
path: artifacts/ios
- name: Download Android Artifact
uses: actions/download-artifact@v4
with:
name: Voyager-Android-${{ env.APP_GIT_REF }}.apk
path: artifacts/android
- name: Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
artifacts/ios/*
artifacts/android/*
artifacts/web/*