diff --git a/.github/resolve-sibling-refs.sh b/.github/resolve-sibling-refs.sh index 2fc9cbae0..c250a1044 100755 --- a/.github/resolve-sibling-refs.sh +++ b/.github/resolve-sibling-refs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Resolve which branch of each sibling repo (viperblock, predastore, northstar) -# the CI workspace should build against. A cross-repo change is developed on a branch +# Resolve which branch of each sibling repo (viperblock, predastore, northstar, +# bluebottle) the CI workspace should build against. A cross-repo change is developed on a branch # of the SAME name in each repo; build against that branch when it exists so the # set can be tested together, and fall back to dev otherwise. This mirrors the # resolution the e2e path already does in @@ -8,14 +8,14 @@ # agree on how sibling branches are selected. # # Reads $BRANCH (the triggering head/ref name) and writes viperblock=, -# predastore= and northstar= to $GITHUB_OUTPUT for the checkout steps -# to consume. +# predastore=, northstar= and bluebottle= to $GITHUB_OUTPUT for +# the checkout steps to consume. set -euo pipefail : "${BRANCH:?BRANCH must be set to the triggering branch name}" : "${GITHUB_OUTPUT:?GITHUB_OUTPUT must be set}" -for repo in viperblock predastore northstar; do +for repo in viperblock predastore northstar bluebottle; do if git ls-remote --exit-code --heads \ "https://github.com/mulgadc/${repo}.git" "$BRANCH" >/dev/null 2>&1; then ref="$BRANCH" diff --git a/.github/workflows/publish-system-ami.yml b/.github/workflows/publish-system-ami.yml index 16940d2a5..36f919998 100644 --- a/.github/workflows/publish-system-ami.yml +++ b/.github/workflows/publish-system-ami.yml @@ -106,6 +106,13 @@ jobs: ref: dev path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + ref: dev + path: bluebottle + - name: Setup Go uses: actions/setup-go@v7 with: @@ -123,7 +130,7 @@ jobs: # "go.work already exists". run: | rm -f go.work go.work.sum - go work init ./spinifex ./viperblock ./predastore ./northstar + go work init ./spinifex ./viperblock ./predastore ./northstar ./bluebottle - name: Install build + upload tooling run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 76f04ebaa..e84848227 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,6 +34,12 @@ jobs: repository: mulgadc/northstar path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + path: bluebottle + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 @@ -85,6 +91,12 @@ jobs: repository: mulgadc/northstar path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + path: bluebottle + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 @@ -286,6 +298,12 @@ jobs: repository: mulgadc/northstar path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + path: bluebottle + - name: Checkout Mulga iso-builder uses: actions/checkout@v7 with: @@ -304,7 +322,7 @@ jobs: cache: false - name: Configure Go workspace - run: go work init ./spinifex ./predastore ./viperblock ./northstar + run: go work init ./spinifex ./predastore ./viperblock ./northstar ./bluebottle - name: Install ISO builder dependencies run: | diff --git a/.github/workflows/segscan-oracle.yml b/.github/workflows/segscan-oracle.yml index a46b82458..c5ca89f6f 100644 --- a/.github/workflows/segscan-oracle.yml +++ b/.github/workflows/segscan-oracle.yml @@ -58,6 +58,13 @@ jobs: ref: ${{ steps.siblings.outputs.northstar }} path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + ref: ${{ steps.siblings.outputs.bluebottle }} + path: bluebottle + - uses: actions/create-github-app-token@v3 id: app-token with: @@ -80,7 +87,7 @@ jobs: go-version-file: "spinifex/go.mod" - name: Setup Go Workspace - run: go work init ./spinifex ./viperblock ./predastore ./northstar + run: go work init ./spinifex ./viperblock ./predastore ./northstar ./bluebottle - name: Run Segscan Oracle Test env: diff --git a/.github/workflows/spinifex.yml b/.github/workflows/spinifex.yml index 16f9e71e4..bf772bdf4 100644 --- a/.github/workflows/spinifex.yml +++ b/.github/workflows/spinifex.yml @@ -60,6 +60,13 @@ jobs: ref: ${{ steps.siblings.outputs.northstar }} path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + ref: ${{ steps.siblings.outputs.bluebottle }} + path: bluebottle + - name: Setup Go uses: actions/setup-go@v7 with: @@ -67,7 +74,7 @@ jobs: go-version-file: "spinifex/go.mod" - name: Setup Go Workspace - run: go work init ./spinifex ./viperblock ./predastore ./northstar + run: go work init ./spinifex ./viperblock ./predastore ./northstar ./bluebottle - name: Build Spinifex run: make -C spinifex build @@ -128,6 +135,13 @@ jobs: ref: ${{ steps.siblings.outputs.northstar }} path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + ref: ${{ steps.siblings.outputs.bluebottle }} + path: bluebottle + - name: Setup Go uses: actions/setup-go@v7 with: @@ -135,7 +149,7 @@ jobs: go-version-file: "spinifex/go.mod" - name: Setup Go Workspace - run: go work init ./spinifex ./viperblock ./predastore ./northstar + run: go work init ./spinifex ./viperblock ./predastore ./northstar ./bluebottle - name: Run Integration Tests run: make -C spinifex test-integration @@ -178,6 +192,13 @@ jobs: ref: ${{ steps.siblings.outputs.northstar }} path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + ref: ${{ steps.siblings.outputs.bluebottle }} + path: bluebottle + - name: Setup Go uses: actions/setup-go@v7 with: @@ -185,7 +206,7 @@ jobs: go-version-file: "spinifex/go.mod" - name: Setup Go Workspace - run: go work init ./spinifex ./viperblock ./predastore ./northstar + run: go work init ./spinifex ./viperblock ./predastore ./northstar ./bluebottle - name: Run Tests with Race Detector run: make -C spinifex test-race @@ -228,6 +249,13 @@ jobs: ref: ${{ steps.siblings.outputs.northstar }} path: northstar + - name: Checkout Bluebottle + uses: actions/checkout@v7 + with: + repository: mulgadc/bluebottle + ref: ${{ steps.siblings.outputs.bluebottle }} + path: bluebottle + - name: Setup Go uses: actions/setup-go@v7 with: @@ -235,7 +263,7 @@ jobs: go-version-file: "spinifex/go.mod" - name: Setup Go Workspace - run: go work init ./spinifex ./viperblock ./predastore ./northstar + run: go work init ./spinifex ./viperblock ./predastore ./northstar ./bluebottle - name: Lint uses: golangci/golangci-lint-action@v9 diff --git a/build/Dockerfile.distro b/build/Dockerfile.distro index cd3fedb12..691977e27 100644 --- a/build/Dockerfile.distro +++ b/build/Dockerfile.distro @@ -17,9 +17,10 @@ COPY viperblock/go.mod viperblock/go.sum ./viperblock/ COPY viperblock/nbd/go.mod viperblock/nbd/go.sum ./viperblock/nbd/ COPY viperblock/nbd/libguestfs.org/nbdkit/go.mod ./viperblock/nbd/libguestfs.org/nbdkit/ COPY northstar/go.mod northstar/go.sum ./northstar/ +COPY bluebottle/go.mod bluebottle/go.sum ./bluebottle/ # Generate go.work (gitignored, so not in checkout) -RUN cd spinifex && go work init . ../predastore ../viperblock ../viperblock/nbd ../viperblock/nbd/libguestfs.org/nbdkit ../northstar +RUN cd spinifex && go work init . ../predastore ../viperblock ../viperblock/nbd ../viperblock/nbd/libguestfs.org/nbdkit ../northstar ../bluebottle # Download dependencies (cached layer) RUN cd spinifex && go mod download @@ -29,6 +30,7 @@ COPY spinifex/ ./spinifex/ COPY predastore/ ./predastore/ COPY viperblock/ ./viperblock/ COPY northstar/ ./northstar/ +COPY bluebottle/ ./bluebottle/ # Build spinifex binary (spx) RUN COMMIT=$(cd spinifex && git rev-parse --short HEAD 2>/dev/null || echo "unknown") && \ diff --git a/scripts/clone-deps.sh b/scripts/clone-deps.sh index 48ee9e19f..7d99213dc 100755 --- a/scripts/clone-deps.sh +++ b/scripts/clone-deps.sh @@ -1,8 +1,8 @@ #!/bin/bash # Spinifex Development Dependencies Setup Script -# This script clones the Viperblock, Predastore and Northstar repositories for -# cross-repo development +# This script clones the Viperblock, Predastore, Northstar and Bluebottle +# repositories for cross-repo development set -e @@ -40,17 +40,20 @@ clone_or_update() { VIPERBLOCK_REPO="${VIPERBLOCK_REPO:-https://github.com/mulgadc/viperblock.git}" PREDASTORE_REPO="${PREDASTORE_REPO:-https://github.com/mulgadc/predastore.git}" NORTHSTAR_REPO="${NORTHSTAR_REPO:-https://github.com/mulgadc/northstar.git}" +BLUEBOTTLE_REPO="${BLUEBOTTLE_REPO:-https://github.com/mulgadc/bluebottle.git}" echo "🔗 Repository URLs:" echo " Viperblock: $VIPERBLOCK_REPO" echo " Predastore: $PREDASTORE_REPO" echo " Northstar: $NORTHSTAR_REPO" +echo " Bluebottle: $BLUEBOTTLE_REPO" echo "" # Clone dependencies clone_or_update "$VIPERBLOCK_REPO" "viperblock" clone_or_update "$PREDASTORE_REPO" "predastore" clone_or_update "$NORTHSTAR_REPO" "northstar" +clone_or_update "$BLUEBOTTLE_REPO" "bluebottle" # Verify go.mod replace directives echo "" @@ -77,10 +80,17 @@ else echo "replace github.com/mulgadc/northstar => ../northstar" >> "$PROJECT_ROOT/go.mod" fi +if grep -q "replace github.com/mulgadc/bluebottle => ../bluebottle" "$PROJECT_ROOT/go.mod"; then + echo "✅ Bluebottle replace directive found" +else + echo "⚠️ Adding Bluebottle replace directive to go.mod" + echo "replace github.com/mulgadc/bluebottle => ../bluebottle" >> "$PROJECT_ROOT/go.mod" +fi + # Verify directory structure echo "" echo "📁 Directory structure:" -ls -la "$MULGA_ROOT" | grep -E "(spinifex|viperblock|predastore|northstar)" || true +ls -la "$MULGA_ROOT" | grep -E "(spinifex|viperblock|predastore|northstar|bluebottle)" || true echo "" echo "🎉 Development environment setup complete!"