From c0945042f32cb6150bdc0ef38857d94a02a5b240 Mon Sep 17 00:00:00 2001 From: Maycon Fabio Date: Sat, 19 Jul 2025 13:24:18 -0300 Subject: [PATCH 1/3] Add action to build docker container --- .../workflows/build-monitoring-container.yml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/build-monitoring-container.yml diff --git a/.github/workflows/build-monitoring-container.yml b/.github/workflows/build-monitoring-container.yml new file mode 100644 index 0000000..05c5f83 --- /dev/null +++ b/.github/workflows/build-monitoring-container.yml @@ -0,0 +1,23 @@ +name: Build Monitoring Container + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + test-docker-compose: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker Compose + run: docker compose --profile monitoring build From eac2b842be7e2daee54fa9218b3a95c8a992941f Mon Sep 17 00:00:00 2001 From: Maycon Fabio Date: Sat, 19 Jul 2025 20:42:18 -0300 Subject: [PATCH 2/3] Fix syntax error on btc node healthcheck script --- docker/bitcoin-node-healthcheck.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/bitcoin-node-healthcheck.sh b/docker/bitcoin-node-healthcheck.sh index f3c2bbb..8cdfafa 100755 --- a/docker/bitcoin-node-healthcheck.sh +++ b/docker/bitcoin-node-healthcheck.sh @@ -6,7 +6,7 @@ case "$BITCOIN_NETWORK" in mainnet) NETWORK="" ;; signet) NETWORK="-signet" ;; testnet) NETWORK="-testnet" ;; - regtest|"") NETWORK="-regtest" ;; regtest is the default + regtest|"") NETWORK="-regtest" ;; # regtest is the default *) echo "Unknown BITCOIN_NETWORK: $BITCOIN_NETWORK" exit 1 From f5dfe1f3cfca2f7221c7066f19f6b00e876f9ff9 Mon Sep 17 00:00:00 2001 From: Maycon Fabio Date: Sat, 19 Jul 2025 20:43:30 -0300 Subject: [PATCH 3/3] Add healthcheck into build action --- .../workflows/build-monitoring-container.yml | 15 +++++++++++-- docker/wait-for-bitcoin-healthy.sh | 22 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 docker/wait-for-bitcoin-healthy.sh diff --git a/.github/workflows/build-monitoring-container.yml b/.github/workflows/build-monitoring-container.yml index 05c5f83..7f3edf8 100644 --- a/.github/workflows/build-monitoring-container.yml +++ b/.github/workflows/build-monitoring-container.yml @@ -19,5 +19,16 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Build Docker Compose - run: docker compose --profile monitoring build + - name: Build and Start Docker Compose + run: | + docker compose --profile monitoring build + docker compose --profile monitoring up -d + + - name: Wait for bitcoin-node to be healthy + run: | + chmod +x docker/wait-for-bitcoin-healthy.sh + docker/wait-for-bitcoin-healthy.sh + + - name: Stop Docker Compose + run: | + docker compose down -v diff --git a/docker/wait-for-bitcoin-healthy.sh b/docker/wait-for-bitcoin-healthy.sh new file mode 100644 index 0000000..4cfda70 --- /dev/null +++ b/docker/wait-for-bitcoin-healthy.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +echo "Waiting for bitcoin-node to be healthy..." +TIMEOUT=60 +INTERVAL=6 +ELAPSED=0 + +while [ $ELAPSED -lt $TIMEOUT ]; do + HEALTH=$(docker container inspect -f '{{.State.Health.Status}}' peer-observer-docker-bitcoin-node-1) + if [ "$HEALTH" = "healthy" ]; then + echo "bitcoin-node is healthy!" + exit 0 + fi + + echo "Current health status: $HEALTH" + sleep $INTERVAL + ELAPSED=$((ELAPSED + INTERVAL)) +done + +echo "bitcoin-node failed to become healthy within $TIMEOUT seconds." +docker compose logs bitcoin-node +exit 1