From deea2f383988aef51035b27b10167cebfd29f612 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 4 Jun 2024 20:55:18 -0500 Subject: Clarify some things in OTA docs (#4367) * Clarify some things * add github outputs script * add slack notify android * test slack android * fix indent * fix test * sigh... * Revert "fix test" This reverts commit c99764464f0e0d147587e3b813319b9b887a30d8. * Revert "fix indent" This reverts commit 4cce508d280c4f9e7b0ee6f9c2693fa88d2b65f4. * Revert "test slack android" This reverts commit b02419b2471e99faa5bac860276fc71b11d35b6a. * test ios workflow * remove testing * add slack info to docs * use correct output for android --------- Co-authored-by: Hailey --- .github/workflows/build-submit-android.yml | 11 +++++++++-- .github/workflows/build-submit-ios.yml | 19 ++++++++++++++++++ docs/deploy-ota.md | 30 +++++++++++++++++++++-------- docs/img/slack-build-info.png | Bin 0 -> 101715 bytes scripts/setGitHubOutput.sh | 9 +++++++++ 5 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 docs/img/slack-build-info.png create mode 100755 scripts/setGitHubOutput.sh diff --git a/.github/workflows/build-submit-android.yml b/.github/workflows/build-submit-android.yml index ec9e0d320..6914b6362 100644 --- a/.github/workflows/build-submit-android.yml +++ b/.github/workflows/build-submit-android.yml @@ -34,6 +34,9 @@ jobs: node-version-file: .nvmrc cache: yarn + - name: 🪛 Setup jq + uses: dcarbone/install-jq-action@v2 + - name: 🔨 Setup EAS uses: expo/expo-github-action@v8 with: @@ -96,13 +99,17 @@ jobs: name: build-${{ steps.timestamp.outputs.time }}.apk path: build.apk + - name: 📚 Get version from package.json + id: get-build-info + run: bash scripts/setGitHubOutput.sh + - name: 🔔 Notify Slack of Production Build if: ${{ inputs.profile == 'production' }} uses: slackapi/slack-github-action@v1.25.0 with: payload: | { - "text": "Android build is ready for submission. This is a production build! Download the artifact here: ${{ steps.upload-artifact-production.outputs.artifact-url }}" + "text": "Android production build for Google Play Store submission is ready!\n```Artifact: ${{ steps.upload-artifact-production.outputs.artifact-url }}\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_ANDROID_VERSION_CODE }}```" } env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }} @@ -140,7 +147,7 @@ jobs: with: payload: | { - "text": "Android production APK build is ready for download. This is a production build, and you should add it to the GitHub release! Download the artifact here: ${{ steps.upload-artifact-production-apk.outputs.artifact-url }}" + "text": "Android production build for GitHub/Obtanium is ready!\n```Artifact: ${{ steps.upload-artifact-production-apk.outputs.artifact-url }}\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_ANDROID_VERSION_CODE }}```" } env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }} diff --git a/.github/workflows/build-submit-ios.yml b/.github/workflows/build-submit-ios.yml index c1693b814..284e666df 100644 --- a/.github/workflows/build-submit-ios.yml +++ b/.github/workflows/build-submit-ios.yml @@ -34,6 +34,9 @@ jobs: node-version-file: .nvmrc cache: yarn + - name: 🪛 Setup jq + uses: dcarbone/install-jq-action@v2 + - name: 🔨 Setup EAS uses: expo/expo-github-action@v8 with: @@ -81,6 +84,22 @@ jobs: - name: 🚀 Deploy run: eas submit -p ios --non-interactive --path build.ipa + - name: 📚 Get version from package.json + id: get-build-info + run: bash scripts/setGitHubOutput.sh + + - name: 🔔 Notify Slack of Production Build + if: ${{ inputs.profile == 'production' }} + uses: slackapi/slack-github-action@v1.25.0 + with: + payload: | + { + "text": "iOS production build for App Store submission is ready!\n```Artifact: Check TestFlight to know when it is available\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_IOS_BUILD_NUMBER }}```" + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }} + SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK + - name: ⬇️ Restore Cache id: get-base-commit uses: actions/cache@v4 diff --git a/docs/deploy-ota.md b/docs/deploy-ota.md index e92aebd39..391a6bf6b 100644 --- a/docs/deploy-ota.md +++ b/docs/deploy-ota.md @@ -14,15 +14,20 @@ diff results in incompatible native changes, a new client build will automatical ### Prerequisites -- Remove any internal client from your device and download the client from the App Store/Google Play. This will help for -testing as well as retrieving the build number. -- You should have signed in to EAS locally through npx eas login. You will need to modify the build number in a -subsequent step. -- Identify the build number of the production app you want to deploy an update for. iOS and Android build numbers are -divergent, so you will need to find both +- Find the latest production build number for both iOS and Android in Slack. These are listed in #client-builds + - Production builds always send the Version Number and Build Number in the Slack message. Search for the latest + production version number, and you should find the correct information. + + ![slack-build-info](./img/slack-build-info.png) + +- It may also be useful to check the current production clients for these values. This will also help for testing. Note +that you will need to _fully_ remove the existing internal client build from your device, otherwise the given values in +the app may differ from the actual production values. ![app-build-number](./img/app-build-number.png) +- You should have signed in to EAS locally through npx eas login. You will need to modify the build number in a +subsequent step. - Ensure that the commit the initial client was cut from is properly tagged in git. The tag should be in the format of 1.X.0 - Note: If the commit is not properly tagged, then the OTA deployment will simply fail since the GitHub Action will not be able to find a commit to fingerprint and diff against. @@ -38,14 +43,17 @@ to create your branch from, this should be properly set. ### Deployment -- Update the build number through EAS +- Update the build number through EAS to match the build numbers of the + production iOS/Android apps - Note: This isn’t strictly necessary, but having a step that takes you off of GitHub and into the terminal provides a little “friction” to avoid fat fingering a release. Since there are legitimate reasons to just “click and deploy” for internal builds, I felt it useful to make sure it doesn’t accidentally become a prod deployment. - - Set the build number to the appropriate build number found in the prerequisite steps. Again, this should be the + - Set the build numbers to the values found in the prerequisite steps. Again, this should be the build number for the current production release you want to deploy for. - `npx eas build:version:set -p ios` - `npx eas build:version:set -p android` + - These steps should spit out what the current build number is, save those values + for later too - Run the deployment - Navigate to https://github.com/bluesky-social/social-app/actions/workflows/bundle-deploy-eas-update.yml - Select the “Run Workflow” dropdown @@ -79,3 +87,9 @@ In about five minutes, the new deployment should be available for download. To t - Launch the app once and wait approximately 15 seconds - Relaunch the app - Check the Settings page and scroll to the bottom. The commit hash should now be the latest commit on your deployed branch. + +### Post Deployment + +- Reset both platforms build numbers to what they were before the OTA + deployment. These values should have been logged by the EAS CLI when you + reset them to the production values prior to OTA. diff --git a/docs/img/slack-build-info.png b/docs/img/slack-build-info.png new file mode 100644 index 000000000..1f69518ce Binary files /dev/null and b/docs/img/slack-build-info.png differ diff --git a/scripts/setGitHubOutput.sh b/scripts/setGitHubOutput.sh new file mode 100755 index 000000000..e8ecfcdaf --- /dev/null +++ b/scripts/setGitHubOutput.sh @@ -0,0 +1,9 @@ +#!/bin/bash +outputIos=$(eas build:version:get -p ios) +outputAndroid=$(eas build:version:get -p android) +BSKY_IOS_BUILD_NUMBER=${outputIos#*buildNumber - } +BSKY_ANDROID_VERSION_CODE=${outputAndroid#*versionCode - } + +echo PACKAGE_VERSION="$(jq -r '.version' package.json)" > "$GITHUB_OUTPUT" +echo BSKY_IOS_BUILD_NUMBER=$BSKY_IOS_BUILD_NUMBER >> "$GITHUB_OUTPUT" +echo BSKY_ANDROID_VERSION_CODE=$BSKY_ANDROID_VERSION_CODE >> "$GITHUB_OUTPUT" -- cgit 1.4.1