diff --git a/.github/workflows/compose-test.yml b/.github/workflows/compose-test.yml new file mode 100644 index 00000000..f67ec19e --- /dev/null +++ b/.github/workflows/compose-test.yml @@ -0,0 +1,128 @@ +name: Docker Compose Test + +on: + push: + branches: + - main + pull_request: + +jobs: + run-docker-compose: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Set up Docker Compose + run: | + sudo apt-get update + sudo apt-get install docker-compose -y + + - name: Build indexer container + uses: docker/build-push-action@v5 + with: + load: true + context: . + file: ./indexer/Dockerfile + tags: near-sffl-indexer + cache-from: type=gha,scope=indexer + cache-to: type=gha,mode=max,scope=indexer + + - name: Build relayer container + uses: docker/build-push-action@v5 + with: + load: true + context: . + file: ./relayer/cmd/Dockerfile + tags: near-sffl-test-relayer + cache-from: type=gha,scope=relayer + cache-to: type=gha,mode=max,scope=relayer + + - name: Build aggregator container + uses: docker/build-push-action@v5 + with: + load: true + context: . + file: ./aggregator/cmd/Dockerfile + tags: near-sffl-aggregator + cache-from: type=gha,scope=aggregator + cache-to: type=gha,mode=max,scope=aggregator + + - name: Build operator container + uses: docker/build-push-action@v5 + with: + load: true + context: . + file: ./operator/cmd/Dockerfile + tags: near-sffl-operator + cache-from: type=gha,scope=operator + cache-to: type=gha,mode=max,scope=operator + + - name: Build and start Docker Compose services + run: docker-compose -f ./docker-compose.yml up --build -d + + - name: Wait for 5 minutes + run: sleep 300 + + - name: List running containers + run: | + echo "Running containers:" + docker ps --format "{{.Names}}" + + - name: Ensure containers are running + run: | + containers=( + "near-sffl_operator1-health_1" + "near-sffl-operator1" + "near-sffl_operator0-health_1" + "near-sffl-operator0" + "rollup1-relayer" + "rollup0-relayer" + "near-sffl-indexer" + "near-sffl-aggregator" + "near-sffl_agreator-health_1" + "mainnet-anvil" + "prometheus" + "rollup0-anvil" + "rmq" + "rollup1-anvil" + "grafana" + ) # List of container names + for container in "${containers[@]}"; do + if docker inspect -f '{{.State.Running}}' "$container" >/dev/null 2>&1; then + echo "$container is running" + else + echo "$container is not running" + exit 1 + fi + done + + + - name: Check health status + run: | + services=( + "near-sffl_operator1-health_1" + "near-sffl_operator0-health_1" + "near-sffl_agreator-health_1" + "rollup1-anvil" + "rollup0-anvil" + "mainnet-anvil" + "rmq" + ) # List of services names + for service in "${services[@]}"; do + status=$(docker inspect -f '{{.State.Health.Status}}' $service) + if [ "$status" != "healthy" ]; then + echo "Service $service is not healthy" + docker-compose -f ./docker-compose.yml logs $service + exit 1 + else + echo "Service $service is healthy" + fi + done + + - name: Tear down Docker Compose services + run: docker-compose -f ./docker-compose.yml down diff --git a/docker-compose.yml b/docker-compose.yml index 27b82cbd..5368de28 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,9 +35,9 @@ services: command: --host 0.0.0.0 --port 8545 --chain-id 1 --block-time 5 --load-state /root/.anvil/state.json healthcheck: test: ["CMD", "nc", "-zv", "0.0.0.0", "8545"] - interval: 2s - timeout: 30s - retries: 15 + interval: 15s + timeout: 10s + retries: 5 networks: - near-sffl @@ -69,9 +69,9 @@ services: command: --host 0.0.0.0 --port 8546 --chain-id 2 --block-time 5 --load-state /root/.anvil/state.json healthcheck: test: ["CMD", "nc", "-zv", "0.0.0.0", "8546"] - interval: 2s - timeout: 30s - retries: 15 + interval: 15s + timeout: 10s + retries: 5 networks: - near-sffl @@ -219,6 +219,20 @@ services: networks: - near-sffl + agreator-health: + image: debian:bookworm + depends_on: + aggregator: + condition: service_started + command: sh -c "apt update && apt install -y netcat-traditional && sleep infinity" + healthcheck: + test: ["CMD", "nc", "-zv", "near-sffl-aggregator", "9091"] + interval: 15s + timeout: 10s + retries: 5 + networks: + - near-sffl + operator0: image: near-sffl-operator container_name: near-sffl-operator0 @@ -249,9 +263,9 @@ services: command: sh -c "apt update && apt install -y netcat-traditional && sleep infinity" healthcheck: test: ["CMD", "nc", "-zv", "near-sffl-operator0", "9090"] - interval: 5s - timeout: 75s - retries: 15 + interval: 15s + timeout: 10s + retries: 5 networks: - near-sffl @@ -281,9 +295,9 @@ services: command: sh -c "apt update && apt install -y netcat-traditional && sleep infinity" healthcheck: test: ["CMD", "nc", "-zv", "near-sffl-operator1", "9091"] - interval: 5s - timeout: 75s - retries: 15 + interval: 15s + timeout: 10s + retries: 5 networks: - near-sffl