Skip to main content

Release process

⚠️ This page is a draft

Release process - draft

TODO

  • Automate Android release process
  • Fix Android: encrypt keystore, remove access with personal account
  • Automate build number increment
  • Automate tag, release and changelog

Workflows

iOS Release process native-deploy-ios.yml

Android Release process is not automated yet, see ENG-504

Typical release process

Prepare release

  • Extract Jira tickets from commit messages using latest release's date (https://github.com/asset-reality/frontend/releases). The list might not contain all the changes, verify on Jira.

    sh scripts/extract_jira_tickets.sh 2024-11-21 packages/native
  • The Release Manager (RM) should manually create a new release branch (ie: release/app/1.6.0)

  • Set new release version on iOS (ie: bump to 1.6.0)

    yarn workspace native deploy:ios:increment_version:minor
  • Set new release version on Android (ie: bump to 1.6.0)

    yarn workspace native deploy:android:increment_version:minor
  • Push changes to the release branch

Build and distribute

  • The workflow native-deploy-ios.yml builds and distributes iOS builds via CI when merging on release branches (release/*). Android needs to be built from local machine.
  • Pushing any change to the release branch builds and deploys release candidate builds.
  • ⚠️ The workflow native-deploy-ios.yml is currently broken, see ENG-1309 Fix build and deploy iOS workflow. RM needs to build and deploy from local machine (see instructions below).

Test

  • Test and verify all the tickets included in the release
  • Run regression testing on iOS and Android devices
  • When test passed, RM should make the Testflight build available for "Asset reality testers" group alt text
  • RM should share a message in Slack with the major changes and link to the APK file alt text

Create release on AppStore

  • Create new draft release on AppStore Connect. ⚠️ The version is hardcoded now, on CI we should use the branch name (ie: release/1.6.0)

    yarn workspace native deploy:ios:draft:release
  • RM should manually select the release candidate build and submit it for review. alt text

    alt text

Create release on Play store

  • Play store RM should create the new release, select the build, save and submit it for review. alt text

    alt text

Finish release

  • When AppStore and Play store approved the releases, the RM can publish the app to the stores and finally close the release
    • ⚠️We don't have a strict process to close the release yet
    • Merge release branch to main (squash commit)
    • Merge main to production (we will probably get rid of production branch soon)
    • Tag release with commit hash
    git tag -a app/1.6.0 <hash> -m "Tag app/1.6.0"
    git push --tags
    • Create Github release and add autogenerated changelog alt text

Build and deploy from local machine

  • Ensure the local machine is properly setup (see getting-started.md)

  • Ensure the local machine has ssh access to Github

  • Define env vars on local machine (Request access to those secrets on Dashlane)

    • export MATCH_PASSWORD=*******
    • export APPSTORE_AUTHKEY=*******
    • export MATCH_PRIVATE_KEY=*******
  • Ensure the env vars are properly set

    • echo $MATCH_PASSWORD
    • echo $APPSTORE_AUTHKEY
    • echo $MATCH_PRIVATE_KEY
  • The machine is now setup. Follow the instructions below to build and distribute.

iOS

  • Manually increment the build number

    yarn workspace native deploy:increment_build
  • Decrypt the iOS auth key

    yarn workspace native deploy:ios:decrypt_secret
  • Build and distribute to Testflight

    yarn workspace native deploy:ios
  • Use the dry_run parameter to build without distribution (just for testing)

    yarn workspace native deploy:ios dry_run:true

Android

  • ⚠️ Credentials are hardcoded in the Fastfile (eventually we will run yarn workspace native deploy:android:decrypt_secret)
  • Build and distribute to Play store
    yarn workspace native deploy:android
  • Use the dry_run parameter to build without distribution (just for testing)
    yarn workspace native deploy:android dry_run:true
  • The script uploads the build to Play Store internal track.
  • Open internal testing section alt text
  • Select the build and open the Downloads section
  • Download the universal APK alt text
  • Upload the APK on Google Drive AR Share adn share with Asset Reality group alt text