From a1ff0b4ebcfb9e1745e2e760194ed6ac883c55eb Mon Sep 17 00:00:00 2001 From: Brian Seeders Date: Mon, 9 Oct 2023 16:53:35 -0400 Subject: [PATCH] Add healthcheck for shibboleth-idp in idp-fixture (again) (#100461) (#100522) (cherry picked from commit d0c263bfa6e85cb82096be7e5e04b4c0a9eb1b3f) --- x-pack/test/idp-fixture/build.gradle | 5 +++++ x-pack/test/idp-fixture/docker-compose.yml | 8 +++++++- x-pack/test/idp-fixture/idp/bin/run-jetty.sh | 17 ++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/x-pack/test/idp-fixture/build.gradle b/x-pack/test/idp-fixture/build.gradle index 0f5363a278f60..86ed15435ad55 100644 --- a/x-pack/test/idp-fixture/build.gradle +++ b/x-pack/test/idp-fixture/build.gradle @@ -6,6 +6,11 @@ apply plugin: 'elasticsearch.test.fixtures' dockerCompose { composeAdditionalArgs = ['--compatibility'] + + if (System.getenv('BUILDKITE') == 'true') { + // This flag is only available on newer versions of docker-compose, and many Jenkins agents have older versions + upAdditionalArgs = ["--wait"] + } } tasks.named("preProcessFixture").configure { diff --git a/x-pack/test/idp-fixture/docker-compose.yml b/x-pack/test/idp-fixture/docker-compose.yml index 11a8ec7a7bb3d..e431fa4ede611 100644 --- a/x-pack/test/idp-fixture/docker-compose.yml +++ b/x-pack/test/idp-fixture/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: openldap: command: --copy-service --loglevel debug @@ -37,6 +37,12 @@ services: links: - openldap:openldap restart: always #ensure ephemeral port mappings are properly updated + healthcheck: + test: curl -f -s --http0.9 http://localhost:4443 --connect-timeout 10 --max-time 10 --output - > /dev/null + interval: 5s + timeout: 20s + retries: 60 + start_period: 10s oidc-provider: build: diff --git a/x-pack/test/idp-fixture/idp/bin/run-jetty.sh b/x-pack/test/idp-fixture/idp/bin/run-jetty.sh index af795963b9712..24ece94c2715d 100644 --- a/x-pack/test/idp-fixture/idp/bin/run-jetty.sh +++ b/x-pack/test/idp-fixture/idp/bin/run-jetty.sh @@ -10,4 +10,19 @@ fi export JETTY_ARGS="jetty.sslContext.keyStorePassword=$JETTY_BROWSER_SSL_KEYSTORE_PASSWORD jetty.backchannel.sslContext.keyStorePassword=$JETTY_BACKCHANNEL_SSL_KEYSTORE_PASSWORD" sed -i "s/^-Xmx.*$/-Xmx$JETTY_MAX_HEAP/g" /opt/shib-jetty-base/start.ini -exec /opt/jetty-home/bin/jetty.sh run +# For some reason, this container always immediately (in less than 1 second) exits with code 0 when starting for the first time +# Even with a health check, docker-compose will immediately report the container as unhealthy when using --wait instead of waiting for it to become healthy +# So, let's just start it a second time if it exits quickly +set +e +start_time=$(date +%s) +/opt/jetty-home/bin/jetty.sh run +exit_code=$? +end_time=$(date +%s) + +duration=$((end_time - start_time)) +if [ $duration -lt 5 ]; then + /opt/jetty-home/bin/jetty.sh run + exit_code=$? +fi + +exit $exit_code