#!/bin/bash # Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # A suite of tests offered by https://github.com/googleapis/env-tests-logging # That allows deploying and testing features in live GCP services. # Currently only configured to test logging & error reporting set -eo pipefail # Test prechecks if [[ -z "${ENVIRONMENT:-}" ]]; then echo "ENVIRONMENT not set. Exiting" exit 1 fi if [[ -z "${PROJECT_ROOT:-}" ]]; then PROJECT_ROOT="github/google-cloud-go" fi # add kokoro labels for testgrid filtering export PRODUCT_AREA_LABEL=observability export PRODUCT_LABEL=logging export LANGUAGE_LABEL=go # Add the test module as a submodule to the repo. cd "${KOKORO_ARTIFACTS_DIR}/github/google-cloud-go/internal/" git submodule add https://github.com/googleapis/env-tests-logging cd "env-tests-logging/" export ENV_TEST_PY_VERSION=3.9 echo "using python version: $ENV_TEST_PY_VERSION" # run tests from git tag golang-envtest-pin when available TAG_ID="golang-envtest-pin" git fetch --tags if [ $(git tag -l "$TAG_ID") ]; then git -c advice.detachedHead=false checkout $TAG_ID else echo "WARNING: tag $TAG_ID not found in repo" fi echo "running env-tests-logging at commit: $(git rev-parse HEAD)" # Disable buffering, so that the logs stream through. export PYTHONUNBUFFERED=1 # Debug: show build environment env | grep KOKORO # Set up service account credentials export GOOGLE_APPLICATION_CREDENTIALS=$KOKORO_KEYSTORE_DIR/72523_go_integration_service_account gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS set -x export PROJECT_ID="dulcet-port-762" gcloud config set project $PROJECT_ID gcloud config set compute/zone us-central1-b # Authenticate docker gcloud auth configure-docker -q # create a unique id for this run UUID=$(python3 -c 'import uuid; print(uuid.uuid1())' | head -c 7) export ENVCTL_ID=ci-$UUID echo $ENVCTL_ID # If App Engine, install app-engine-go component if [[ $ENVIRONMENT == *"appengine"* ]]; then apt-get install google-cloud-sdk-app-engine-go -y | cat fi # If Kubernetes, install kubectl component if [[ $ENVIRONMENT == *"kubernetes"* ]]; then curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl mkdir -p ~/.local/bin mv ./kubectl ~/.local/bin export PATH=$PATH:~/.local/bin/ # install auth plugin apt-get install google-cloud-sdk-gke-gcloud-auth-plugin export USE_GKE_GCLOUD_AUTH_PLUGIN=True fi # If Functions, use python3.8, since that's what's in go116 container if [[ $ENVIRONMENT == *"functions"* ]]; then export ENV_TEST_PY_VERSION=3.8 python3 -m pip install nox fi # Run the environment test for the specified GCP service set +e python3 -m nox --session "tests(language='go', platform='$ENVIRONMENT')" TEST_STATUS_CODE=$? # destroy resources echo "cleaning up..." ./envctl/envctl go $ENVIRONMENT destroy # exit with proper status code exit $TEST_STATUS_CODE