From 82665998d31567409d48536dcc15fd0f1bae0aee Mon Sep 17 00:00:00 2001 From: ricolin Date: Tue, 3 Oct 2017 15:06:33 +0800 Subject: [PATCH] Migrate functional jobs to Zuul v3 Migrate all functional jobs and gate to zuul v3. We will have to migrate all other legacy jobs too later. Migrating guideline: https://docs.openstack.org/infra/manual/zuulv3.html Change-Id: I6757ba558d2a89a6b1d1ab4694106f0b84b26d4f --- .zuul.yaml | 93 ++++++++++++++++++ playbooks/devstack/functional/post.yaml | 15 +++ playbooks/devstack/functional/run.yaml | 120 ++++++++++++++++++++++++ 3 files changed, 228 insertions(+) create mode 100644 .zuul.yaml create mode 100644 playbooks/devstack/functional/post.yaml create mode 100644 playbooks/devstack/functional/run.yaml diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 0000000000..bbc7a8b564 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,93 @@ +- job: + name: heat-functional-devstack-base + parent: legacy-dsvm-base + run: playbooks/devstack/functional/run + post-run: playbooks/devstack/functional/post + timeout: 7800 + required-projects: + - openstack-infra/devstack-gate + - openstack/aodh + - openstack/barbican + - openstack/barbican-tempest-plugin + - openstack/ceilometer + - openstack/devstack-plugin-amqp1 + - openstack/heat + - openstack/neutron + - openstack/neutron-lbaas + - openstack/oslo.messaging + - openstack/python-barbicanclient + - openstack/python-heatclient + - openstack/python-zaqarclient + - openstack/zaqar + irrelevant-files: + - ^.*\.rst$ + - ^api-ref/.*$ + - ^doc/.*$ + - ^heat/locale/.*$ + - ^heat/tests/.*$ + - ^releasenotes/.*$ + vars: + disable_convergence: 'false' + sql: mysql + use_amqp1: 0 + use_apache: 1 + use_python3: 0 + use_identity_v3_only: 0 + branch_override: default + +- job: + name: heat-functional-orig-mysql-lbaasv2 + parent: heat-functional-devstack-base + vars: + disable_convergence: 'true' + +- job: + name: heat-functional-convg-mysql-lbaasv2 + parent: heat-functional-devstack-base + +- job: + name: heat-functional-convg-mysql-lbaasv2-amqp1 + parent: heat-functional-devstack-base + voting: false + branches: master + vars: + use_amqp1: 1 + +- job: + name: heat-functional-convg-mysql-lbaasv2-non-apache + parent: heat-functional-devstack-base + branches: ^(?!stable/newton).*$ + vars: + use_apache: 0 + +- job: + name: heat-functional-convg-mysql-lbaasv2-py35 + parent: heat-functional-devstack-base + branches: ^(?!stable/(newton|ocata)).*$ + vars: + use_python3: 1 + +- job: + name: heat-functional-convg-mysql-lbaasv2-identity-v3-only + parent: heat-functional-devstack-base + voting: false + branches: master + vars: + use_identity_v3_only: 1 + +- project: + name: openstack/heat + check: + jobs: + - heat-functional-orig-mysql-lbaasv2 + - heat-functional-convg-mysql-lbaasv2 + - heat-functional-convg-mysql-lbaasv2-amqp1 + - heat-functional-convg-mysql-lbaasv2-non-apache + - heat-functional-convg-mysql-lbaasv2-py35 + - heat-functional-convg-mysql-lbaasv2-identity-v3-only + gate: + jobs: + - heat-functional-orig-mysql-lbaasv2 + - heat-functional-convg-mysql-lbaasv2 + - heat-functional-convg-mysql-lbaasv2-non-apache + - heat-functional-convg-mysql-lbaasv2-py35 diff --git a/playbooks/devstack/functional/post.yaml b/playbooks/devstack/functional/post.yaml new file mode 100644 index 0000000000..e07f5510ae --- /dev/null +++ b/playbooks/devstack/functional/post.yaml @@ -0,0 +1,15 @@ +- hosts: primary + tasks: + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/logs/** + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff --git a/playbooks/devstack/functional/run.yaml b/playbooks/devstack/functional/run.yaml new file mode 100644 index 0000000000..8263f90d0c --- /dev/null +++ b/playbooks/devstack/functional/run.yaml @@ -0,0 +1,120 @@ +- hosts: all + name: Job for functional tests + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + cat > clonemap.yaml << EOF + clonemap: + - name: openstack-infra/devstack-gate + dest: devstack-gate + EOF + /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \ + git://git.openstack.org \ + openstack-infra/devstack-gate + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + + - shell: + cmd: | + set -e + set -x + export PYTHONUNBUFFERED=true + services=rabbit,tempest,mysql,dstat,key + services+=,n-api,n-api-meta,n-cpu,n-cond,n-sch,n-crt + + # TODO(ricolin) replace the usage of ZUUL_BRANCH + # placement services mandatory for nova from ocata + if [[ "stable/newton" != $ZUUL_BRANCH ]]; then + services+=,placement-api,placement-client + fi + + services+=,g-api,g-reg + services+=,c-sch,c-api,c-vol,c-bak + services+=,q-svc,q-dhcp,q-meta,q-agt,q-l3 + + if [ "{{ use_python3 }}" -eq 1 ] ; then + export DEVSTACK_GATE_USE_PYTHON3=True + # Swift does not work so skip s-* for python3x for now + else + export DEVSTACK_GATE_USE_PYTHON3=False + services+=,s-proxy,s-object,s-container,s-account + fi + # TODO(ricolin) replace the usage of ZUUL_BRANCH + if [[ ! "stable/newton stable/ocata" =~ $ZUUL_BRANCH ]]; then + services+=,q-trunk + fi + + export DEVSTACK_GATE_NEUTRON=1 + export DEVSTACK_GATE_TEMPEST=1 + export DEVSTACK_GATE_TEMPEST_NOTESTS=1 + export DEVSTACK_GATE_EXERCISES=0 + export DEVSTACK_GATE_INSTALL_TESTONLY=1 + export DEVSTACK_PROJECT_FROM_GIT=python-heatclient + export KEEP_LOCALRC=1 + export PROJECTS="openstack/ceilometer $PROJECTS" + export PROJECTS="openstack/aodh $PROJECTS" + export PROJECTS="openstack/zaqar $PROJECTS" + export PROJECTS="openstack/python-zaqarclient $PROJECTS" + export PROJECTS="openstack/neutron $PROJECTS" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ceilometer git://git.openstack.org/openstack/ceilometer" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin aodh git://git.openstack.org/openstack/aodh" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin zaqar git://git.openstack.org/openstack/zaqar" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin neutron git://git.openstack.org/openstack/neutron" + + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin heat git://git.openstack.org/openstack/heat" + + # Enable LBaaS V2 plugin + export PROJECTS="openstack/neutron-lbaas $PROJECTS" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas" + # enabling lbaas plugin does not enable the lbaasv2 service, explicitly enable it + services+=,q-lbaasv2 + export PROJECTS="openstack/barbican $PROJECTS" + export PROJECTS="openstack/python-barbicanclient $PROJECTS" + export PROJECTS="openstack/barbican-tempest-plugin $PROJECTS" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin barbican https://git.openstack.org/openstack/barbican" + # the lbaas v2 driver choice is in the gate pre test hook + + export OVERRIDE_ENABLED_SERVICES=$services + + if [ "{{ branch_override }}" != "default" ] ; then + export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE + fi + if [ "{{ use_identity_v3_only }}" -eq 1 ] ; then + export DEVSTACK_LOCAL_CONFIG+=$'\n'"ENABLE_IDENTITY_V2=False" + fi + if [ "{{ use_apache }}" -eq 0 ] ; then + export DEVSTACK_LOCAL_CONFIG+=$'\n'"HEAT_USE_MOD_WSGI=False" + fi + if [ "{{ use_amqp1 }}" -eq 1 ] ; then + export PROJECTS="openstack/devstack-plugin-amqp1 $PROJECTS" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"export AMQP1_SERVICE=qpid-hybrid" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin devstack-plugin-amqp1 git://git.openstack.org/openstack/devstack-plugin-amqp1" + export DEVSTACK_LOCAL_CONFIG+=$'\n'"export CELLSV2_SETUP=singleconductor" + export DEVSTACK_PROJECT_FROM_GIT="oslo.messaging,$DEVSTACK_PROJECT_FROM_GIT" + fi + export DISABLE_CONVERGENCE="{{ disable_convergence }}" + function pre_test_hook { + cd /opt/stack/new/heat/heat_integrationtests + source ./pre_test_hook.sh + } + export -f pre_test_hook + + function post_test_hook { + cd /opt/stack/new/heat/heat_integrationtests + source ./post_test_hook.sh + } + export -f post_test_hook + + cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh + ./safe-devstack-vm-gate-wrap.sh + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}'