#!/usr/bin/env bash set -eu -o pipefail REPO_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../../.." && pwd )" REPO_PARENT="$( cd "${REPO_ROOT}/.." && pwd )" if [[ -n "${DEBUG:-}" ]]; then set -x export BOSH_LOG_LEVEL=debug export BOSH_LOG_PATH="${BOSH_LOG_PATH:-${REPO_PARENT}/bosh-debug.log}" fi overridden_bosh_deployment="${REPO_PARENT}/bosh-deployment" if [[ -e "${overridden_bosh_deployment}/bosh.yml" ]];then BOSH_DEPLOYMENT_PATH=${overridden_bosh_deployment} else BOSH_DEPLOYMENT_PATH="/usr/local/bosh-deployment" fi OUTER_BOSH_ENV_PATH="/tmp/local-bosh/director/bosh-env" if [ ! -f "${OUTER_BOSH_ENV_PATH}" ]; then "${REPO_ROOT}/ci/dockerfiles/docker-cpi/start-bosh.sh" fi # shellcheck disable=SC1090 source "${OUTER_BOSH_ENV_PATH}" bosh int /tmp/local-bosh/director/creds.yml --path /jumpbox_ssh/private_key > /tmp/jumpbox_ssh_key.pem chmod 400 /tmp/jumpbox_ssh_key.pem DOCKER_CERTS="$(bosh int /tmp/local-bosh/director/bosh-director.yml --path /instance_groups/0/properties/docker_cpi/docker/tls)" DOCKER_HOST="$(bosh int /tmp/local-bosh/director/bosh-director.yml --path /instance_groups/name=bosh/properties/docker_cpi/docker/host)" BOSH_BINARY_PATH=$(which bosh) DIRECTOR_STEMCELL_TARBALL_PATH="$(find "${REPO_PARENT}/director-stemcell" -maxdepth 1 -path '*.tgz')" CANDIDATE_STEMCELL_TARBALL_PATH="$(find "${REPO_PARENT}/stemcell" -maxdepth 1 -path '*.tgz')" BOSH_DIRECTOR_RELEASE_PATH="${REPO_PARENT}/bosh-release" BOSH_RELEASE="${REPO_ROOT}/src/spec/assets/dummy-release.tgz" DNS_RELEASE_PATH="$(find "${REPO_PARENT}/bosh-dns-release" -maxdepth 1 -path '*.tgz')" if [ -d database-metadata ]; then apt-get update apt-get install -y mysql-client postgresql-client RDS_MYSQL_EXTERNAL_DB_HOST="$(jq -r .aws_mysql_endpoint database-metadata/metadata | cut -d':' -f1)" RDS_POSTGRES_EXTERNAL_DB_HOST="$(jq -r .aws_postgres_endpoint database-metadata/metadata | cut -d':' -f1)" GCP_MYSQL_EXTERNAL_DB_HOST="$(jq -r .gcp_mysql_endpoint database-metadata/metadata)" GCP_POSTGRES_EXTERNAL_DB_HOST="$(jq -r .gcp_postgres_endpoint database-metadata/metadata)" GCP_MYSQL_EXTERNAL_DB_CA="$(jq -r .gcp_mysql_ca database-metadata/metadata)" GCP_MYSQL_EXTERNAL_DB_CLIENT_CERTIFICATE="$(jq -r .gcp_mysql_client_cert database-metadata/metadata)" GCP_MYSQL_EXTERNAL_DB_CLIENT_PRIVATE_KEY="$(jq -r .gcp_mysql_client_key database-metadata/metadata)" GCP_POSTGRES_EXTERNAL_DB_CA="$(jq -r .gcp_postgres_ca database-metadata/metadata)" GCP_POSTGRES_EXTERNAL_DB_CLIENT_CERTIFICATE="$(jq -r .gcp_postgres_client_cert database-metadata/metadata)" GCP_POSTGRES_EXTERNAL_DB_CLIENT_PRIVATE_KEY="$(jq -r .gcp_postgres_client_key database-metadata/metadata)" fi brats_env_file="${REPO_PARENT}/brats-env.sh" { echo "export OUTER_BOSH_ENV_PATH=\"${OUTER_BOSH_ENV_PATH}\"" echo "export DOCKER_CERTS=\"${DOCKER_CERTS}\"" echo "export DOCKER_HOST=\"${DOCKER_HOST}\"" echo "export BOSH_BINARY_PATH=\"${BOSH_BINARY_PATH}\"" echo "export BOSH_DIRECTOR_IP=\"${BOSH_DIRECTOR_IP}\"" echo "export BOSH_DEPLOYMENT_PATH=\"${BOSH_DEPLOYMENT_PATH}\"" echo "export BOSH_DIRECTOR_RELEASE_PATH=\"${BOSH_DIRECTOR_RELEASE_PATH}\"" echo "export DIRECTOR_STEMCELL_OS=\"${DIRECTOR_STEMCELL_OS}\"" echo "export DIRECTOR_STEMCELL_TARBALL_PATH=\"${DIRECTOR_STEMCELL_TARBALL_PATH}\"" echo "export STEMCELL_OS=\"${STEMCELL_OS}\"" echo "export CANDIDATE_STEMCELL_TARBALL_PATH=\"${CANDIDATE_STEMCELL_TARBALL_PATH}\"" echo "export BOSH_RELEASE=\"${BOSH_RELEASE}\"" echo "export DNS_RELEASE_PATH=\"${DNS_RELEASE_PATH}\"" echo "export RDS_MYSQL_EXTERNAL_DB_HOST=\"${RDS_MYSQL_EXTERNAL_DB_HOST:-}\"" echo "export RDS_POSTGRES_EXTERNAL_DB_HOST=\"${RDS_POSTGRES_EXTERNAL_DB_HOST:-}\"" echo "export GCP_MYSQL_EXTERNAL_DB_HOST=\"${GCP_MYSQL_EXTERNAL_DB_HOST:-}\"" echo "export GCP_MYSQL_EXTERNAL_DB_CA=\"${GCP_MYSQL_EXTERNAL_DB_CA:-}\"" echo "export GCP_MYSQL_EXTERNAL_DB_CLIENT_CERTIFICATE=\"${GCP_MYSQL_EXTERNAL_DB_CLIENT_CERTIFICATE:-}\"" echo "export GCP_MYSQL_EXTERNAL_DB_CLIENT_PRIVATE_KEY=\"${GCP_MYSQL_EXTERNAL_DB_CLIENT_PRIVATE_KEY:-}\"" echo "export GCP_POSTGRES_EXTERNAL_DB_HOST=\"${GCP_POSTGRES_EXTERNAL_DB_HOST:-}\"" echo "export GCP_POSTGRES_EXTERNAL_DB_CA=\"${GCP_POSTGRES_EXTERNAL_DB_CA:-}\"" echo "export GCP_POSTGRES_EXTERNAL_DB_CLIENT_CERTIFICATE=\"${GCP_POSTGRES_EXTERNAL_DB_CLIENT_CERTIFICATE:-}\"" echo "export GCP_POSTGRES_EXTERNAL_DB_CLIENT_PRIVATE_KEY=\"${GCP_POSTGRES_EXTERNAL_DB_CLIENT_PRIVATE_KEY:-}\"" echo "# load outer-bosh env" echo "source "${OUTER_BOSH_ENV_PATH} } > "${brats_env_file}" echo "Source '${brats_env_file}' load the required BRATs environment" >&2 # shellcheck disable=SC1090 source "${brats_env_file}" bosh -n upload-stemcell "${DIRECTOR_STEMCELL_TARBALL_PATH}" bosh -n upload-stemcell "${CANDIDATE_STEMCELL_TARBALL_PATH}" bosh -n update-cloud-config \ "${BOSH_DEPLOYMENT_PATH}/docker/cloud-config.yml" \ -o "${REPO_ROOT}/ci/dockerfiles/docker-cpi/outer-cloud-config-ops.yml" \ -o "${REPO_ROOT}/ci/dockerfiles/docker-cpi/gcp-internal-dns-ops.yml" \ -v network=director_network if [ -n "${BRATS_DNS_MANIFEST_OPS_FILES:-}" ]; then DNS_MANIFEST="${REPO_ROOT}/src/brats/assets/dns-with-templates-manifest.yml" # Run from REPO_PARENT so relative ops-file paths resolve against the Concourse build root pushd "${REPO_PARENT}" # shellcheck disable=SC2086 bosh int "${DNS_MANIFEST}" ${BRATS_DNS_MANIFEST_OPS_FILES} > /tmp/brats-dns-manifest-modified.yml popd cp /tmp/brats-dns-manifest-modified.yml "${DNS_MANIFEST}" fi pushd "${REPO_ROOT}/src/brats/acceptance" go run github.com/onsi/ginkgo/v2/ginkgo \ -r -v --race --timeout=24h \ --randomize-suites --randomize-all \ --fail-on-pending \ --focus="${FOCUS_SPEC:-}" \ . popd