about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEric Bailey <git@esb.lol>2024-06-04 20:55:18 -0500
committerGitHub <noreply@github.com>2024-06-04 18:55:18 -0700
commitdeea2f383988aef51035b27b10167cebfd29f612 (patch)
tree027cf037d7c63a9a793883237035b96e99ec0e2d
parent7613cdb89b4929d97219f2a5c2830a73947bb28a (diff)
downloadvoidsky-deea2f383988aef51035b27b10167cebfd29f612.tar.zst
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 <me@haileyok.com>
-rw-r--r--.github/workflows/build-submit-android.yml11
-rw-r--r--.github/workflows/build-submit-ios.yml19
-rw-r--r--docs/deploy-ota.md30
-rw-r--r--docs/img/slack-build-info.pngbin0 -> 101715 bytes
-rwxr-xr-xscripts/setGitHubOutput.sh9
5 files changed, 59 insertions, 10 deletions
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
--- /dev/null
+++ b/docs/img/slack-build-info.png
Binary files differdiff --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"