diff --git a/lib/mrsk/utils/healthcheck_poller.rb b/lib/mrsk/utils/healthcheck_poller.rb index d7b8be65..3ef5b7a8 100644 --- a/lib/mrsk/utils/healthcheck_poller.rb +++ b/lib/mrsk/utils/healthcheck_poller.rb @@ -1,5 +1,5 @@ class Mrsk::Utils::HealthcheckPoller - TRAEFIK_HEALTHY_DELAY = 1 + TRAEFIK_HEALTHY_DELAY = 2 class HealthcheckError < StandardError; end diff --git a/test/integration/deploy_test.rb b/test/integration/deploy_test.rb index 89b2269f..351dc5d2 100644 --- a/test/integration/deploy_test.rb +++ b/test/integration/deploy_test.rb @@ -51,7 +51,15 @@ class DeployTest < ActiveSupport::TestCase end def assert_app_is_up - assert_equal "200", app_response.code + code = app_response.code + if code != "200" + puts "Got response code #{code}, here are the traefik logs:" + mrsk :traefik, :logs + puts "And here are the load balancer logs" + docker_compose :logs, :load_balancer + puts "Tried to get the response code again and got #{app_response.code}" + end + assert_equal "200", code end def app_response @@ -61,7 +69,10 @@ class DeployTest < ActiveSupport::TestCase def wait_for_healthy(timeout: 20) timeout_at = Time.now + timeout while docker_compose("ps -a | tail -n +2 | grep -v '(healthy)' | wc -l", capture: true) != "0" - raise "Container not healthy after #{timeout} seconds" if timeout_at < Time.now + if timeout_at < Time.now + docker_compose("ps -a | tail -n +2 | grep -v '(healthy)'") + raise "Container not healthy after #{timeout} seconds" if timeout_at < Time.now + end sleep 0.1 end end diff --git a/test/integration/docker/deployer/Dockerfile b/test/integration/docker/deployer/Dockerfile index 22556cc2..ccd1de39 100644 --- a/test/integration/docker/deployer/Dockerfile +++ b/test/integration/docker/deployer/Dockerfile @@ -2,7 +2,7 @@ FROM ruby:3.2 WORKDIR /app -RUN apt-get update && apt-get install -y ca-certificates openssh-client curl gnupg docker.io +RUN apt-get update --fix-missing && apt-get install -y ca-certificates openssh-client curl gnupg docker.io RUN install -m 0755 -d /etc/apt/keyrings RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg @@ -12,7 +12,7 @@ RUN echo \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null -RUN apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +RUN apt-get update --fix-missing && apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin COPY boot.sh . COPY app/ . diff --git a/test/integration/docker/deployer/app/config/deploy.yml b/test/integration/docker/deployer/app/config/deploy.yml index 5ac25b14..8442c57b 100644 --- a/test/integration/docker/deployer/app/config/deploy.yml +++ b/test/integration/docker/deployer/app/config/deploy.yml @@ -10,5 +10,8 @@ registry: builder: multiarch: false healthcheck: - path: / - port: 80 + cmd: wget -qO- http://localhost > /dev/null +traefik: + args: + accesslog: true + accesslog.format: json diff --git a/test/integration/docker/shared/Dockerfile b/test/integration/docker/shared/Dockerfile index dae69053..bc0d8e84 100644 --- a/test/integration/docker/shared/Dockerfile +++ b/test/integration/docker/shared/Dockerfile @@ -2,7 +2,7 @@ FROM ubuntu:22.10 WORKDIR /work -RUN apt-get update && apt-get -y install openssh-client openssl +RUN apt-get update --fix-missing && apt-get -y install openssh-client openssl RUN mkdir ssh && \ ssh-keygen -t rsa -f ssh/id_rsa -N "" diff --git a/test/integration/docker/vm/Dockerfile b/test/integration/docker/vm/Dockerfile index 99f881fa..f481023c 100644 --- a/test/integration/docker/vm/Dockerfile +++ b/test/integration/docker/vm/Dockerfile @@ -2,7 +2,7 @@ FROM ubuntu:22.10 WORKDIR /work -RUN apt-get update && apt-get -y install openssh-client openssh-server docker.io +RUN apt-get update --fix-missing && apt-get -y install openssh-client openssh-server docker.io RUN mkdir /root/.ssh && ln -s /shared/ssh/id_rsa.pub /root/.ssh/authorized_keys RUN mkdir -p /etc/docker/certs.d/registry:4443 && ln -s /shared/certs/domain.crt /etc/docker/certs.d/registry:4443/ca.crt