diff --git a/contrib/dependencies.json b/contrib/dependencies.json index 7cc0ff321..95b320859 100644 --- a/contrib/dependencies.json +++ b/contrib/dependencies.json @@ -11,11 +11,11 @@ }, { "name": "docker-container-healthchecker", - "version": "0.6.4", + "version": "0.7.1", "urls": { - "amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.6.4/docker-container-healthchecker_0.6.4_linux_amd64.tgz", - "arm4": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.6.4/docker-container-healthchecker_0.6.4_linux_arm64.tgz", - "arm": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.6.4/docker-container-healthchecker_0.6.4_linux_armhf.tgz" + "amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.1/docker-container-healthchecker_0.7.1_linux_amd64.tgz", + "arm4": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.1/docker-container-healthchecker_0.7.1_linux_arm64.tgz", + "arm": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.1/docker-container-healthchecker_0.7.1_linux_armhf.tgz" } }, { diff --git a/plugins/scheduler-docker-local/pre-deploy b/plugins/scheduler-docker-local/pre-deploy index 217ce6630..65bff7a5b 100755 --- a/plugins/scheduler-docker-local/pre-deploy +++ b/plugins/scheduler-docker-local/pre-deploy @@ -67,10 +67,15 @@ scheduler-docker-local-pre-deploy-precheck() { declare APP="$1" dokku_log_info2 "Processing deployment checks" - if ! fn-scheduler-docker-local-has-checks-file "$APP"; then + + local TMP_APP_JSON_OUTPUT=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX") + trap "rm -rf '$TMP_APP_JSON_OUTPUT' >/dev/null" RETURN INT TERM EXIT + plugn trigger app-json-get-content "$APP" >"$TMP_APP_JSON_OUTPUT" + + if ! docker-container-healthchecker exists web --app-json "$TMP_APP_JSON_OUTPUT"; then local CHECKS_URL="${DOKKU_CHECKS_URL:-https://dokku.com/docs/deployment/zero-downtime-deploys/}" - dokku_log_verbose "No CHECKS file found. Simple container checks will be performed." - dokku_log_verbose "For more efficient zero downtime deployments, create a CHECKS file. See ${CHECKS_URL} for examples" + dokku_log_verbose "No web healthchecks found in app.json. Simple container checks will be performed." + dokku_log_verbose "For more efficient zero downtime deployments, add healthchecks to your app.json. See ${CHECKS_URL} for examples" fi } diff --git a/tests/apps/checks-root/CHECKS b/tests/apps/checks-root/CHECKS deleted file mode 100644 index 4bc292597..000000000 --- a/tests/apps/checks-root/CHECKS +++ /dev/null @@ -1,2 +0,0 @@ -ATTEMPTS=2 -/ diff --git a/tests/apps/checks-root/app.json b/tests/apps/checks-root/app.json new file mode 100644 index 000000000..0c12a6d97 --- /dev/null +++ b/tests/apps/checks-root/app.json @@ -0,0 +1,12 @@ +{ + "healthchecks": { + "web": [ + { + "attempts": 2, + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/dockerfile-app-json-formations/CHECKS b/tests/apps/dockerfile-app-json-formations/CHECKS deleted file mode 100644 index 068926825..000000000 --- a/tests/apps/dockerfile-app-json-formations/CHECKS +++ /dev/null @@ -1,5 +0,0 @@ -WAIT=2 # wait 2 seconds -TIMEOUT=5 # set timeout to 5 seconds -ATTEMPTS=2 # try 2 times - -/ nodejs/express diff --git a/tests/apps/dockerfile-app-json-formations/app.json b/tests/apps/dockerfile-app-json-formations/app.json index be4658045..4b341198d 100644 --- a/tests/apps/dockerfile-app-json-formations/app.json +++ b/tests/apps/dockerfile-app-json-formations/app.json @@ -1,7 +1,20 @@ { - "formation": { - "web": { - "quantity": 1 - } + "formation": { + "web": { + "quantity": 1 } + }, + "healthchecks": { + "web": [ + { + "attempts": 2, + "content": "nodejs/express", + "name": "check-1", + "path": "/", + "timeout": 5, + "type": "startup", + "wait": 2 + } + ] + } } \ No newline at end of file diff --git a/tests/apps/dockerfile-noexpose/CHECKS b/tests/apps/dockerfile-noexpose/CHECKS deleted file mode 100644 index 034f4c73c..000000000 --- a/tests/apps/dockerfile-noexpose/CHECKS +++ /dev/null @@ -1,5 +0,0 @@ -WAIT=2 # wait 2 seconds -TIMEOUT=5 # set timeout to 5 seconds -ATTEMPTS=2 # try 2 times - -/ Hello World! diff --git a/tests/apps/dockerfile-noexpose/app.json b/tests/apps/dockerfile-noexpose/app.json new file mode 100644 index 000000000..a82fa63b4 --- /dev/null +++ b/tests/apps/dockerfile-noexpose/app.json @@ -0,0 +1,15 @@ +{ + "healthchecks": { + "web": [ + { + "attempts": 2, + "content": "Hello World!", + "name": "check-1", + "path": "/", + "timeout": 5, + "type": "startup", + "wait": 2 + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/dockerfile-procfile-bad/CHECKS b/tests/apps/dockerfile-procfile-bad/CHECKS deleted file mode 100644 index 068926825..000000000 --- a/tests/apps/dockerfile-procfile-bad/CHECKS +++ /dev/null @@ -1,5 +0,0 @@ -WAIT=2 # wait 2 seconds -TIMEOUT=5 # set timeout to 5 seconds -ATTEMPTS=2 # try 2 times - -/ nodejs/express diff --git a/tests/apps/dockerfile-procfile-bad/app.json b/tests/apps/dockerfile-procfile-bad/app.json new file mode 100644 index 000000000..ae6ec4b08 --- /dev/null +++ b/tests/apps/dockerfile-procfile-bad/app.json @@ -0,0 +1,15 @@ +{ + "healthchecks": { + "web": [ + { + "attempts": 2, + "content": "nodejs/express", + "name": "check-1", + "path": "/", + "timeout": 5, + "type": "startup", + "wait": 2 + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/dockerfile-procfile/CHECKS b/tests/apps/dockerfile-procfile/CHECKS deleted file mode 100644 index 068926825..000000000 --- a/tests/apps/dockerfile-procfile/CHECKS +++ /dev/null @@ -1,5 +0,0 @@ -WAIT=2 # wait 2 seconds -TIMEOUT=5 # set timeout to 5 seconds -ATTEMPTS=2 # try 2 times - -/ nodejs/express diff --git a/tests/apps/dockerfile-procfile/app.json b/tests/apps/dockerfile-procfile/app.json index 0dbdea3ec..58d88012f 100644 --- a/tests/apps/dockerfile-procfile/app.json +++ b/tests/apps/dockerfile-procfile/app.json @@ -1,8 +1,21 @@ { + "healthchecks": { + "web": [ + { + "attempts": 2, + "content": "nodejs/express", + "name": "check-1", + "path": "/", + "timeout": 5, + "type": "startup", + "wait": 2 + } + ] + }, "scripts": { "dokku": { - "predeploy": "touch /app/predeploy.test", - "postdeploy": "touch /app/postdeploy.test" + "postdeploy": "touch /app/postdeploy.test", + "predeploy": "touch /app/predeploy.test" } } -} +} \ No newline at end of file diff --git a/tests/apps/dockerfile/CHECKS b/tests/apps/dockerfile/CHECKS deleted file mode 100644 index 034f4c73c..000000000 --- a/tests/apps/dockerfile/CHECKS +++ /dev/null @@ -1,5 +0,0 @@ -WAIT=2 # wait 2 seconds -TIMEOUT=5 # set timeout to 5 seconds -ATTEMPTS=2 # try 2 times - -/ Hello World! diff --git a/tests/apps/dockerfile/app.json b/tests/apps/dockerfile/app.json index 6c39f8703..c2155af18 100644 --- a/tests/apps/dockerfile/app.json +++ b/tests/apps/dockerfile/app.json @@ -1,20 +1,14 @@ { - "name": "Sample node.js express app", - "description": "Used in dokku's test suite", - "keywords": [ - "nodejs", - "express", - "testing" + "addons": [ + "dokku-postgres", + "dokku-redis" ], - "website": "https://dokku.com/docs/", - "repository": "https://github.com/dokku/dokku", - "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", - "scripts": { - "dokku": { - "predeploy": "mkdir -p /app && touch /app/predeploy.test", - "postdeploy": "mkdir -p /app && touch /app/postdeploy.test" + "buildpacks": [ + { + "url": "https://github.com/heroku/heroku-buildpack-nodejs" } - }, + ], + "description": "Used in dokku's test suite", "env": { "SECRET_TOKEN": { "description": "A secret key for verifying the integrity of signed cookies.", @@ -25,14 +19,33 @@ "generator": "echo 5" } }, + "healthchecks": { + "web": [ + { + "attempts": 2, + "content": "Hello World!", + "name": "check-1", + "path": "/", + "timeout": 5, + "type": "startup", + "wait": 2 + } + ] + }, "image": "gliderlabs/herokuish:latest-22", - "addons": [ - "dokku-postgres", - "dokku-redis" + "keywords": [ + "nodejs", + "express", + "testing" ], - "buildpacks": [ - { - "url": "https://github.com/heroku/heroku-buildpack-nodejs" + "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", + "name": "Sample node.js express app", + "repository": "https://github.com/dokku/dokku", + "scripts": { + "dokku": { + "postdeploy": "mkdir -p /app \u0026\u0026 touch /app/postdeploy.test", + "predeploy": "mkdir -p /app \u0026\u0026 touch /app/predeploy.test" } - ] -} + }, + "website": "https://dokku.com/docs/" +} \ No newline at end of file diff --git a/tests/apps/gitsubmodules/CHECKS b/tests/apps/gitsubmodules/CHECKS deleted file mode 100644 index 1be994966..000000000 --- a/tests/apps/gitsubmodules/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/ Hello diff --git a/tests/apps/gitsubmodules/app.json b/tests/apps/gitsubmodules/app.json new file mode 100644 index 000000000..743532740 --- /dev/null +++ b/tests/apps/gitsubmodules/app.json @@ -0,0 +1,12 @@ +{ + "healthchecks": { + "web": [ + { + "content": "Hello", + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/go-fail-postdeploy/CHECKS b/tests/apps/go-fail-postdeploy/CHECKS deleted file mode 100644 index 52e1189c7..000000000 --- a/tests/apps/go-fail-postdeploy/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/ go diff --git a/tests/apps/go-fail-postdeploy/app.json b/tests/apps/go-fail-postdeploy/app.json index 677a4df21..77352b471 100644 --- a/tests/apps/go-fail-postdeploy/app.json +++ b/tests/apps/go-fail-postdeploy/app.json @@ -1,17 +1,27 @@ { - "name": "Sample go app", - "description": "Used in dokku's test suite", - "website": "https://dokku.com/docs/", - "repository": "https://github.com/dokku/dokku", - "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", - "scripts": { - "dokku": { - "postdeploy": "touch /app/postdeploy.test && ls -la /app" - } - }, "buildpacks": [ { "url": "https://github.com/heroku/heroku-buildpack-go" } - ] -} + ], + "description": "Used in dokku's test suite", + "healthchecks": { + "web": [ + { + "content": "go", + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + }, + "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", + "name": "Sample go app", + "repository": "https://github.com/dokku/dokku", + "scripts": { + "dokku": { + "postdeploy": "touch /app/postdeploy.test \u0026\u0026 ls -la /app" + } + }, + "website": "https://dokku.com/docs/" +} \ No newline at end of file diff --git a/tests/apps/go-fail-predeploy/CHECKS b/tests/apps/go-fail-predeploy/CHECKS deleted file mode 100644 index 52e1189c7..000000000 --- a/tests/apps/go-fail-predeploy/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/ go diff --git a/tests/apps/go-fail-predeploy/app.json b/tests/apps/go-fail-predeploy/app.json index 94ea57a6d..a5f72478f 100644 --- a/tests/apps/go-fail-predeploy/app.json +++ b/tests/apps/go-fail-predeploy/app.json @@ -1,17 +1,27 @@ { - "name": "Sample go app", - "description": "Used in dokku's test suite", - "website": "https://dokku.com/docs/", - "repository": "https://github.com/dokku/dokku", - "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", - "scripts": { - "dokku": { - "predeploy": "touch /app/predeploy.test && ls -la /app" - } - }, "buildpacks": [ { "url": "https://github.com/heroku/heroku-buildpack-go" } - ] -} + ], + "description": "Used in dokku's test suite", + "healthchecks": { + "web": [ + { + "content": "go", + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + }, + "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", + "name": "Sample go app", + "repository": "https://github.com/dokku/dokku", + "scripts": { + "dokku": { + "predeploy": "touch /app/predeploy.test \u0026\u0026 ls -la /app" + } + }, + "website": "https://dokku.com/docs/" +} \ No newline at end of file diff --git a/tests/apps/go/CHECKS b/tests/apps/go/CHECKS deleted file mode 100644 index 52e1189c7..000000000 --- a/tests/apps/go/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/ go diff --git a/tests/apps/go/app.json b/tests/apps/go/app.json new file mode 100644 index 000000000..36e31ada7 --- /dev/null +++ b/tests/apps/go/app.json @@ -0,0 +1,12 @@ +{ + "healthchecks": { + "web": [ + { + "content": "go", + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/java/CHECKS b/tests/apps/java/CHECKS deleted file mode 100644 index e15e203ed..000000000 --- a/tests/apps/java/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/ Hello from Java diff --git a/tests/apps/java/app.json b/tests/apps/java/app.json new file mode 100644 index 000000000..125e3c7b2 --- /dev/null +++ b/tests/apps/java/app.json @@ -0,0 +1,12 @@ +{ + "healthchecks": { + "web": [ + { + "content": "Hello from Java", + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/multi/CHECKS b/tests/apps/multi/CHECKS deleted file mode 100644 index 9d3f9b3af..000000000 --- a/tests/apps/multi/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/ Heroku Multi Buildpack on Dokku diff --git a/tests/apps/multi/app.json b/tests/apps/multi/app.json new file mode 100644 index 000000000..3b2c20efa --- /dev/null +++ b/tests/apps/multi/app.json @@ -0,0 +1,12 @@ +{ + "healthchecks": { + "web": [ + { + "content": "Heroku Multi Buildpack on Dokku", + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/nodejs-express-noappjson/CHECKS b/tests/apps/nodejs-express-noappjson/CHECKS deleted file mode 100644 index 67d14794a..000000000 --- a/tests/apps/nodejs-express-noappjson/CHECKS +++ /dev/null @@ -1,5 +0,0 @@ -WAIT=2 # wait 2 seconds -TIMEOUT=5 # set timeout to 5 seconds -ATTEMPTS=2 # try 2 times - -/ nodejs/express \ No newline at end of file diff --git a/tests/apps/nodejs-express-noappjson/app.json b/tests/apps/nodejs-express-noappjson/app.json new file mode 100644 index 000000000..ae6ec4b08 --- /dev/null +++ b/tests/apps/nodejs-express-noappjson/app.json @@ -0,0 +1,15 @@ +{ + "healthchecks": { + "web": [ + { + "attempts": 2, + "content": "nodejs/express", + "name": "check-1", + "path": "/", + "timeout": 5, + "type": "startup", + "wait": 2 + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/nodejs-express-noprocfile/CHECKS b/tests/apps/nodejs-express-noprocfile/CHECKS deleted file mode 100644 index f1d88bab3..000000000 --- a/tests/apps/nodejs-express-noprocfile/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/ nodejs/express diff --git a/tests/apps/nodejs-express-noprocfile/app.json b/tests/apps/nodejs-express-noprocfile/app.json new file mode 100644 index 000000000..b6ce34d81 --- /dev/null +++ b/tests/apps/nodejs-express-noprocfile/app.json @@ -0,0 +1,12 @@ +{ + "healthchecks": { + "web": [ + { + "content": "nodejs/express", + "name": "check-1", + "path": "/", + "type": "startup" + } + ] + } +} \ No newline at end of file diff --git a/tests/apps/nodejs-express/CHECKS b/tests/apps/nodejs-express/CHECKS deleted file mode 100644 index 67d14794a..000000000 --- a/tests/apps/nodejs-express/CHECKS +++ /dev/null @@ -1,5 +0,0 @@ -WAIT=2 # wait 2 seconds -TIMEOUT=5 # set timeout to 5 seconds -ATTEMPTS=2 # try 2 times - -/ nodejs/express \ No newline at end of file diff --git a/tests/apps/nodejs-express/app.json b/tests/apps/nodejs-express/app.json index 918760d5f..0729bdcfc 100644 --- a/tests/apps/nodejs-express/app.json +++ b/tests/apps/nodejs-express/app.json @@ -1,20 +1,14 @@ { - "name": "Sample node.js express app", - "description": "Used in dokku's test suite", - "keywords": [ - "nodejs", - "express", - "testing" + "addons": [ + "dokku-postgres", + "dokku-redis" ], - "website": "https://dokku.com/docs/", - "repository": "https://github.com/dokku/dokku", - "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", - "scripts": { - "dokku": { - "predeploy": "touch /app/predeploy.test", - "postdeploy": "touch /app/postdeploy.test" + "buildpacks": [ + { + "url": "https://github.com/heroku/heroku-buildpack-nodejs" } - }, + ], + "description": "Used in dokku's test suite", "env": { "SECRET_TOKEN": { "description": "A secret key for verifying the integrity of signed cookies.", @@ -25,14 +19,33 @@ "generator": "echo 5" } }, + "healthchecks": { + "web": [ + { + "attempts": 2, + "content": "nodejs/express", + "name": "check-1", + "path": "/", + "timeout": 5, + "type": "startup", + "wait": 2 + } + ] + }, "image": "gliderlabs/herokuish:latest-22", - "addons": [ - "dokku-postgres", - "dokku-redis" + "keywords": [ + "nodejs", + "express", + "testing" ], - "buildpacks": [ - { - "url": "https://github.com/heroku/heroku-buildpack-nodejs" + "logo": "https://raw.githubusercontent.com/dokku/dokku/master/docs/assets/dokku.png", + "name": "Sample node.js express app", + "repository": "https://github.com/dokku/dokku", + "scripts": { + "dokku": { + "postdeploy": "touch /app/postdeploy.test", + "predeploy": "touch /app/predeploy.test" } - ] -} + }, + "website": "https://dokku.com/docs/" +} \ No newline at end of file diff --git a/tests/apps/php/CHECKS b/tests/apps/php/CHECKS deleted file mode 100644 index d75864ad6..000000000 --- a/tests/apps/php/CHECKS +++ /dev/null @@ -1 +0,0 @@ -/