From 9911eaa16dcaca99faac3c598e0e29a018e01de4 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Wed, 12 Feb 2025 21:04:30 +0100 Subject: [PATCH] wait for dagger engine to be up --- dagger/.flox/env/manifest.lock | 44 +++++++++++++++++----------------- dagger/.flox/env/manifest.toml | 1 - dagger/test.sh | 36 ++++++++++++++++++++++++---- 3 files changed, 53 insertions(+), 28 deletions(-) diff --git a/dagger/.flox/env/manifest.lock b/dagger/.flox/env/manifest.lock index bbeef63..616a92a 100644 --- a/dagger/.flox/env/manifest.lock +++ b/dagger/.flox/env/manifest.lock @@ -22,10 +22,10 @@ "NOTHANKS": "1" }, "hook": { - "on-activate": "\n# Check that docker is running using `docker info`\nif ! docker info > /dev/null 2>&1; then\n echo \"❌ Docker is not running. Please start Docker and try again.\"\n exit 1\nfi\n\nexport DAGGER_HOME=\"$FLOX_ENV_CACHE/dagger\"\nexport DAGGER_ENGINE_CONFIG=\"$DAGGER_HOME/engine.toml\"\nexport DAGGER_CERTS_DIR=\"$DAGGER_HOME/certs\"\n\nexport DAGGER_VERSION=$(dagger version | cut -d 'v' -f 2 | cut -d ' ' -f 1)\nexport DAGGER_ENGINE_IMAGE=\"registry.dagger.io/engine:v$DAGGER_VERSION\"\nexport DAGGER_ENGINE_NAME=\"flox-dagger-engine-v$DAGGER_VERSION\"\n\nexport _EXPERIMENTAL_DAGGER_RUNNER_HOST=\"docker-container://$DAGGER_ENGINE_NAME\"\nexport _EXPERIMENTAL_DAGGER_CLI_BIN=\"$(which dagger)\"\n\nmkdir -p \"$DAGGER_HOME\"\n\n# XXX: Write dagger engine config below\n# -> https://docs.dagger.io/configuration/custom-runner\n# -> https://docs.dagger.io/configuration/custom-registry\n# -> https://docs.dagger.io/configuration/custom-ca\n# -> https://docs.dagger.io/configuration/proxy\nif [ ! -f \"$DAGGER_ENGINE_CONFIG\" ]; then\ncat > \"$DAGGER_ENGINE_CONFIG\" < /dev/null 2>&1; then\n echo \"❌ Docker is not running. Please start Docker and try again.\"\n exit 1\nfi\n\nexport DAGGER_HOME=\"$FLOX_ENV_CACHE/dagger\"\nexport DAGGER_ENGINE_CONFIG=\"$DAGGER_HOME/engine.toml\"\nexport DAGGER_CERTS_DIR=\"$DAGGER_HOME/certs\"\n\nexport DAGGER_VERSION=$(dagger version | cut -d 'v' -f 2 | cut -d ' ' -f 1)\nexport DAGGER_ENGINE_IMAGE=\"registry.dagger.io/engine:v$DAGGER_VERSION\"\nexport DAGGER_ENGINE_NAME=\"flox-dagger-engine-v$DAGGER_VERSION\"\n\nexport _EXPERIMENTAL_DAGGER_RUNNER_HOST=\"docker-container://$DAGGER_ENGINE_NAME\"\nexport _EXPERIMENTAL_DAGGER_CLI_BIN=\"$(which dagger)\"\n\nmkdir -p \"$DAGGER_HOME\"\n\n# XXX: Write dagger engine config below\n# -> https://docs.dagger.io/configuration/custom-runner\n# -> https://docs.dagger.io/configuration/custom-registry\n# -> https://docs.dagger.io/configuration/custom-ca\n# -> https://docs.dagger.io/configuration/proxy\nif [ ! -f \"$DAGGER_ENGINE_CONFIG\" ]; then\ncat > \"$DAGGER_ENGINE_CONFIG\" <&1 >/dev/null -then - echo "Error: 'dagger' command could not be found." - exit 1 -fi +command_exists() { + if ! command -v $1 2>&1 >/dev/null; then + echo "Error: '$1' command could not be found." + return 1 + fi + echo ">>> '$1' command exists" +} + +command_exists dagger + +is_dagger_engine_up() { + if [ "$( docker container inspect -f '{{.State.Running}}' $DAGGER_ENGINE_NAME)" = "true" ]; then + return 0 + else + return 1 + fi +} + +echo -n ">>> Waiting for Dagger Engine to start (it make take some time) .." +MAX_ATTEMPTS=300 # 5min in case it needs to download the image +until is_dagger_engine_up; do + if [ $MAX_ATTEMPTS -le 0 ]; then + echo -n "Ran out of attempts!" + echo "❌ Error: Dagger Engine didn't come up in time." + exit 1 + fi + echo -n "." + sleep 1 + MAX_ATTEMPTS=$((MAX_ATTEMPTS - 1)) +done +echo -n " ✅ IS UP!\n" echo ">>> flox services status" flox services status