From 84584f8866d56bc5c8045725d6803b9eda91d42c Mon Sep 17 00:00:00 2001
From: Nick Carton <nick.carton@gmail.com>
Date: Sat, 28 Dec 2024 21:51:31 +1100
Subject: [PATCH] Update docker build steps

---
 .github/{ => workflows}/docker-publish.yml | 23 +++++++++++++---------
 .github/workflows/release.yml              |  9 +++++++++
 dist-workspace.toml                        | 11 +++--------
 3 files changed, 26 insertions(+), 17 deletions(-)
 rename .github/{ => workflows}/docker-publish.yml (63%)

diff --git a/.github/docker-publish.yml b/.github/workflows/docker-publish.yml
similarity index 63%
rename from .github/docker-publish.yml
rename to .github/workflows/docker-publish.yml
index 9a94f72..7931249 100644
--- a/.github/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -3,7 +3,7 @@ name: Publish Docker image
 on:
   workflow_call:
     inputs:
-      tag:
+      plan:
         required: true
         type: string
     secrets:
@@ -16,10 +16,21 @@ jobs:
   docker:
     runs-on: ubuntu-latest
     steps:
+      - name: Parse plan
+        id: plan
+        run: |
+          # Extract the tag from plan.outputs.tag
+          echo "Plan content for debugging:"
+          echo '${{ inputs.plan }}' | jq .
+          TAG=$(echo '${{ inputs.plan }}' | jq -r '.tag')
+          VERSION=$(echo '${{ inputs.plan }}' | jq -r '.releases[0].app_version')
+          echo "TAG=$TAG" >> $GITHUB_OUTPUT
+          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
+
       - name: Checkout
         uses: actions/checkout@v4
         with:
-          ref: ${{ inputs.tag }}
+          ref: ${{ steps.plan.outputs.TAG }}
 
       - name: Set up QEMU
         uses: docker/setup-qemu-action@v3
@@ -33,12 +44,6 @@ jobs:
           username: ${{ secrets.DOCKER_USERNAME }}
           password: ${{ secrets.DOCKER_PASSWORD }}
 
-      - name: Extract version from tag
-        id: version
-        run: echo "VERSION=${TAG#v}" >> $GITHUB_OUTPUT
-        env:
-          TAG: ${{ inputs.tag }}
-
       - name: Build and push
         uses: docker/build-push-action@v5
         with:
@@ -47,6 +52,6 @@ jobs:
           push: true
           tags: |
             bitping/distributed-metrics:latest
-            bitping/distributed-metrics:${{ steps.version.outputs.VERSION }}
+            bitping/distributed-metrics:${{ steps.plan.outputs.VERSION }}
           cache-from: type=gha
           cache-to: type=gha,mode=max
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 11a8551..848230a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -358,3 +358,12 @@ jobs:
       - uses: actions/checkout@v4
         with:
           submodules: recursive
+
+  custom-docker-publish:
+    needs:
+      - plan
+      - announce
+    uses: ./.github/workflows/docker-publish.yml
+    with:
+      plan: ${{ needs.plan.outputs.val }}
+    secrets: inherit
diff --git a/dist-workspace.toml b/dist-workspace.toml
index 28c849d..333029d 100644
--- a/dist-workspace.toml
+++ b/dist-workspace.toml
@@ -12,13 +12,7 @@ installers = ["shell", "homebrew"]
 # A GitHub repo to push Homebrew formulas to
 tap = "BitpingApp/homebrew-tap"
 # Target platforms to build apps for (Rust target-triple syntax)
-targets = [
-  "aarch64-apple-darwin",
-  "aarch64-unknown-linux-gnu",
-  "x86_64-apple-darwin",
-  "x86_64-unknown-linux-gnu",
-  "x86_64-unknown-linux-musl",
-]
+targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl"]
 # Path that installers should place binaries in
 install-path = "CARGO_HOME"
 # Publish jobs to run in CI
@@ -26,7 +20,8 @@ publish-jobs = ["homebrew"]
 # Whether to install an updater program
 install-updater = true
 github-build-setup = "../build-setup.yml"
-post-announce-jobs = ["../docker-publish.yml"]
+# Post-announce jobs to run in CI
+post-announce-jobs = ["./docker-publish"]
 
 [dist.github-custom-runners]
 # Linux x86_64 builds