parent
6662a607df
commit
5ffb3e06cd
@ -0,0 +1,311 @@
|
|||||||
|
steps:
|
||||||
|
|
||||||
|
# Print logs url
|
||||||
|
- name: ubuntu
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
echo "[LOGS] Tests & compose logs will be stored at https://console.cloud.google.com/storage/browser/${_REPO}-ci-tmp-logs/test_logs_${BUILD_ID}"
|
||||||
|
|
||||||
|
# Cancel previous job on the same branch
|
||||||
|
- name: gcr.io/cloud-builders/gcloud
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
args:
|
||||||
|
- '-c'
|
||||||
|
- 'gcloud builds list --ongoing --filter="buildTriggerId=3ab7bd24-60d1-4cf3-a30e-86bae7bf69d0 AND substitutions.BRANCH_NAME=${BRANCH_NAME} AND id!=${BUILD_ID}" --format="get(ID)" > jobs_to_cancel'
|
||||||
|
|
||||||
|
- name: gcr.io/cloud-builders/gcloud
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
args:
|
||||||
|
- '-c'
|
||||||
|
- 'gcloud builds cancel $(cat jobs_to_cancel | xargs) || true'
|
||||||
|
|
||||||
|
# Decrypt github key
|
||||||
|
- name: gcr.io/cloud-builders/gcloud
|
||||||
|
args:
|
||||||
|
- kms
|
||||||
|
- decrypt
|
||||||
|
- --ciphertext-file=script/ci/.id_github_cartofante.enc
|
||||||
|
- --plaintext-file=/root/.ssh/id_rsa
|
||||||
|
- --location=global
|
||||||
|
- --keyring=keyring-github-ci
|
||||||
|
- --key=github-key
|
||||||
|
volumes:
|
||||||
|
- name: 'ssh'
|
||||||
|
path: /root/.ssh
|
||||||
|
|
||||||
|
# Set up git with key and domain
|
||||||
|
- name: 'gcr.io/cloud-builders/git'
|
||||||
|
entrypoint: 'bash'
|
||||||
|
args:
|
||||||
|
- '-c'
|
||||||
|
- |
|
||||||
|
chmod 600 /root/.ssh/id_rsa
|
||||||
|
cat <<EOF >/root/.ssh/config
|
||||||
|
Hostname github.com
|
||||||
|
IdentityFile /root/.ssh/id_rsa
|
||||||
|
EOF
|
||||||
|
mv script/ci/known_hosts /root/.ssh/known_hosts
|
||||||
|
volumes:
|
||||||
|
- name: 'ssh'
|
||||||
|
path: /root/.ssh
|
||||||
|
|
||||||
|
# Clean working directory
|
||||||
|
- name: alpine
|
||||||
|
args: ['sh', '-c', 'rm -rf .* | true && rm -rf *']
|
||||||
|
|
||||||
|
# Checkout repo with submodules
|
||||||
|
- name: 'gcr.io/cloud-builders/git'
|
||||||
|
entrypoint: 'sh'
|
||||||
|
args: ['-c', 'git clone git@github.com:CartoDB/${_REPO} -b "${BRANCH_NAME}" --depth 1 --recursive cartodb']
|
||||||
|
volumes:
|
||||||
|
- name: 'ssh'
|
||||||
|
path: /root/.ssh
|
||||||
|
|
||||||
|
# Checkout db-connectors
|
||||||
|
- name: 'gcr.io/cloud-builders/git'
|
||||||
|
entrypoint: 'sh'
|
||||||
|
dir: cartodb
|
||||||
|
args: ['-c', 'git clone git@github.com:CartoDB/db-connectors --depth 1 private_gears/db-connectors']
|
||||||
|
volumes:
|
||||||
|
- name: 'ssh'
|
||||||
|
path: /root/.ssh
|
||||||
|
|
||||||
|
# Checkout repo with submodules
|
||||||
|
- name: 'gcr.io/cloud-builders/git'
|
||||||
|
entrypoint: 'sh'
|
||||||
|
args: ['-c', 'git clone git@github.com:CartoDB/docker-dev-env --depth 1']
|
||||||
|
volumes:
|
||||||
|
- name: 'ssh'
|
||||||
|
path: /root/.ssh
|
||||||
|
|
||||||
|
# Checkout repo with submodules
|
||||||
|
- name: 'gcr.io/cloud-builders/git'
|
||||||
|
entrypoint: 'sh'
|
||||||
|
args: ['-c', 'git clone git@github.com:CartoDB/dockerize-onpremises --depth 1']
|
||||||
|
volumes:
|
||||||
|
- name: 'ssh'
|
||||||
|
path: /root/.ssh
|
||||||
|
|
||||||
|
# Prepare dev-env files
|
||||||
|
- name: ubuntu
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: /workspace/docker-dev-env
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
cp .env.sample .env
|
||||||
|
echo 'CARTO_BUILDER_SERVER=rails' >> .env
|
||||||
|
echo 'CARTO_DOMAIN=localhost.lan' >> .env
|
||||||
|
sed -i 's@'"$_DOCKER_IMAGE_NAME":latest'@'"$_DOCKER_IMAGE_NAME":"$SHORT_SHA"'@' .env
|
||||||
|
cat .env | grep 'IMAGE'
|
||||||
|
|
||||||
|
# Pull images in background
|
||||||
|
- name: 'docker/compose:1.28.0'
|
||||||
|
entrypoint: /bin/sh
|
||||||
|
dir: /workspace/docker-dev-env
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
docker-compose pull &
|
||||||
|
|
||||||
|
# Copy build files
|
||||||
|
- name: ubuntu
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: cartodb
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
cp private/Dockerfil* .
|
||||||
|
cp config/unicorn.conf.rb.sample config/unicorn.conf.rb
|
||||||
|
cp config/app_config.yml.sample config/app_config.yml
|
||||||
|
cp config/database.yml.sample config/database.yml
|
||||||
|
cp lib/assets/javascripts/cdb/secrets.example.json lib/assets/javascripts/cdb/secrets.json
|
||||||
|
|
||||||
|
# Build image
|
||||||
|
- name: gcr.io/cloud-builders/docker
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: cartodb
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
docker pull ${_DOCKER_IMAGE_NAME}:${_BRANCH_TAG}
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
docker pull ${_DOCKER_IMAGE_NAME}:latest
|
||||||
|
fi
|
||||||
|
set -e
|
||||||
|
docker build --label="org.opencontainers.image.created=$$(date --rfc-3339=seconds)" --label=org.opencontainers.image.revision=${COMMIT_SHA} --build-arg COMPILE_ASSETS=true --build-arg BUNDLE_JOBS=4 -t ${_DOCKER_IMAGE_NAME}:latest -t ${_DOCKER_IMAGE_NAME}:${_BRANCH_TAG} -t ${_DOCKER_IMAGE_NAME}:${SHORT_SHA} -t ${_DOCKER_IMAGE_NAME}:${_BRANCH_TAG}--${SHORT_SHA} --cache-from ${_DOCKER_IMAGE_NAME}:${_BRANCH_TAG} --cache-from ${_DOCKER_IMAGE_NAME}:latest .
|
||||||
|
docker build --label="org.opencontainers.image.created=$$(date --rfc-3339=seconds)" --label=org.opencontainers.image.revision=${COMMIT_SHA} -t ${_DOCKER_IMAGE_NAME}-resque:latest -t ${_DOCKER_IMAGE_NAME}-resque:${_BRANCH_TAG} -t ${_DOCKER_IMAGE_NAME}-resque:${SHORT_SHA} -t ${_DOCKER_IMAGE_NAME}-resque:${_BRANCH_TAG}--${SHORT_SHA} -f Dockerfile.resque .
|
||||||
|
docker build --label="org.opencontainers.image.created=$$(date --rfc-3339=seconds)" --label=org.opencontainers.image.revision=${COMMIT_SHA} -t ${_DOCKER_IMAGE_NAME}-subscriber:latest -t ${_DOCKER_IMAGE_NAME}-subscriber:${_BRANCH_TAG} -t ${_DOCKER_IMAGE_NAME}-subscriber:${SHORT_SHA} -t ${_DOCKER_IMAGE_NAME}-subscriber:${_BRANCH_TAG}--${SHORT_SHA} -f Dockerfile.subscriber .
|
||||||
|
|
||||||
|
# Checkout onprem licensing gear
|
||||||
|
- name: 'gcr.io/cloud-builders/git'
|
||||||
|
entrypoint: 'sh'
|
||||||
|
dir: cartodb
|
||||||
|
args: ['-c', 'git clone git@github.com:CartoDB/onpremises_licensing_gear --depth 1 private_gears/onpremises_licensing_gear']
|
||||||
|
volumes:
|
||||||
|
- name: 'ssh'
|
||||||
|
path: /root/.ssh
|
||||||
|
|
||||||
|
# Build onprem image
|
||||||
|
- name: gcr.io/cloud-builders/docker
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: cartodb
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
docker build --label="org.opencontainers.image.created=$$(date --rfc-3339=seconds)" --label=org.opencontainers.image.revision=${COMMIT_SHA} --label=com.carto.onprem.revision=$(git -C private_gears/onpremises_licensing_gear/ rev-parse HEAD) -f private/Dockerfile.onprem --build-arg BUNDLE_JOBS=4 -t ${_DOCKER_IMAGE_NAME}-onprem:latest -t ${_DOCKER_IMAGE_NAME}-onprem:${_BRANCH_TAG} -t ${_DOCKER_IMAGE_NAME}-onprem:${SHORT_SHA} -t ${_DOCKER_IMAGE_NAME}-onprem:${_BRANCH_TAG}--${SHORT_SHA} .
|
||||||
|
|
||||||
|
## docker-dev-env tests ##
|
||||||
|
|
||||||
|
# Init dev-env
|
||||||
|
- name: 'docker/compose:1.28.0'
|
||||||
|
entrypoint: /bin/sh
|
||||||
|
dir: /workspace/docker-dev-env
|
||||||
|
args: ['scripts/init.sh']
|
||||||
|
|
||||||
|
# Run dev tests
|
||||||
|
- name: gcr.io/cloud-builders/docker
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: /workspace/docker-dev-env
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
source .env
|
||||||
|
docker run --rm --name tavern-tester-dev \
|
||||||
|
--env "CARTO_USER=$${USER_USERNAME}" \
|
||||||
|
--env "CARTO_DOMAIN=$${CARTO_DOMAIN}" \
|
||||||
|
--network host \
|
||||||
|
--env-file .env \
|
||||||
|
gcr.io/cartodb-on-gcp-main-artifacts/tavern-tester:latest \
|
||||||
|
all dev > dev_output 2>&1
|
||||||
|
echo $? >> dev_result
|
||||||
|
cat dev_output
|
||||||
|
|
||||||
|
# Copy dev compose logs
|
||||||
|
- name: 'docker/compose:1.28.2'
|
||||||
|
entrypoint: /bin/sh
|
||||||
|
dir: /workspace/docker-dev-env
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
docker-compose logs --no-color > dev_docker_compose_logs
|
||||||
|
echo "Logs will be available during 14 days at gs://${_REPO}-ci-tmp-logs/${BUILD_ID}/"
|
||||||
|
|
||||||
|
# Upload dev logs to gcs
|
||||||
|
- name: gcr.io/cloud-builders/gsutil
|
||||||
|
entrypoint: /bin/sh
|
||||||
|
dir: /workspace/docker-dev-env
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
gsutil -m cp dev_output gs://${_REPO}-ci-tmp-logs/test_logs_${BUILD_ID}/
|
||||||
|
gsutil -m cp dev_docker_compose_logs gs://${_REPO}-ci-tmp-logs/test_logs_${BUILD_ID}/
|
||||||
|
|
||||||
|
# Stop dev services and volumes
|
||||||
|
- name: 'docker/compose:1.28.0'
|
||||||
|
dir: /workspace/docker-dev-env
|
||||||
|
args: ['down', '-v']
|
||||||
|
|
||||||
|
## Onprem tests ##
|
||||||
|
# Change nginx host port to 8443: 443 is bussy inside Cloud Build host
|
||||||
|
- name: ubuntu
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: /workspace/dockerize-onpremises
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
sed -i 's@'"$_DOCKER_IMAGE_NAME":latest'@'"$_DOCKER_IMAGE_NAME":"$SHORT_SHA"'@' .env
|
||||||
|
cat .env | grep 'IMAGE'
|
||||||
|
sed -i 's/443:443/8443:443/g' docker-compose.yml
|
||||||
|
|
||||||
|
# Init onprem
|
||||||
|
- name: 'docker/compose:1.28.2'
|
||||||
|
entrypoint: /bin/sh
|
||||||
|
dir: /workspace/dockerize-onpremises
|
||||||
|
args: ['ci/init.sh']
|
||||||
|
|
||||||
|
# Install license
|
||||||
|
- name: gcr.io/cloud-builders/docker
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: /workspace/dockerize-onpremises
|
||||||
|
args:
|
||||||
|
- -cex
|
||||||
|
- |
|
||||||
|
mkdir -p license && cp -f ci/test_license/dockerize-onpremises-tests-license.lic license/carto.lic
|
||||||
|
./script/license.sh
|
||||||
|
|
||||||
|
# Run onprem tests
|
||||||
|
- name: gcr.io/cloud-builders/docker
|
||||||
|
entrypoint: /bin/bash
|
||||||
|
dir: /workspace/dockerize-onpremises
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
source .env
|
||||||
|
source ci/.env.ci
|
||||||
|
docker run --rm --name tavern-tester-onprem \
|
||||||
|
--env "CARTO_USER=$${USER_USERNAME}" \
|
||||||
|
--env "CARTO_DOMAIN=$${CARTO_DOMAIN}" \
|
||||||
|
--network "$${COMPOSE_PROJECT_NAME}_default" \
|
||||||
|
--env-file .env \
|
||||||
|
gcr.io/cartodb-on-gcp-main-artifacts/tavern-tester:latest \
|
||||||
|
all onprem > onprem_output 2>&1
|
||||||
|
echo $? >> onprem_result
|
||||||
|
cat onprem_output
|
||||||
|
|
||||||
|
# Copy onprem compose logs
|
||||||
|
- name: 'docker/compose:1.28.2'
|
||||||
|
entrypoint: /bin/sh
|
||||||
|
dir: /workspace/dockerize-onpremises
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
docker-compose -f docker-compose.yml -f ci/docker-compose.ci.yml logs --no-color > onprem_docker_compose_logs
|
||||||
|
echo "Logs will be available during 14 days at gs://${_REPO}-ci-tmp-logs/test_logs_${BUILD_ID}/"
|
||||||
|
|
||||||
|
# Upload onprem logs to gcs
|
||||||
|
- name: gcr.io/cloud-builders/gsutil
|
||||||
|
entrypoint: /bin/sh
|
||||||
|
dir: /workspace/dockerize-onpremises
|
||||||
|
args:
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
gsutil -m cp onprem_output gs://${_REPO}-ci-tmp-logs/test_logs_${BUILD_ID}/
|
||||||
|
gsutil -m cp onprem_docker_compose_logs gs://${_REPO}-ci-tmp-logs/test_logs_${BUILD_ID}/
|
||||||
|
|
||||||
|
# Handle exit code
|
||||||
|
- name: ubuntu
|
||||||
|
entrypoint: bash
|
||||||
|
dir: /workspace
|
||||||
|
args:
|
||||||
|
- -cx
|
||||||
|
- |
|
||||||
|
echo "[LOGS] Tests & compose logs are at https://console.cloud.google.com/storage/browser/cartodb-ci-tmp-logs/test_logs_${BUILD_ID}"
|
||||||
|
if [ "$(cat /workspace/docker-dev-env/dev_result)" -eq 0 ] && [ "$(cat /workspace/dockerize-onpremises/onprem_result)" -eq 0 ];then
|
||||||
|
echo '[PASSED] All tests passed'
|
||||||
|
exit 0
|
||||||
|
elif [ "$(cat /workspace/docker-dev-env/dev_result)" -ne 0 ];then
|
||||||
|
echo '[FAILED] Development environment tests failed'
|
||||||
|
cat /workspace/docker-dev-env/dev_output
|
||||||
|
exit 1
|
||||||
|
elif [ "$(cat /workspace/dockerize-onpremises/onprem_result)" -ne 0 ];then
|
||||||
|
echo '[FAILED] Onprem tests failed'
|
||||||
|
cat /workspace/dockerize-onpremises/onprem_output
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo '[FAILED] All tests failed'
|
||||||
|
cat /workspace/docker-dev-env/dev_output
|
||||||
|
cat /workspace/dockerize-onpremises/onprem_output
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
timeout: 1800s
|
||||||
|
options:
|
||||||
|
machineType: 'E2_HIGHCPU_32'
|
||||||
|
substitutions:
|
||||||
|
_BRANCH_TAG: ${BRANCH_NAME//\//-}
|
||||||
|
_DOCKER_IMAGE_NAME: gcr.io/cartodb-on-gcp-main-artifacts/builder
|
||||||
|
_REPO: cartodb
|
Loading…
Reference in new issue