From ce25fa43022188307414f76a6486e6eaf521b202 Mon Sep 17 00:00:00 2001 From: Antoine Legrand <2t.antoine@gmail.com> Date: Mon, 12 Feb 2018 11:35:37 +0100 Subject: [PATCH] Enable multiple CI platform / Add DigitalOcean --- .gitlab-ci.yml | 1075 ++++++++++++++-------------- tests/Makefile | 50 ++ tests/files/ubuntu-canal-ha-do.yml | 10 + 3 files changed, 591 insertions(+), 544 deletions(-) create mode 100644 tests/Makefile create mode 100644 tests/files/ubuntu-canal-ha-do.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8c6d28019..b8981ffbc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,5 @@ stages: - - deploy-do-part1 + - deploy-do - moderator - unit-tests - deploy-gce-part1 @@ -10,6 +10,21 @@ variables: FAILFASTCI_NAMESPACE: 'kargo-ci' # DOCKER_HOST: tcp://localhost:2375 ANSIBLE_FORCE_COLOR: "true" + MAGIC: "ci check this" + TEST_ID: "$CI_PIPELINE_ID-$CI_BUILD_ID" + CI_TEST_VARS: "./tests/files/${CI_JOB_NAME}.yml" + GS_ACCESS_KEY_ID: $GS_KEY + GS_SECRET_ACCESS_KEY: $GS_SECRET + CONTAINER_ENGINE: docker + SSH_USER: $GCE_USER + GCE_PREEMPTIBLE: "false" + ANSIBLE_KEEP_REMOTE_FILES: "1" + ANSIBLE_CONFIG: ./tests/ansible.cfg + IDEMPOT_CHECK: "false" + RESET_CHECK: "false" + UPGRADE_TEST: "false" + KUBEADM_ENABLED: "false" + LOG_LEVEL: "-vv" # asia-east1-a # asia-northeast1-a @@ -39,24 +54,16 @@ before_script: .gce_variables: &gce_variables GCE_USER: travis SSH_USER: $GCE_USER - TEST_ID: "$CI_PIPELINE_ID-$CI_BUILD_ID" - CI_TEST_VARS: "./tests/files/${CI_JOB_NAME}.yml" - CONTAINER_ENGINE: docker - PRIVATE_KEY: $GCE_PRIVATE_KEY - GS_ACCESS_KEY_ID: $GS_KEY - GS_SECRET_ACCESS_KEY: $GS_SECRET CLOUD_MACHINE_TYPE: "g1-small" - GCE_PREEMPTIBLE: "false" - ANSIBLE_KEEP_REMOTE_FILES: "1" - ANSIBLE_CONFIG: ./tests/ansible.cfg - IDEMPOT_CHECK: "false" - RESET_CHECK: "false" - UPGRADE_TEST: "false" - KUBEADM_ENABLED: "false" - LOG_LEVEL: "-vv" - MAGIC: "ci check this" + CI_PLATFORM: "gce" + PRIVATE_KEY: $GCE_PRIVATE_KEY -.gce: &gce +.do_variableS: &do_variables + PRIVATE_KEY: $DO_PRIVATE_KEY + CI_PLATFORM: "do" + + +.testcases: &testcases <<: *job <<: *docker_service cache: @@ -69,10 +76,6 @@ before_script: - pip install -r tests/requirements.txt - mkdir -p /.ssh - mkdir -p $HOME/.ssh - - echo $PRIVATE_KEY | base64 -d > $HOME/.ssh/id_rsa - - echo $GCE_PEM_FILE | base64 -d > $HOME/.ssh/gce - - echo $GCE_CREDENTIALS > $HOME/.ssh/gce.json - - chmod 400 $HOME/.ssh/id_rsa - ansible-playbook --version - export PYPATH=$([[ ! "$CI_JOB_NAME" =~ "coreos" ]] && echo /usr/bin/python || echo /opt/bin/python) - echo "CI_JOB_NAME is $CI_JOB_NAME" @@ -82,15 +85,7 @@ before_script: - ls - echo ${PWD} - echo "${STARTUP_SCRIPT}" - - > - ansible-playbook tests/cloud_playbooks/create-gce.yml -i tests/local_inventory/hosts.cfg -c local - ${LOG_LEVEL} - -e gce_credentials_file=${HOME}/.ssh/gce.json - -e gce_project_id=${GCE_PROJECT_ID} - -e gce_service_account_email=${GCE_ACCOUNT} - -e inventory_path=${PWD}/inventory/sample/hosts.ini - -e test_id=${TEST_ID} - -e preemptible=$GCE_PREEMPTIBLE + - cd tests && make create-${CI_PLATFORM} -s ; cd - # Check out latest tag if testing upgrade # Uncomment when gitlab kargo repo has tags @@ -227,192 +222,195 @@ before_script: fi after_script: - - > - ansible-playbook -i inventory/sample/hosts.ini tests/cloud_playbooks/delete-gce.yml -c local $LOG_LEVEL - -e @${CI_TEST_VARS} - -e test_id=${TEST_ID} - -e gce_project_id=${GCE_PROJECT_ID} - -e gce_service_account_email=${GCE_ACCOUNT} - -e gce_credentials_file=${HOME}/.ssh/gce.json - -e inventory_path=${PWD}/inventory/sample/hosts.ini + - cd tests && make delete-${CI_PLATFORM} -s ; cd - -.do: &do - <<: *job - <<: *gce - cache: - key: "$CI_BUILD_REF_NAME" - paths: - - downloads/ - - $HOME/.cache - before_script: - - docker info - - pip install ansible==2.2.1.0 - - pip install netaddr - - pip install apache-libcloud==0.20.1 - - pip install boto==2.9.0 - - pip install dopy==0.3.5 - - mkdir -p /.ssh - - mkdir -p $HOME/.ssh - - echo $DO_PRIVATE_KEY | base64 -d > $HOME/.ssh/id_rsa - - chmod 400 $HOME/.ssh/id_rsa - - md5sum ~/.ssh/id_rsa - - ansible-playbook --version - - export PYPATH=$([ $BOOTSTRAP_OS = coreos ] && echo /opt/bin/python || echo /usr/bin/python ) - - echo $PYPATH - script: - - pwd - - ls - - echo ${PWD} - - > - ansible-playbook tests/cloud_playbooks/create-do.yml -i tests/local_inventory/hosts.cfg -c local - ${LOG_LEVEL} - -e cloud_image=${CLOUD_IMAGE} - -e cloud_region=${CLOUD_REGION} - -e inventory_path=${PWD}/inventory/inventory.ini - -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} - -e mode=${CLUSTER_MODE} - -e test_id=${TEST_ID} - - # Check out latest tag if testing upgrade - # Uncomment when gitlab kargo repo has tags - #- test "${UPGRADE_TEST}" = "true" && git fetch --all && git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) - - test "${UPGRADE_TEST}" = "true" && git checkout 031cf565ec3ccd3ebbe80eeef3454c3780e5c598 && pip install ansible==2.2.0 - - - # Create cluster - - > - ansible-playbook -i inventory/inventory.ini -b --become-user=root --private-key=${HOME}/.ssh/id_rsa -u root - ${SSH_ARGS} - ${LOG_LEVEL} - -e state=present - -e ansible_python_interpreter=${PYPATH} - -e ansible_ssh_user=root - -e bootstrap_os=${BOOTSTRAP_OS} - -e cert_management=${CERT_MGMT:-script} - -e cloud_provider=gce - -e deploy_netchecker=true - -e download_localhost=true - -e download_run_once=true - -e etcd_deployment_type=${ETCD_DEPLOYMENT} - -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} - -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} - -e local_release_dir=${PWD}/downloads - -e resolvconf_mode=${RESOLVCONF_MODE} - -e vault_deployment_type=${VAULT_DEPLOYMENT} - cluster.yml - - # Repeat deployment if testing upgrade - #FIXME(mattymo): repeat "Create cluster" above without duplicating code - - > - if [ "${UPGRADE_TEST}" = "true" ]; then - pip install ansible==2.2.1.0; - git checkout "${CI_BUILD_REF}"; - ansible-playbook -i inventory/inventory.ini -b --become-user=root --private-key=${HOME}/.ssh/id_rsa -u root - ${SSH_ARGS} - ${LOG_LEVEL} - -e ansible_python_interpreter=${PYPATH} - -e ansible_ssh_user=root - -e bootstrap_os=${BOOTSTRAP_OS} - -e cloud_provider=gce - -e deploy_netchecker=true - -e download_localhost=true - -e download_run_once=true - -e etcd_deployment_type=${ETCD_DEPLOYMENT} - -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} - -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} - -e local_release_dir=${PWD}/downloads - -e resolvconf_mode=${RESOLVCONF_MODE} - -e weave_cpu_requests=${WEAVE_CPU_LIMIT} - -e weave_cpu_limit=${WEAVE_CPU_LIMIT} - cluster.yml; - fi - - # Tests Cases - ## Test Master API - - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root tests/testcases/010_check-apiserver.yml $LOG_LEVEL - - ## Ping the between 2 pod - - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root tests/testcases/030_check-network.yml $LOG_LEVEL - - ## Advanced DNS checks - - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root tests/testcases/040_check-network-adv.yml $LOG_LEVEL - - ## Idempotency checks 1/5 (repeat deployment) - - > - if [ "${IDEMPOT_CHECK}" = "true" ]; then - ansible-playbook -i inventory/inventory.ini -u root -e ansible_ssh_user=root $SSH_ARGS - -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} - --private-key=${HOME}/.ssh/id_rsa - -e bootstrap_os=${BOOTSTRAP_OS} - -e ansible_python_interpreter=${PYPATH} - -e download_run_once=true - -e download_localhost=true - -e deploy_netchecker=true - -e resolvconf_mode=${RESOLVCONF_MODE} - -e local_release_dir=${PWD}/downloads - -e etcd_deployment_type=${ETCD_DEPLOYMENT} - -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} - cluster.yml; - fi - - ## Idempotency checks 2/5 (Advanced DNS checks) - - > - if [ "${IDEMPOT_CHECK}" = "true" ]; then - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} - -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root - tests/testcases/040_check-network-adv.yml $LOG_LEVEL; - fi - - ## Idempotency checks 3/5 (reset deployment) - - > - if [ "${IDEMPOT_CHECK}" = "true" ]; then - ansible-playbook -i inventory/inventory.ini -u root -e ansible_ssh_user=root $SSH_ARGS - -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} - --private-key=${HOME}/.ssh/id_rsa - -e bootstrap_os=${BOOTSTRAP_OS} - -e ansible_python_interpreter=${PYPATH} - reset.yml; - fi - - ## Idempotency checks 4/5 (redeploy after reset) - - > - if [ "${IDEMPOT_CHECK}" = "true" ]; then - ansible-playbook -i inventory/inventory.ini -u root -e ansible_ssh_user=root $SSH_ARGS - -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} - --private-key=${HOME}/.ssh/id_rsa - -e bootstrap_os=${BOOTSTRAP_OS} - -e ansible_python_interpreter=${PYPATH} - -e download_run_once=true - -e download_localhost=true - -e deploy_netchecker=true - -e resolvconf_mode=${RESOLVCONF_MODE} - -e local_release_dir=${PWD}/downloads - -e etcd_deployment_type=${ETCD_DEPLOYMENT} - -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} - cluster.yml; - fi - - ## Idempotency checks 5/5 (Advanced DNS checks) - - > - if [ "${IDEMPOT_CHECK}" = "true" ]; then - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} - -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root - tests/testcases/040_check-network-adv.yml $LOG_LEVEL; - fi +.gce: &gce + <<: *testcases + variables: + <<: *gce_variables - after_script: - - > - ansible-playbook -i inventory/inventory.ini tests/cloud_playbooks/create-do.yml -c local $LOG_LEVEL - -e state=absent - -e mode=${CLUSTER_MODE} - -e test_id=${TEST_ID} - -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} - -e gce_project_id=${GCE_PROJECT_ID} - -e gce_service_account_email=${GCE_ACCOUNT} - -e gce_credentials_file=${HOME}/.ssh/gce.json - -e cloud_image=${CLOUD_IMAGE} - -e inventory_path=${PWD}/inventory/inventory.ini - -e cloud_region=${CLOUD_REGION} +.do: &do + variables: + <<: *do_variables + <<: *testcases + +# .do: &do +# <<: *job +# <<: *gce +# cache: +# key: "$CI_BUILD_REF_NAME" +# paths: +# - downloads/ +# - $HOME/.cache +# before_script: +# - docker info +# - pip install ansible==2.2.1.0 +# - pip install netaddr +# - pip install apache-libcloud==0.20.1 +# - pip install boto==2.9.0 +# - pip install dopy==0.3.5 +# - mkdir -p /.ssh +# - mkdir -p $HOME/.ssh +# - echo $DO_PRIVATE_KEY | base64 -d > $HOME/.ssh/id_rsa +# - chmod 400 $HOME/.ssh/id_rsa +# - md5sum ~/.ssh/id_rsa +# - ansible-playbook --version +# - export PYPATH=$([ $BOOTSTRAP_OS = coreos ] && echo /opt/bin/python || echo /usr/bin/python ) +# - echo $PYPATH +# script: +# - pwd +# - ls +# - echo ${PWD} +# - > +# ansible-playbook tests/cloud_playbooks/create-do.yml -i tests/local_inventory/hosts.cfg -c local +# ${LOG_LEVEL} +# -e cloud_image=${CLOUD_IMAGE} +# -e cloud_region=${CLOUD_REGION} +# -e inventory_path=${PWD}/inventory/inventory.ini +# -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} +# -e mode=${CLUSTER_MODE} +# -e test_id=${TEST_ID} + +# # Check out latest tag if testing upgrade +# # Uncomment when gitlab kargo repo has tags +# #- test "${UPGRADE_TEST}" = "true" && git fetch --all && git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) +# - test "${UPGRADE_TEST}" = "true" && git checkout 031cf565ec3ccd3ebbe80eeef3454c3780e5c598 && pip install ansible==2.2.0 + + +# # Create cluster +# - > +# ansible-playbook -i inventory/inventory.ini -b --become-user=root --private-key=${HOME}/.ssh/id_rsa -u root +# ${SSH_ARGS} +# ${LOG_LEVEL} +# -e state=present +# -e ansible_python_interpreter=${PYPATH} +# -e ansible_ssh_user=root +# -e bootstrap_os=${BOOTSTRAP_OS} +# -e cert_management=${CERT_MGMT:-script} +# -e cloud_provider=gce +# -e deploy_netchecker=true +# -e download_localhost=true +# -e download_run_once=true +# -e etcd_deployment_type=${ETCD_DEPLOYMENT} +# -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} +# -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} +# -e local_release_dir=${PWD}/downloads +# -e resolvconf_mode=${RESOLVCONF_MODE} +# -e vault_deployment_type=${VAULT_DEPLOYMENT} +# cluster.yml + +# # Repeat deployment if testing upgrade +# #FIXME(mattymo): repeat "Create cluster" above without duplicating code +# - > +# if [ "${UPGRADE_TEST}" = "true" ]; then +# pip install ansible==2.2.1.0; +# git checkout "${CI_BUILD_REF}"; +# ansible-playbook -i inventory/inventory.ini -b --become-user=root --private-key=${HOME}/.ssh/id_rsa -u root +# ${SSH_ARGS} +# ${LOG_LEVEL} +# -e ansible_python_interpreter=${PYPATH} +# -e ansible_ssh_user=root +# -e bootstrap_os=${BOOTSTRAP_OS} +# -e cloud_provider=gce +# -e deploy_netchecker=true +# -e download_localhost=true +# -e download_run_once=true +# -e etcd_deployment_type=${ETCD_DEPLOYMENT} +# -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} +# -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} +# -e local_release_dir=${PWD}/downloads +# -e resolvconf_mode=${RESOLVCONF_MODE} +# -e weave_cpu_requests=${WEAVE_CPU_LIMIT} +# -e weave_cpu_limit=${WEAVE_CPU_LIMIT} +# cluster.yml; +# fi + +# # Tests Cases +# ## Test Master API +# - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root tests/testcases/010_check-apiserver.yml $LOG_LEVEL + +# ## Ping the between 2 pod +# - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root tests/testcases/030_check-network.yml $LOG_LEVEL + +# ## Advanced DNS checks +# - ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root tests/testcases/040_check-network-adv.yml $LOG_LEVEL + +# ## Idempotency checks 1/5 (repeat deployment) +# - > +# if [ "${IDEMPOT_CHECK}" = "true" ]; then +# ansible-playbook -i inventory/inventory.ini -u root -e ansible_ssh_user=root $SSH_ARGS +# -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} +# --private-key=${HOME}/.ssh/id_rsa +# -e bootstrap_os=${BOOTSTRAP_OS} +# -e ansible_python_interpreter=${PYPATH} +# -e download_run_once=true +# -e download_localhost=true +# -e deploy_netchecker=true +# -e resolvconf_mode=${RESOLVCONF_MODE} +# -e local_release_dir=${PWD}/downloads +# -e etcd_deployment_type=${ETCD_DEPLOYMENT} +# -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} +# cluster.yml; +# fi + +# ## Idempotency checks 2/5 (Advanced DNS checks) +# - > +# if [ "${IDEMPOT_CHECK}" = "true" ]; then +# ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} +# -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root +# tests/testcases/040_check-network-adv.yml $LOG_LEVEL; +# fi + +# ## Idempotency checks 3/5 (reset deployment) +# - > +# if [ "${IDEMPOT_CHECK}" = "true" ]; then +# ansible-playbook -i inventory/inventory.ini -u root -e ansible_ssh_user=root $SSH_ARGS +# -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} +# --private-key=${HOME}/.ssh/id_rsa +# -e bootstrap_os=${BOOTSTRAP_OS} +# -e ansible_python_interpreter=${PYPATH} +# reset.yml; +# fi + +# ## Idempotency checks 4/5 (redeploy after reset) +# - > +# if [ "${IDEMPOT_CHECK}" = "true" ]; then +# ansible-playbook -i inventory/inventory.ini -u root -e ansible_ssh_user=root $SSH_ARGS +# -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} +# --private-key=${HOME}/.ssh/id_rsa +# -e bootstrap_os=${BOOTSTRAP_OS} +# -e ansible_python_interpreter=${PYPATH} +# -e download_run_once=true +# -e download_localhost=true +# -e deploy_netchecker=true +# -e resolvconf_mode=${RESOLVCONF_MODE} +# -e local_release_dir=${PWD}/downloads +# -e etcd_deployment_type=${ETCD_DEPLOYMENT} +# -e kubelet_deployment_type=${KUBELET_DEPLOYMENT} +# cluster.yml; +# fi + +# ## Idempotency checks 5/5 (Advanced DNS checks) +# - > +# if [ "${IDEMPOT_CHECK}" = "true" ]; then +# ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} +# -u root -e ansible_ssh_user=root $SSH_ARGS -b --become-user=root +# tests/testcases/040_check-network-adv.yml $LOG_LEVEL; +# fi + +# after_script: +# - > +# ansible-playbook -i inventory/inventory.ini tests/cloud_playbooks/create-do.yml -c local $LOG_LEVEL +# -e state=absent +# -e mode=${CLUSTER_MODE} +# -e test_id=${TEST_ID} +# -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} +# -e gce_project_id=${GCE_PROJECT_ID} +# -e gce_service_account_email=${GCE_ACCOUNT} +# -e gce_credentials_file=${HOME}/.ssh/gce.json +# -e cloud_image=${CLOUD_IMAGE} +# -e inventory_path=${PWD}/inventory/inventory.ini +# -e cloud_region=${CLOUD_REGION} # Test matrix. Leave the comments for markup scripts. .coreos_calico_aio_variables: &coreos_calico_aio_variables @@ -459,15 +457,6 @@ before_script: # stage: deploy-gce-special MOVED_TO_GROUP_VARS: "true" -.ubuntu_calico_variables: &ubuntu_calico_variables -# stage: deploy-gce-special - KUBE_NETWORK_PLUGIN: calico - CLOUD_IMAGE: ubuntu-1604-xenial - CLOUD_REGION: us-central1-b - CLUSTER_MODE: separate - IDEMPOT_CHECK: "false" - BOOTSTRAP_OS: ubuntu - .centos7_calico_ha_variables: ¢os7_calico_ha_variables # stage: deploy-gce-special MOVED_TO_GROUP_VARS: "true" @@ -490,7 +479,8 @@ before_script: # Builds for PRs only (premoderated by unit-tests step) and triggers (auto) coreos-calico-aio: - stage: deploy-gce-part1 + stage: deploy-do + # stage: deploy-gce-part1 <<: *job <<: *gce variables: @@ -498,330 +488,327 @@ coreos-calico-aio: <<: *coreos_calico_aio_variables when: on_success except: ['triggers'] - only: [/^pr-.*$/] + # only: [/^pr-.*$/] -ubuntu-calico-sep-do: - stage: deploy-do-part1 +ubuntu-canal-ha-do: + stage: deploy-do <<: *job <<: *do variables: <<: *gce_variables - <<: *ubuntu_calico_variables - CLOUD_IMAGE: ubuntu-16-04-x64 - CLOUD_REGION: NYC3 - when: on_success - except: ['triggers'] - only: [/^pr-.*$/] - -coreos-calico-sep-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *coreos_calico_aio_variables - when: on_success - only: ['triggers'] - -centos7-flannel-addons: - stage: deploy-gce-part2 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *centos7_flannel_addons_variables - when: on_success - except: ['triggers'] - only: [/^pr-.*$/] - -centos7-flannel-addons-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *centos7_flannel_addons_variables - when: on_success - only: ['triggers'] - -ubuntu-weave-sep: - stage: deploy-gce-special - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_weave_sep_variables - when: on_success - except: ['triggers'] - only: [/^pr-.*$/] - -ubuntu-weave-sep-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_weave_sep_variables when: on_success - only: ['triggers'] - -# More builds for PRs/merges (manual) and triggers (auto) -ubuntu-canal-ha: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_canal_ha_variables - when: manual except: ['triggers'] - only: ['master', /^pr-.*$/] - -ubuntu-canal-ha-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_canal_ha_variables - when: on_success - only: ['triggers'] - -ubuntu-canal-kubeadm: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_canal_kubeadm_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -ubuntu-canal-kubeadm-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_canal_kubeadm_variables - when: on_success - only: ['triggers'] - -centos-weave-kubeadm: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *centos_weave_kubeadm_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -centos-weave-kubeadm-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *centos_weave_kubeadm_variables - when: on_success - only: ['triggers'] - -ubuntu-contiv-sep: - stage: deploy-gce-special - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_contiv_sep_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -rhel7-weave: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *rhel7_weave_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -rhel7-weave-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *rhel7_weave_variables - when: on_success - only: ['triggers'] - -debian8-calico-upgrade: - stage: deploy-gce-part2 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *debian8_calico_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -debian8-calico-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *debian8_calico_variables - when: on_success - only: ['triggers'] - -coreos-canal: - stage: deploy-gce-part2 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *coreos_canal_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -coreos-canal-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *coreos_canal_variables - when: on_success - only: ['triggers'] - -rhel7-canal-sep: - stage: deploy-gce-special - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *rhel7_canal_sep_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/,] - -rhel7-canal-sep-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *rhel7_canal_sep_variables - when: on_success - only: ['triggers'] - -centos7-calico-ha: - stage: deploy-gce-special - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *centos7_calico_ha_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -centos7-calico-ha-triggers: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *centos7_calico_ha_variables - when: on_success - only: ['triggers'] - -# no triggers yet https://github.com/kubernetes-incubator/kargo/issues/613 -coreos-alpha-weave-ha: - stage: deploy-gce-special - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *coreos_alpha_weave_ha_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -ubuntu-rkt-sep: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_rkt_sep_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -ubuntu-vault-sep: - stage: deploy-gce-part1 - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_vault_sep_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -ubuntu-flannel-sep: - stage: deploy-gce-special - <<: *job - <<: *gce - variables: - <<: *gce_variables - <<: *ubuntu_flannel_variables - when: manual - except: ['triggers'] - only: ['master', /^pr-.*$/] - -# Premoderated with manual actions -ci-authorized: - <<: *job - stage: moderator - before_script: - - apt-get -y install jq - script: - - /bin/sh scripts/premoderator.sh - except: ['triggers', 'master'] - -syntax-check: - <<: *job - stage: unit-tests - script: - - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root cluster.yml -vvv --syntax-check - - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root upgrade-cluster.yml -vvv --syntax-check - - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root reset.yml -vvv --syntax-check - - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root extra_playbooks/upgrade-only-k8s.yml -vvv --syntax-check - except: ['triggers', 'master'] - -yamllint: - <<: *job - stage: unit-tests - script: - - yamllint roles - except: ['triggers', 'master'] - -tox-inventory-builder: - stage: unit-tests - <<: *job - script: - - pip install tox - - cd contrib/inventory_builder && tox - when: manual - except: ['triggers', 'master'] + # only: [/^pr-.*$/] + +# coreos-calico-sep-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *coreos_calico_aio_variables +# when: on_success +# only: ['triggers'] + +# centos7-flannel-addons: +# stage: deploy-gce-part2 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *centos7_flannel_addons_variables +# when: on_success +# except: ['triggers'] +# only: [/^pr-.*$/] + +# centos7-flannel-addons-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *centos7_flannel_addons_variables +# when: on_success +# only: ['triggers'] + +# ubuntu-weave-sep: +# stage: deploy-gce-special +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_weave_sep_variables +# when: on_success +# except: ['triggers'] +# only: [/^pr-.*$/] + +# ubuntu-weave-sep-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_weave_sep_variables +# when: on_success +# only: ['triggers'] + +# # More builds for PRs/merges (manual) and triggers (auto) +# ubuntu-canal-ha: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_canal_ha_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# ubuntu-canal-ha-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_canal_ha_variables +# when: on_success +# only: ['triggers'] + +# ubuntu-canal-kubeadm: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_canal_kubeadm_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# ubuntu-canal-kubeadm-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_canal_kubeadm_variables +# when: on_success +# only: ['triggers'] + +# centos-weave-kubeadm: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *centos_weave_kubeadm_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# centos-weave-kubeadm-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *centos_weave_kubeadm_variables +# when: on_success +# only: ['triggers'] + +# ubuntu-contiv-sep: +# stage: deploy-gce-special +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_contiv_sep_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# rhel7-weave: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *rhel7_weave_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# rhel7-weave-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *rhel7_weave_variables +# when: on_success +# only: ['triggers'] + +# debian8-calico-upgrade: +# stage: deploy-gce-part2 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *debian8_calico_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# debian8-calico-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *debian8_calico_variables +# when: on_success +# only: ['triggers'] + +# coreos-canal: +# stage: deploy-gce-part2 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *coreos_canal_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# coreos-canal-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *coreos_canal_variables +# when: on_success +# only: ['triggers'] + +# rhel7-canal-sep: +# stage: deploy-gce-special +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *rhel7_canal_sep_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/,] + +# rhel7-canal-sep-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *rhel7_canal_sep_variables +# when: on_success +# only: ['triggers'] + +# centos7-calico-ha: +# stage: deploy-gce-special +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *centos7_calico_ha_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# centos7-calico-ha-triggers: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *centos7_calico_ha_variables +# when: on_success +# only: ['triggers'] + +# # no triggers yet https://github.com/kubernetes-incubator/kargo/issues/613 +# coreos-alpha-weave-ha: +# stage: deploy-gce-special +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *coreos_alpha_weave_ha_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# ubuntu-rkt-sep: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_rkt_sep_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# ubuntu-vault-sep: +# stage: deploy-gce-part1 +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_vault_sep_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# ubuntu-flannel-sep: +# stage: deploy-gce-special +# <<: *job +# <<: *gce +# variables: +# <<: *gce_variables +# <<: *ubuntu_flannel_variables +# when: manual +# except: ['triggers'] +# only: ['master', /^pr-.*$/] + +# # Premoderated with manual actions +# ci-authorized: +# <<: *job +# stage: moderator +# before_script: +# - apt-get -y install jq +# script: +# - /bin/sh scripts/premoderator.sh +# except: ['triggers', 'master'] + +# syntax-check: +# <<: *job +# stage: unit-tests +# script: +# - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root cluster.yml -vvv --syntax-check +# - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root upgrade-cluster.yml -vvv --syntax-check +# - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root reset.yml -vvv --syntax-check +# - ansible-playbook -i inventory/local-tests.cfg -u root -e ansible_ssh_user=root -b --become-user=root extra_playbooks/upgrade-only-k8s.yml -vvv --syntax-check +# except: ['triggers', 'master'] + +# yamllint: +# <<: *job +# stage: unit-tests +# script: +# - yamllint roles +# except: ['triggers', 'master'] + +# tox-inventory-builder: +# stage: unit-tests +# <<: *job +# script: +# - pip install tox +# - cd contrib/inventory_builder && tox +# when: manual +# except: ['triggers', 'master'] diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 000000000..e42aaf9bc --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,50 @@ +$(HOME)/.ssh/id_rsa: + mkdir -p $(HOME)/.ssh + echo $(PRIVATE_KEY) | base64 -d > $(HOME)/.ssh/id_rsa + chmod 400 $(HOME)/.ssh/id_rsa + +init-gce: $(HOME)/.ssh/id_rsa + # echo $(GCE_PEM_FILE) | base64 -d > $(HOME)/.ssh/gce + echo "$(GCE_CREDENTIALS)" > $(HOME)/.ssh/gce.json + + +init-do: $(HOME)/.ssh/id_rsa + pip install dopy + echo $(DO_PRIVATE_KEY) | base64 -d > $(HOME)/.ssh/id_rsa + +create-gce: init-gce + ansible-playbook cloud_playbooks/create-gce.yml -i local_inventory/hosts.cfg -c local \ + $(LOG_LEVEL) \ + -e @$(CI_TEST_VARS) \ + -e gce_credentials_file=$(HOME)/.ssh/gce.json \ + -e gce_project_id=$(GCE_PROJECT_ID) \ + -e gce_service_account_email=$(GCE_ACCOUNT) \ + -e inventory_path=$(PWD)/../inventory/sample/hosts.ini \ + -e test_id=$(TEST_ID) \ + -e preemptible=$(GCE_PREEMPTIBLE) + + +delete-gce: + ansible-playbook -i ../inventory/sample/hosts.ini cloud_playbooks/delete-gce.yml -c local \ + $(LOG_LEVEL) \ + -e @$(CI_TEST_VARS) \ + -e test_id=$(TEST_ID) \ + -e gce_project_id=$(GCE_PROJECT_ID) \ + -e gce_service_account_email=$(GCE_ACCOUNT) \ + -e gce_credentials_file=$(HOME)/.ssh/gce.json \ + -e inventory_path=$(PWD)/inventory/sample/hosts.ini + +create-do: init-do + ansible-playbook cloud_playbooks/create-do.yml -i tests/local_inventory/hosts.cfg -c local \ + ${LOG_LEVEL} \ + -e @$(CI_TEST_VARS) \ + -e inventory_path=${PWD}/../inventory/hosts.ini \ + -e test_id=${TEST_ID} + + +delete-do: + ansible-playbook -i ../inventory/sample/hosts.ini tests/cloud_playbooks/create-do.yml -c local \ + $LOG_LEVEL \ + -e state=absent \ + -e test_id=${TEST_ID} \ + -e inventory_path=${PWD}/../inventory/inventory.ini \ diff --git a/tests/files/ubuntu-canal-ha-do.yml b/tests/files/ubuntu-canal-ha-do.yml new file mode 100644 index 000000000..6fec2bc28 --- /dev/null +++ b/tests/files/ubuntu-canal-ha-do.yml @@ -0,0 +1,10 @@ +cloud_image: ubuntu-16-04-x64 +cloud_region: NYC3 +mode: ha + +# Deployment settings +bootstrap_os: ubuntu +kube_network_plugin: canal +deploy_netchecker: true +kubedns_min_replicas: 1 +cloud_provider: 'do'