mirror of https://github.com/pulumi/pulumi.git
68 lines
2.0 KiB
Bash
Executable File
68 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Usage build-and-publish-docker [cli-version]
|
|
set -o nounset
|
|
set -o errexit
|
|
set -o pipefail
|
|
|
|
readonly SCRIPT_DIR="$( cd "$( dirname "${0}" )" && pwd )"
|
|
readonly ROOT=${SCRIPT_DIR}/..
|
|
|
|
if [ -z "${1:-}" ]; then
|
|
>&2 echo "error: missing version to publish"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${DOCKER_HUB_USER:-}" ]; then
|
|
>&2 echo "error: 'DOCKER_HUB_USER' should be defined"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${DOCKER_HUB_PASSWORD:-}" ]; then
|
|
>&2 echo "error: 'DOCKER_HUB_PASSWORD' should be defined"
|
|
exit 1
|
|
fi
|
|
|
|
CLI_VERSION="${1}"
|
|
|
|
# We only want to push docker images for stable versions of Pulumi. So if there is a -alpha
|
|
# pre-release tag, skip publishing.
|
|
if [[ "${CLI_VERSION}" == *-alpha* ]]; then
|
|
>&2 echo "Skipping docker publishing for ${CLI_VERSION} since it is a pre-release"
|
|
exit 0
|
|
fi
|
|
|
|
docker login -u "${DOCKER_HUB_USER}" -p "${DOCKER_HUB_PASSWORD}"
|
|
|
|
echo "Building containers..."
|
|
for container in pulumi actions; do
|
|
echo "- pulumi/${container}"
|
|
docker build --build-arg PULUMI_VERSION="${CLI_VERSION}" \
|
|
-t "pulumi/${container}:${CLI_VERSION}" \
|
|
-t "pulumi/${container}:latest" \
|
|
"${SCRIPT_DIR}/../dist/${container}"
|
|
done
|
|
|
|
echo "Running container runtime tests..."
|
|
pushd ${ROOT}/tests
|
|
GOOS=linux go test -c -o /tmp/pulumi-test-containers ${ROOT}/tests/containers/...
|
|
popd
|
|
docker run -e RUN_CONTAINER_TESTS=true \
|
|
-e PULUMI_ACCESS_TOKEN=${PULUMI_ACCESS_TOKEN} \
|
|
--volume /tmp:/src \
|
|
--entrypoint /bin/bash \
|
|
pulumi/pulumi:latest \
|
|
-c "pip install pipenv && /src/pulumi-test-containers -test.parallel=1 -test.v -test.run TestPulumiDockerImage"
|
|
|
|
# Disabled due to https://github.com/pulumi/pulumi/issues/4136
|
|
# echo "Running container entrypoint tests..."
|
|
# RUN_CONTAINER_TESTS=true go test ${ROOT}/tests/containers/... -test.run TestPulumiActionsImage -test.v
|
|
|
|
echo "Publishing containers..."
|
|
for container in pulumi actions; do
|
|
echo "- pulumi/${container}"
|
|
docker push "pulumi/${container}:${CLI_VERSION}"
|
|
docker push "pulumi/${container}:latest"
|
|
done
|
|
|
|
docker logout
|