From 9684c5a81deb50f9f45d3b55a3c92ec7c5b4ab06 Mon Sep 17 00:00:00 2001 From: Dhruv Porwal Date: Thu, 16 Apr 2026 01:47:12 +0530 Subject: [PATCH 1/5] react-native-smallcase-gateway chore(release): add post-publish release tracking via GitHub Actions --- .github/workflows/publish.yml | 23 ++++++++++++++- scripts/track-release.sh | 55 +++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100755 scripts/track-release.sh diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ce3a9184..eb10d2c3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,4 +20,25 @@ jobs: - uses: volta-cli/action@v4 - run: yarn install --frozen-lockfile - - run: npm publish \ No newline at end of file + - run: npm publish + + - name: Setup Deno + uses: denoland/setup-deno@v2 + with: + deno-version: v2.x + continue-on-error: true + + - name: Clone small-things + uses: actions/checkout@v6 + with: + repository: smallcase/small-things + path: small-things + token: ${{ secrets.GH_PAT }} + continue-on-error: true + + - name: Track release + env: + SMALL_THINGS_PATH: small-things + NOTIFY_WEBHOOK_URL: ${{ secrets.NOTIFY_WEBHOOK_URL }} + run: bash scripts/track-release.sh --version $(node -p "require('./package.json').version") + continue-on-error: true \ No newline at end of file diff --git a/scripts/track-release.sh b/scripts/track-release.sh new file mode 100755 index 00000000..0f30e981 --- /dev/null +++ b/scripts/track-release.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# Tracks an npm release in small-things (Slack notification). +# Non-critical: failures are logged but do not affect the release. +# Invoked automatically by release-it via the after:release hook. +# +# Usage: track-release.sh --version +set -o pipefail + +while [[ $# -gt 0 ]]; do + case "$1" in + --version) VERSION="$2"; shift 2 ;; + *) echo "Unknown argument: $1"; exit 1 ;; + esac +done + +if [[ -z "$VERSION" ]]; then + echo "Warning: No version provided. Skipping release tracking." + exit 0 +fi + +SDK_NAME="scgateway" +RELEASE_TYPE="${RELEASE_TYPE:-prod}" + +echo "Tracking release: $SDK_NAME v$VERSION (type: $RELEASE_TYPE)" + +SMALL_THINGS_PATH="${SMALL_THINGS_PATH:-../small-things}" +if [[ ! -d "$SMALL_THINGS_PATH" ]] && [[ -n "${BITRISE_SOURCE_DIR:-}" ]]; then + SMALL_THINGS_PATH="$BITRISE_SOURCE_DIR/../small-things" +fi + +if [[ ! -d "$SMALL_THINGS_PATH" ]]; then + echo "Warning: small-things not found at $SMALL_THINGS_PATH. Skipping release tracking." + exit 0 +fi + +if ! command -v deno &>/dev/null; then + echo "Warning: Deno not found. Skipping release tracking." + exit 0 +fi + +TRACK_ARGS=( + --platform react-native + --sdkName "$SDK_NAME" + --version "$VERSION" + --publishTarget "npm" + --releaseType "$RELEASE_TYPE" +) +[ -n "${NOTIFY_WEBHOOK_URL:-}" ] && TRACK_ARGS+=( --webhookUrl "$NOTIFY_WEBHOOK_URL" ) + +ORIGINAL_DIR=$(pwd) +cd "$SMALL_THINGS_PATH" +deno run --allow-all main.ts gw track-release "${TRACK_ARGS[@]}" 2>&1 || { + echo "Warning: Failed to track release in small-things (non-critical - release was successful)" +} +cd "$ORIGINAL_DIR" From 230aa032d3fae6fd89e7bb05b2933bcb79c2dfbe Mon Sep 17 00:00:00 2001 From: Dhruv Porwal Date: Thu, 16 Apr 2026 12:09:52 +0530 Subject: [PATCH 2/5] chore(track-release): use full package name and drop Bitrise fallback --- scripts/track-release.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/scripts/track-release.sh b/scripts/track-release.sh index 0f30e981..c3376198 100755 --- a/scripts/track-release.sh +++ b/scripts/track-release.sh @@ -1,7 +1,6 @@ #!/usr/bin/env bash # Tracks an npm release in small-things (Slack notification). # Non-critical: failures are logged but do not affect the release. -# Invoked automatically by release-it via the after:release hook. # # Usage: track-release.sh --version set -o pipefail @@ -18,15 +17,12 @@ if [[ -z "$VERSION" ]]; then exit 0 fi -SDK_NAME="scgateway" +SDK_NAME="react-native-smallcase-gateway" RELEASE_TYPE="${RELEASE_TYPE:-prod}" echo "Tracking release: $SDK_NAME v$VERSION (type: $RELEASE_TYPE)" SMALL_THINGS_PATH="${SMALL_THINGS_PATH:-../small-things}" -if [[ ! -d "$SMALL_THINGS_PATH" ]] && [[ -n "${BITRISE_SOURCE_DIR:-}" ]]; then - SMALL_THINGS_PATH="$BITRISE_SOURCE_DIR/../small-things" -fi if [[ ! -d "$SMALL_THINGS_PATH" ]]; then echo "Warning: small-things not found at $SMALL_THINGS_PATH. Skipping release tracking." From a6f63878fe9778812cc74d7c73d94ec2d78dbca5 Mon Sep 17 00:00:00 2001 From: Dhruv Porwal Date: Thu, 16 Apr 2026 19:13:18 +0530 Subject: [PATCH 3/5] chore: use small-things pre-built binary instead of deno + git clone Co-Authored-By: Claude Sonnet 4.6 --- scripts/track-release.sh | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/scripts/track-release.sh b/scripts/track-release.sh index c3376198..67ece238 100755 --- a/scripts/track-release.sh +++ b/scripts/track-release.sh @@ -22,17 +22,29 @@ RELEASE_TYPE="${RELEASE_TYPE:-prod}" echo "Tracking release: $SDK_NAME v$VERSION (type: $RELEASE_TYPE)" -SMALL_THINGS_PATH="${SMALL_THINGS_PATH:-../small-things}" - -if [[ ! -d "$SMALL_THINGS_PATH" ]]; then - echo "Warning: small-things not found at $SMALL_THINGS_PATH. Skipping release tracking." - exit 0 -fi - -if ! command -v deno &>/dev/null; then - echo "Warning: Deno not found. Skipping release tracking." +# Determine the target triple for the current platform +OS=$(uname -s) +ARCH=$(uname -m) +case "$OS-$ARCH" in + Darwin-arm64) TARGET="aarch64-apple-darwin" ;; + Darwin-x86_64) TARGET="x86_64-apple-darwin" ;; + Linux-aarch64) TARGET="aarch64-unknown-linux-gnu" ;; + Linux-x86_64) TARGET="x86_64-unknown-linux-gnu" ;; + *) + echo "Warning: Unsupported platform $OS-$ARCH. Skipping release tracking." + exit 0 + ;; +esac + +SMALL_THINGS_BIN=$(mktemp /tmp/small-things.XXXXXX) +DOWNLOAD_URL="https://github.com/smallcase/small-things/releases/latest/download/small-things-$TARGET" + +if ! curl -fsSL "$DOWNLOAD_URL" -o "$SMALL_THINGS_BIN" 2>&1; then + echo "Warning: Failed to download small-things binary. Skipping release tracking." + rm -f "$SMALL_THINGS_BIN" exit 0 fi +chmod +x "$SMALL_THINGS_BIN" TRACK_ARGS=( --platform react-native @@ -43,9 +55,7 @@ TRACK_ARGS=( ) [ -n "${NOTIFY_WEBHOOK_URL:-}" ] && TRACK_ARGS+=( --webhookUrl "$NOTIFY_WEBHOOK_URL" ) -ORIGINAL_DIR=$(pwd) -cd "$SMALL_THINGS_PATH" -deno run --allow-all main.ts gw track-release "${TRACK_ARGS[@]}" 2>&1 || { +"$SMALL_THINGS_BIN" gw track-release "${TRACK_ARGS[@]}" 2>&1 || { echo "Warning: Failed to track release in small-things (non-critical - release was successful)" } -cd "$ORIGINAL_DIR" +rm -f "$SMALL_THINGS_BIN" From c0488b52192e818ef085cd267f8530ae6587bdd5 Mon Sep 17 00:00:00 2001 From: Dhruv Porwal Date: Thu, 16 Apr 2026 19:30:08 +0530 Subject: [PATCH 4/5] chore: use small-things install.sh instead of direct binary download Co-Authored-By: Claude Sonnet 4.6 --- scripts/track-release.sh | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/scripts/track-release.sh b/scripts/track-release.sh index 67ece238..2e007fc9 100755 --- a/scripts/track-release.sh +++ b/scripts/track-release.sh @@ -22,29 +22,18 @@ RELEASE_TYPE="${RELEASE_TYPE:-prod}" echo "Tracking release: $SDK_NAME v$VERSION (type: $RELEASE_TYPE)" -# Determine the target triple for the current platform -OS=$(uname -s) -ARCH=$(uname -m) -case "$OS-$ARCH" in - Darwin-arm64) TARGET="aarch64-apple-darwin" ;; - Darwin-x86_64) TARGET="x86_64-apple-darwin" ;; - Linux-aarch64) TARGET="aarch64-unknown-linux-gnu" ;; - Linux-x86_64) TARGET="x86_64-unknown-linux-gnu" ;; - *) - echo "Warning: Unsupported platform $OS-$ARCH. Skipping release tracking." - exit 0 - ;; -esac - -SMALL_THINGS_BIN=$(mktemp /tmp/small-things.XXXXXX) -DOWNLOAD_URL="https://github.com/smallcase/small-things/releases/latest/download/small-things-$TARGET" - -if ! curl -fsSL "$DOWNLOAD_URL" -o "$SMALL_THINGS_BIN" 2>&1; then - echo "Warning: Failed to download small-things binary. Skipping release tracking." - rm -f "$SMALL_THINGS_BIN" +if [ -z "${GITHUB_ACCESS_TOKEN:-}" ]; then + echo "Warning: GITHUB_ACCESS_TOKEN not set. Skipping release tracking." exit 0 fi -chmod +x "$SMALL_THINGS_BIN" + +if ! curl -fsSL -H "Authorization: token $GITHUB_ACCESS_TOKEN" \ + https://raw.githubusercontent.com/smallcase/small-things/main/install.sh | bash -s -- latest "$GITHUB_ACCESS_TOKEN"; then + echo "Warning: Failed to install small-things. Skipping release tracking." + exit 0 +fi + +export PATH="$HOME/.deno/bin:$PATH" TRACK_ARGS=( --platform react-native @@ -55,7 +44,6 @@ TRACK_ARGS=( ) [ -n "${NOTIFY_WEBHOOK_URL:-}" ] && TRACK_ARGS+=( --webhookUrl "$NOTIFY_WEBHOOK_URL" ) -"$SMALL_THINGS_BIN" gw track-release "${TRACK_ARGS[@]}" 2>&1 || { +small-things gw track-release "${TRACK_ARGS[@]}" 2>&1 || { echo "Warning: Failed to track release in small-things (non-critical - release was successful)" } -rm -f "$SMALL_THINGS_BIN" From 1e642459476cfb1dfe3198be0019d3613aacf9aa Mon Sep 17 00:00:00 2001 From: Dhruv Porwal Date: Thu, 16 Apr 2026 19:52:00 +0530 Subject: [PATCH 5/5] chore: remove small-things install from track script --- scripts/track-release.sh | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/scripts/track-release.sh b/scripts/track-release.sh index 2e007fc9..482f2d6d 100755 --- a/scripts/track-release.sh +++ b/scripts/track-release.sh @@ -22,19 +22,6 @@ RELEASE_TYPE="${RELEASE_TYPE:-prod}" echo "Tracking release: $SDK_NAME v$VERSION (type: $RELEASE_TYPE)" -if [ -z "${GITHUB_ACCESS_TOKEN:-}" ]; then - echo "Warning: GITHUB_ACCESS_TOKEN not set. Skipping release tracking." - exit 0 -fi - -if ! curl -fsSL -H "Authorization: token $GITHUB_ACCESS_TOKEN" \ - https://raw.githubusercontent.com/smallcase/small-things/main/install.sh | bash -s -- latest "$GITHUB_ACCESS_TOKEN"; then - echo "Warning: Failed to install small-things. Skipping release tracking." - exit 0 -fi - -export PATH="$HOME/.deno/bin:$PATH" - TRACK_ARGS=( --platform react-native --sdkName "$SDK_NAME"