You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
5.9 KiB

8 years ago
8 years ago
  1. sudo: required
  2. services:
  3. - docker
  4. git:
  5. depth: 5
  6. env:
  7. global:
  8. GCE_USER=travis
  9. LOG_LEVEL=-v
  10. SSH_USER=$GCE_USER
  11. TEST_ID=$TRAVIS_JOB_NUMBER
  12. CONTAINER_ENGINE=docker
  13. PRIVATE_KEY=$GCE_PRIVATE_KEY
  14. GS_ACCESS_KEY_ID=$GS_KEY
  15. GS_SECRET_ACCESS_KEY=$GS_SECRET
  16. ANSIBLE_KEEP_REMOTE_FILES=1
  17. CLUSTER_MODE=default
  18. BOOTSTRAP_OS=none
  19. matrix:
  20. # Debian Jessie
  21. - >-
  22. KUBE_NETWORK_PLUGIN=canal
  23. CLOUD_IMAGE=debian-8
  24. CLOUD_REGION=europe-west1-d
  25. CLUSTER_MODE=default
  26. - >-
  27. KUBE_NETWORK_PLUGIN=calico
  28. CLOUD_IMAGE=debian-8
  29. CLOUD_REGION=us-central1-b
  30. CLUSTER_MODE=default
  31. # Centos 7
  32. - >-
  33. KUBE_NETWORK_PLUGIN=flannel
  34. CLOUD_IMAGE=centos-7
  35. CLOUD_REGION=europe-west1-d
  36. CLUSTER_MODE=default
  37. - >-
  38. KUBE_NETWORK_PLUGIN=calico
  39. CLOUD_IMAGE=centos-7
  40. CLOUD_REGION=europe-west1-b
  41. CLUSTER_MODE=default
  42. # Redhat 7
  43. - >-
  44. KUBE_NETWORK_PLUGIN=weave
  45. CLOUD_IMAGE=rhel-7
  46. CLOUD_REGION=europe-west1-b
  47. CLUSTER_MODE=default
  48. # CoreOS stable
  49. #- >-
  50. # KUBE_NETWORK_PLUGIN=weave
  51. # CLOUD_IMAGE=coreos-stable
  52. # CLOUD_REGION=europe-west1-a
  53. # CLUSTER_MODE=default
  54. # BOOTSTRAP_OS=coreos
  55. - >-
  56. KUBE_NETWORK_PLUGIN=canal
  57. CLOUD_IMAGE=coreos-stable
  58. CLOUD_REGION=us-east1-d
  59. CLUSTER_MODE=default
  60. BOOTSTRAP_OS=coreos
  61. # Extra cases for separated roles
  62. - >-
  63. KUBE_NETWORK_PLUGIN=canal
  64. CLOUD_IMAGE=rhel-7
  65. CLOUD_REGION=europe-west1-c
  66. CLUSTER_MODE=separate
  67. - >-
  68. KUBE_NETWORK_PLUGIN=weave
  69. CLOUD_IMAGE=ubuntu-1604-xenial
  70. CLOUD_REGION=us-west1-b
  71. CLUSTER_MODE=separate
  72. - >-
  73. KUBE_NETWORK_PLUGIN=calico
  74. CLOUD_IMAGE=coreos-stable
  75. CLOUD_REGION=us-central1-f
  76. CLUSTER_MODE=separate
  77. BOOTSTRAP_OS=coreos
  78. matrix:
  79. allow_failures:
  80. - env: KUBE_NETWORK_PLUGIN=weave CLOUD_IMAGE=coreos-stable CLOUD_REGION=europe-west1-a CLUSTER_MODE=default BOOTSTRAP_OS=coreos
  81. before_install:
  82. # Install Ansible.
  83. - pip install --user ansible
  84. - pip install --user netaddr
  85. # W/A https://github.com/ansible/ansible-modules-core/issues/5196#issuecomment-253766186
  86. - pip install --user apache-libcloud==0.20.1
  87. - pip install --user boto==2.9.0 -U
  88. # Load cached docker images
  89. - if [ -d /var/tmp/releases ]; then find /var/tmp/releases -type f -name "*.tar" | xargs -I {} sh -c "zcat {} | docker load"; fi
  90. cache:
  91. - directories:
  92. - $HOME/.cache/pip
  93. - $HOME/.local
  94. - /var/tmp/releases
  95. before_script:
  96. - echo "RUN $TRAVIS_JOB_NUMBER $KUBE_NETWORK_PLUGIN $CONTAINER_ENGINE "
  97. - mkdir -p $HOME/.ssh
  98. - echo $PRIVATE_KEY | base64 -d > $HOME/.ssh/id_rsa
  99. - echo $GCE_PEM_FILE | base64 -d > $HOME/.ssh/gce
  100. - chmod 400 $HOME/.ssh/id_rsa
  101. - chmod 755 $HOME/.local/bin/ansible-playbook
  102. - $HOME/.local/bin/ansible-playbook --version
  103. - cp tests/ansible.cfg .
  104. - export PYPATH=$([ $BOOTSTRAP_OS = none ] && echo /usr/bin/python || echo /opt/bin/python)
  105. # - "echo $HOME/.local/bin/ansible-playbook -i inventory.ini -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root -e '{\"cloud_provider\": true}' $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} setup-kubernetes/cluster.yml"
  106. script:
  107. - >
  108. $HOME/.local/bin/ansible-playbook tests/cloud_playbooks/create-gce.yml -i tests/local_inventory/hosts.cfg -c local $LOG_LEVEL
  109. -e mode=${CLUSTER_MODE}
  110. -e test_id=${TEST_ID}
  111. -e kube_network_plugin=${KUBE_NETWORK_PLUGIN}
  112. -e gce_project_id=${GCE_PROJECT_ID}
  113. -e gce_service_account_email=${GCE_ACCOUNT}
  114. -e gce_pem_file=${HOME}/.ssh/gce
  115. -e cloud_image=${CLOUD_IMAGE}
  116. -e inventory_path=${PWD}/inventory/inventory.ini
  117. -e cloud_region=${CLOUD_REGION}
  118. # Create cluster
  119. - >
  120. $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS
  121. -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN}
  122. -e bootstrap_os=${BOOTSTRAP_OS}
  123. -e ansible_python_interpreter=${PYPATH}
  124. -e download_run_once=true
  125. -e download_localhost=true
  126. -e local_release_dir=/var/tmp/releases
  127. cluster.yml
  128. # Tests Cases
  129. ## Test Master API
  130. - $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} tests/testcases/010_check-apiserver.yml $LOG_LEVEL
  131. ## Create a POD
  132. - $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root tests/testcases/020_check-create-pod.yml $LOG_LEVEL
  133. ## Ping the between 2 pod
  134. - $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -e ansible_python_interpreter=${PYPATH} -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root tests/testcases/030_check-network.yml $LOG_LEVEL
  135. after_failure:
  136. - >
  137. $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -u $SSH_USER
  138. -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root -e dir=$HOME
  139. -e ansible_python_interpreter=${PYPATH}
  140. scripts/collect-info.yaml
  141. - >
  142. $HOME/.local/bin/ansible-playbook tests/cloud_playbooks/upload-logs-gcs.yml -i "localhost," -c local
  143. -e kube_network_plugin=${KUBE_NETWORK_PLUGIN}
  144. -e gce_project_id=${GCE_PROJECT_ID}
  145. -e gs_key=${GS_ACCESS_KEY_ID}
  146. -e gs_skey=${GS_SECRET_ACCESS_KEY}
  147. -e ostype=${CLOUD_IMAGE}
  148. -e commit=${TRAVIS_COMMIT}
  149. -e dir=${HOME}
  150. after_script:
  151. - >
  152. $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini tests/cloud_playbooks/delete-gce.yml -c local $LOG_LEVEL
  153. -e test_id=${TEST_ID}
  154. -e kube_network_plugin=${KUBE_NETWORK_PLUGIN}
  155. -e gce_project_id=${GCE_PROJECT_ID}
  156. -e gce_service_account_email=${GCE_ACCOUNT}
  157. -e gce_pem_file=${HOME}/.ssh/gce
  158. -e cloud_image=${CLOUD_IMAGE}
  159. -e inventory_path=${PWD}/inventory/inventory.ini
  160. -e cloud_region=${CLOUD_REGION}