diff --git a/.github/workflows/build-monitoring-container.yml b/.github/workflows/build-monitoring-container.yml new file mode 100644 index 0000000..7f3edf8 --- /dev/null +++ b/.github/workflows/build-monitoring-container.yml @@ -0,0 +1,34 @@ +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 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/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 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