Skip to content

ci: enforce pr convention, automated beta track from main (#1705) #8

ci: enforce pr convention, automated beta track from main (#1705)

ci: enforce pr convention, automated beta track from main (#1705) #8

Workflow file for this run

name: build_release
on:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"
- "test-[0-9]+.[0-9]+.[0-9]+"
branches:
- "main"
jobs:
build_web:
runs-on: ubuntu-latest
concurrency:
group: "build_web"
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: github.ref_name != 'test*'
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-${{ github.ref_name }}.zip dist
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: Voyager-Web-${{ github.ref_name }}.zip
path: Voyager-Web-${{ github.ref_name }}.zip
build_ios:
environment: deploy
runs-on: macos-latest
concurrency:
group: "build_ios"
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- 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
if: github.ref_name != 'test*'
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-${{ github.ref_name }}.ipa
path: Voyager-iOS-${{ github.ref_name }}.ipa
build_android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- 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-${{ github.ref_name }}.apk
- name: Send to Artifacts
uses: actions/upload-artifact@v4
with:
name: Voyager-Android-${{ github.ref_name }}.apk
path: Voyager-Android-${{ github.ref_name }}.apk
build_android_play:
environment: deploy
runs-on: ubuntu-latest
concurrency:
group: "build_android_play"
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- 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: startsWith(github.ref_name, 'test-') != true && startsWith(github.event.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download dist artifacts
uses: actions/download-artifact@v4
with:
name: Voyager-Web-${{ github.ref_name }}.zip
path: artifacts/web
- name: Download iOS Artifact
uses: actions/download-artifact@v4
with:
name: Voyager-iOS-${{ github.ref_name }}.ipa
path: artifacts/ios
- name: Download Android Artifact
uses: actions/download-artifact@v4
with:
name: Voyager-Android-${{ github.ref_name }}.apk
path: artifacts/android
- name: Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
artifacts/ios/*
artifacts/android/*
artifacts/web/*