Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
172f31d7c5 | ||
|
|
44e41b3dd8 | ||
|
|
f9d23ad267 | ||
|
|
582bc407be |
@@ -47,7 +47,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: ./drb-edge-node
|
context: ./drb-edge-node
|
||||||
file: ./drb-edge-node/Dockerfile
|
file: ./drb-edge-node/Dockerfile
|
||||||
platforms: linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: ./icecast
|
context: ./icecast
|
||||||
file: ./icecast/Dockerfile
|
file: ./icecast/Dockerfile
|
||||||
platforms: linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: ./op25-container
|
context: ./op25-container
|
||||||
file: ./op25-container/Dockerfile
|
file: ./op25-container/Dockerfile
|
||||||
platforms: linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: ./secondary-sdr-container
|
context: ./secondary-sdr-container
|
||||||
file: ./secondary-sdr-container/Dockerfile
|
file: ./secondary-sdr-container/Dockerfile
|
||||||
platforms: linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
git.vpn.cusano.net/${{ vars.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}/${{ env.CONTAINER_NAME }}:${{ steps.meta.outputs.VERSION }}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: ${{ matrix.context }}
|
context: ${{ matrix.context }}
|
||||||
file: ${{ matrix.file }}
|
file: ${{ matrix.file }}
|
||||||
platforms: linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
${{ vars.PUBLIC_REGISTRY }}/${{ vars.PUBLIC_NAMESPACE }}/drb-${{ matrix.name }}:${{ steps.meta.outputs.VERSION }}
|
${{ vars.PUBLIC_REGISTRY }}/${{ vars.PUBLIC_NAMESPACE }}/drb-${{ matrix.name }}:${{ steps.meta.outputs.VERSION }}
|
||||||
|
|||||||
@@ -67,12 +67,16 @@ jobs:
|
|||||||
TAG="src-$(git rev-parse HEAD:${{ matrix.context }})"
|
TAG="src-$(git rev-parse HEAD:${{ matrix.context }})"
|
||||||
echo "IMAGE=$IMAGE" >> $GITHUB_OUTPUT
|
echo "IMAGE=$IMAGE" >> $GITHUB_OUTPUT
|
||||||
echo "TAG=$TAG" >> $GITHUB_OUTPUT
|
echo "TAG=$TAG" >> $GITHUB_OUTPUT
|
||||||
if docker buildx imagetools inspect "$IMAGE:$TAG" >/dev/null 2>&1; then
|
# Present only counts if BOTH platforms are in it: src- tags pushed
|
||||||
|
# before node-26#28 are arm64-only, and an amd64 node can't pull them.
|
||||||
|
RAW="$(docker buildx imagetools inspect --raw "$IMAGE:$TAG" 2>/dev/null | tr -d ' \n' || true)"
|
||||||
|
if printf '%s' "$RAW" | grep -q '"architecture":"amd64"' \
|
||||||
|
&& printf '%s' "$RAW" | grep -q '"architecture":"arm64"'; then
|
||||||
echo "EXISTS=true" >> $GITHUB_OUTPUT
|
echo "EXISTS=true" >> $GITHUB_OUTPUT
|
||||||
echo "$IMAGE:$TAG already published — nothing to do"
|
echo "$IMAGE:$TAG already published for amd64 + arm64 — nothing to do"
|
||||||
else
|
else
|
||||||
echo "EXISTS=false" >> $GITHUB_OUTPUT
|
echo "EXISTS=false" >> $GITHUB_OUTPUT
|
||||||
echo "$IMAGE:$TAG missing — building it"
|
echo "$IMAGE:$TAG missing or not multi-arch — building it"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- if: steps.meta.outputs.EXISTS != 'true'
|
- if: steps.meta.outputs.EXISTS != 'true'
|
||||||
@@ -80,8 +84,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: ./${{ matrix.context }}
|
context: ./${{ matrix.context }}
|
||||||
file: ./${{ matrix.context }}/Dockerfile
|
file: ./${{ matrix.context }}/Dockerfile
|
||||||
# arm64 only, same as the build-*.yml workflows (node-26#28).
|
# amd64 + arm64, same as the build-*.yml workflows (node-26#28).
|
||||||
platforms: linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: ${{ steps.meta.outputs.IMAGE }}:${{ steps.meta.outputs.TAG }}
|
tags: ${{ steps.meta.outputs.IMAGE }}:${{ steps.meta.outputs.TAG }}
|
||||||
cache-from: type=registry,ref=${{ steps.meta.outputs.IMAGE }}:buildcache
|
cache-from: type=registry,ref=${{ steps.meta.outputs.IMAGE }}:buildcache
|
||||||
|
|||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# DRB edge node — one-shot bootstrap for a clean Raspberry Pi OS (arm64).
|
# DRB edge node — one-shot bootstrap for a clean Raspberry Pi OS (arm64) or Debian (amd64).
|
||||||
#
|
#
|
||||||
# curl -fsSL https://git.vpn.cusano.net/logan/node-26/raw/tag/v1/install.sh \
|
# curl -fsSL https://git.vpn.cusano.net/logan/node-26/raw/tag/v1/install.sh \
|
||||||
# | sudo bash -s -- --node-id node-003 \
|
# | sudo bash -s -- --node-id node-003 \
|
||||||
@@ -228,8 +228,8 @@ command -v apt-get >/dev/null || die "apt-get not found — this script targets
|
|||||||
|
|
||||||
ARCH="$(dpkg --print-architecture)"
|
ARCH="$(dpkg --print-architecture)"
|
||||||
case "$ARCH" in
|
case "$ARCH" in
|
||||||
arm64|aarch64) ok "arch $ARCH" ;;
|
arm64|aarch64|amd64|x86_64) ok "arch $ARCH" ;;
|
||||||
*) warn "arch is $ARCH — CI only builds linux/arm64 images. Prebuilt pull will fail; use --build." ;;
|
*) warn "arch is $ARCH — CI only builds linux/amd64 + linux/arm64 images. Prebuilt pull will fail; use --build." ;;
|
||||||
esac
|
esac
|
||||||
ok "running as root"
|
ok "running as root"
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,12 @@ main() {
|
|||||||
flock -n 9 || { log "another update is already running"; return 0; }
|
flock -n 9 || { log "another update is already running"; return 0; }
|
||||||
|
|
||||||
cd "$INSTALL_DIR"
|
cd "$INSTALL_DIR"
|
||||||
|
# This runs as root, but a pre-install.sh checkout (e.g. /home/pi/node-26)
|
||||||
|
# is owned by the login user, and git >= 2.35.2 then refuses every command
|
||||||
|
# with "dubious ownership" — which surfaced as origin '' != REPO_URL. Trust
|
||||||
|
# exactly the configured INSTALL_DIR, for this process only (env config is
|
||||||
|
# command-line scope, which safe.directory honours; no global config change).
|
||||||
|
export GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=safe.directory GIT_CONFIG_VALUE_0="$INSTALL_DIR"
|
||||||
envget() { grep -E "^$1=" .env 2>/dev/null | head -1 | cut -d= -f2- | tr -d '"' || true; }
|
envget() { grep -E "^$1=" .env 2>/dev/null | head -1 | cut -d= -f2- | tr -d '"' || true; }
|
||||||
local NODE_ID C2_URL
|
local NODE_ID C2_URL
|
||||||
NODE_ID="$(envget NODE_ID)"; C2_URL="$(envget C2_URL)"; C2_URL="${C2_URL%/}"
|
NODE_ID="$(envget NODE_ID)"; C2_URL="$(envget C2_URL)"; C2_URL="${C2_URL%/}"
|
||||||
|
|||||||
Reference in New Issue
Block a user