diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 000000000..375cd4cd5 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,98 @@ +- job: + name: grenade-devstack-zaqar-base + parent: legacy-dsvm-base + branches: ^(?!(driverfixes|stable/(mitaka|newton))).*$ + irrelevant-files: + - ^(test-|)requirements.txt$ + - ^setup.cfg$ + required-projects: + - openstack-dev/grenade + - openstack-infra/devstack-gate + - openstack/python-zaqarclient + - openstack/zaqar + - openstack/zaqar-tempest-plugin + run: playbooks/legacy/grenade-devstack-zaqar-base/run + post-run: playbooks/legacy/grenade-devstack-zaqar-base/post + timeout: 7800 + +- job: + name: tempest-devstack-zaqar-base + parent: legacy-dsvm-base + irrelevant-files: + - ^(test-|)requirements.txt$ + - ^setup.cfg$ + required-projects: + - openstack-infra/devstack-gate + - openstack/python-zaqarclient + - openstack/tempest + - openstack/zaqar + - openstack/zaqar-tempest-plugin + run: playbooks/legacy/tempest-devstack-zaqar-base/run + post-run: playbooks/legacy/tempest-devstack-zaqar-base/post + timeout: 7800 + +- job: + name: grenade-devstack-mongodb-zaqar + parent: grenade-devstack-zaqar-base + voting: false + vars: + database_backend: mongodb + +- job: + name: grenade-devstack-redis-zaqar + parent: grenade-devstack-zaqar-base + voting: false + vars: + database_backend: redis + +- job: + name: grenade-devstack-swift-zaqar + parent: grenade-devstack-zaqar-base + voting: false + vars: + database_backend: swift + +- job: + name: tempest-devstack-mongodb-zaqar + parent: tempest-devstack-zaqar-base + vars: + database_backend: mongodb + +- job: + name: tempest-devstack-redis-zaqar + parent: tempest-devstack-zaqar-base + vars: + database_backend: redis + +- job: + name: tempest-devstack-swift-zaqar + parent: tempest-devstack-zaqar-base + vars: + database_backend: swift + +- job: + name: zaqar-tox-integration + parent: legacy-base + post-run: playbooks/legacy/zaqar-tox-integration/post + required-projects: + - openstack/requirements + run: playbooks/legacy/zaqar-tox-integration/run + timeout: 2400 + +- project: + name: openstack/zaqar + check: + jobs: + - zaqar-tox-integration + - tempest-devstack-redis-zaqar + - tempest-devstack-swift-zaqar + - tempest-devstack-mongodb-zaqar + - grenade-devstack-mongodb-zaqar + - grenade-devstack-redis-zaqar + - grenade-devstack-swift-zaqar + gate: + jobs: + - zaqar-tox-integration + - tempest-devstack-mongodb-zaqar + - tempest-devstack-redis-zaqar + - tempest-devstack-swift-zaqar diff --git a/playbooks/legacy/grenade-devstack-zaqar-base/post.yaml b/playbooks/legacy/grenade-devstack-zaqar-base/post.yaml new file mode 100644 index 000000000..e07f5510a --- /dev/null +++ b/playbooks/legacy/grenade-devstack-zaqar-base/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/legacy/grenade-devstack-zaqar-base/run.yaml b/playbooks/legacy/grenade-devstack-zaqar-base/run.yaml new file mode 100644 index 000000000..63fa2db50 --- /dev/null +++ b/playbooks/legacy/grenade-devstack-zaqar-base/run.yaml @@ -0,0 +1,83 @@ +- hosts: all + name: Grenade Devstack Zaqar Base + 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' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + cat << 'EOF' >>"/tmp/dg-local.conf" + [[local|localrc]] + enable_plugin zaqar git://git.openstack.org/openstack/zaqar + # Enable Zaqar Tempest plugin + TEMPEST_PLUGINS='/opt/stack/new/zaqar-tempest-plugin' + + EOF + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + export PROJECTS="openstack-dev/grenade $PROJECTS" + export PROJECTS="openstack/python-zaqarclient $PROJECTS" + export PYTHONUNBUFFERED=true + export ENABLED_SERVICES=tempest + export DEVSTACK_GATE_TEMPEST=0 + export DEVSTACK_GATE_TEMPEST_REGEX="zaqar_tempest_plugin.tests" + + export DEVSTACK_GATE_GRENADE=pullup + export GRENADE_PLUGINRC="enable_grenade_plugin zaqar https://git.openstack.org/openstack/zaqar" + export BRANCH_OVERRIDE=default + if [ "$BRANCH_OVERRIDE" != "default" ] ; then + export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE + fi + + export PROJECTS="openstack/zaqar-tempest-plugin $PROJECTS" + + function pre_test_hook { + cd /opt/stack/new/zaqar/zaqar_upgradetests + ./pre_test_hook.sh + } + export -f pre_test_hook + + function post_test_hook { + cd /opt/stack/new/zaqar/zaqar_upgradetests + ./post_test_hook.sh + } + export -f post_test_hook + + function gate_hook { + cd /opt/stack/new/zaqar/devstack/gate + ./gate_hook.sh tempest "{{ database_backend }}" + } + export -f gate_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 }}' diff --git a/playbooks/legacy/tempest-devstack-zaqar-base/post.yaml b/playbooks/legacy/tempest-devstack-zaqar-base/post.yaml new file mode 100644 index 000000000..dac875340 --- /dev/null +++ b/playbooks/legacy/tempest-devstack-zaqar-base/post.yaml @@ -0,0 +1,80 @@ +- 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=**/*nose_results.html + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - 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=**/*testr_results.html.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - 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=/.testrepository/tmp* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - 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=**/*testrepository.subunit.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}/tox' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.tox/*/log/* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - 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/legacy/tempest-devstack-zaqar-base/run.yaml b/playbooks/legacy/tempest-devstack-zaqar-base/run.yaml new file mode 100644 index 000000000..506a2d9bf --- /dev/null +++ b/playbooks/legacy/tempest-devstack-zaqar-base/run.yaml @@ -0,0 +1,63 @@ +- hosts: all + name: Tempest Devstack Zaqar Base + 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' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + cat << 'EOF' >>"/tmp/dg-local.conf" + [[local|localrc]] + enable_plugin zaqar git://git.openstack.org/openstack/zaqar + # Enable Zaqar Tempest plugin + TEMPEST_PLUGINS='/opt/stack/new/zaqar-tempest-plugin' + + EOF + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + export PROJECTS="openstack/python-zaqarclient $PROJECTS" + export PYTHONUNBUFFERED=true + export ENABLED_SERVICES=tempest + export DEVSTACK_GATE_TEMPEST_REGEX="zaqar_tempest_plugin.tests" + export DEVSTACK_GATE_TEMPEST=0 + + function gate_hook { + cd /opt/stack/new/zaqar/devstack/gate + ./gate_hook.sh tempest "{{ database_backend }}" + } + + export PROJECTS="openstack/zaqar-tempest-plugin $PROJECTS" + export -f gate_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 }}' diff --git a/playbooks/legacy/zaqar-tox-integration/post.yaml b/playbooks/legacy/zaqar-tox-integration/post.yaml new file mode 100644 index 000000000..68fbdf81b --- /dev/null +++ b/playbooks/legacy/zaqar-tox-integration/post.yaml @@ -0,0 +1,67 @@ +- 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=**/*nose_results.html + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - 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=**/*testr_results.html.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - 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=/.testrepository/tmp* + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - 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=**/*testrepository.subunit.gz + - --include=*/ + - --exclude=* + - --prune-empty-dirs + + - name: Copy files from {{ ansible_user_dir }}/workspace/ on node + synchronize: + src: '{{ ansible_user_dir }}/workspace/' + dest: '{{ zuul.executor.log_root }}/tox' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=/.tox/*/log/* + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff --git a/playbooks/legacy/zaqar-tox-integration/run.yaml b/playbooks/legacy/zaqar-tox-integration/run.yaml new file mode 100644 index 000000000..f20232df4 --- /dev/null +++ b/playbooks/legacy/zaqar-tox-integration/run.yaml @@ -0,0 +1,86 @@ +- hosts: all + name: Autoconverted job legacy-zaqar-tox-integration from old job gate-zaqar-tox-integration-ubuntu-xenial + tasks: + + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + set -e + set -x + CLONEMAP=`mktemp` + REQS_DIR=`mktemp -d` + function cleanup { + mkdir -p $WORKSPACE + rm -rf $CLONEMAP $REQS_DIR + } + trap cleanup EXIT + cat > $CLONEMAP << EOF + clonemap: + - name: $ZUUL_PROJECT + dest: . + EOF + # zuul cloner works poorly if there are 2 names that are the + # same in here. + if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then + cat >> $CLONEMAP << EOF + - name: openstack/requirements + dest: $REQS_DIR + EOF + fi + /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \ + git://git.openstack.org $ZUUL_PROJECT openstack/requirements + # REQS_DIR is not set for openstack/requirements and there is also + # no need to copy in this case. + if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then + cp $REQS_DIR/upper-constraints.txt ./ + fi + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + if [ -x tools/test-setup.sh ] ; then + tools/test-setup.sh + fi + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -x + sudo rm -f /etc/sudoers.d/zuul + # Prove that general sudo access is actually revoked + ! sudo -n true + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: /usr/local/jenkins/slave_scripts/run-tox.sh integration + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + OUT=`git ls-files --other --exclude-standard --directory` + if [ -z "$OUT" ]; then + echo "No extra files created during test." + exit 0 + else + echo "The following un-ignored files were created during the test:" + echo "$OUT" + exit 0 # TODO: change to 1 to fail tests. + fi + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}'