diff --git a/.evergreen/docker-config/bin/docker-credential-from-env b/.evergreen/docker-config/bin/docker-credential-from-env new file mode 100755 index 00000000000..df3a5ee68bd --- /dev/null +++ b/.evergreen/docker-config/bin/docker-credential-from-env @@ -0,0 +1,32 @@ +#!/bin/bash + +set -euo pipefail + +DOCKER_HUB_URL="https://index.docker.io/v1/" + +STDIN=$(cat) + +ACTION="$1" + +case "$ACTION" in + get) + SERVER_URL="$STDIN" + + if [[ "$SERVER_URL" == "$DOCKER_HUB_URL" ]]; then + if [[ -z "${DOCKERHUB_USERNAME:-}" || -z "${DOCKERHUB_PASSWORD:-}" ]]; then + echo "Error: DOCKERHUB_USERNAME or DOCKERHUB_PASSWORD environment variables are not set." >&2 + exit 1 + fi + + echo "{\"Username\": \"$DOCKERHUB_USERNAME\", \"Secret\": \"$DOCKERHUB_PASSWORD\"}" + else + echo "Error: No credentials available for $SERVER_URL" >&2 + exit 1 + fi + ;; + + *) + echo "Unsupported action: $ACTION" >&2 + exit 1 + ;; +esac diff --git a/.evergreen/docker-config/config.json b/.evergreen/docker-config/config.json new file mode 100644 index 00000000000..353cd057bcd --- /dev/null +++ b/.evergreen/docker-config/config.json @@ -0,0 +1,6 @@ +{ + "auths": { + "https://index.docker.io/v1/": {} + }, + "credsStore": "from-env" +} diff --git a/.evergreen/functions.yml b/.evergreen/functions.yml index bb69785b943..c09b63ffaf6 100644 --- a/.evergreen/functions.yml +++ b/.evergreen/functions.yml @@ -78,6 +78,8 @@ variables: GARASIGN_PASSWORD: ${garasign_password} ARTIFACTORY_USERNAME: ${artifactory_username} ARTIFACTORY_PASSWORD: ${artifactory_password} + DOCKERHUB_USERNAME: ${dockerhub_username} + DOCKERHUB_PASSWORD: ${dockerhub_password} # This is here with the variables because anchors aren't supported across includes post: diff --git a/.evergreen/preinstall.sh b/.evergreen/preinstall.sh index bac0ce1249e..3a8a0382227 100755 --- a/.evergreen/preinstall.sh +++ b/.evergreen/preinstall.sh @@ -18,6 +18,8 @@ echo "IS_WINDOWS: $IS_WINDOWS" echo "IS_RHEL: $IS_RHEL" echo "IS_UBUNTU: $IS_UBUNTU" +echo "DOCKER_CONFIG: $DOCKER_CONFIG" + SCRIPTDIR="$(cd $(dirname "$0"); pwd)" if [ -n "$IS_WINDOWS" ]; then diff --git a/.evergreen/print-compass-env.js b/.evergreen/print-compass-env.js index 1497e9e642c..7c0b8ebd664 100755 --- a/.evergreen/print-compass-env.js +++ b/.evergreen/print-compass-env.js @@ -74,6 +74,8 @@ function printCompassEnv() { pathsToPrepend.unshift('/opt/mongodbtoolchain/v4/bin'); } + pathsToPrepend.unshift(`${originalPWD}/.evergreen/docker-config/bin`); + PATH = maybePrependPaths(PATH, pathsToPrepend); printVar('PATH', PATH); @@ -113,6 +115,8 @@ function printCompassEnv() { // https://jira.mongodb.org/browse/NODE-6320 printVar('GYP_DEFINES', `kerberos_use_rtld=${process.platform === 'linux'}`); + + printVar('DOCKER_CONFIG', `${originalPWD}/.evergreen/docker-config`); } printCompassEnv();