diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 00000000..3a545311 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,19 @@ +- job: + name: heat-templates-check + parent: legacy-dsvm-base + run: playbooks/devstack/run.yaml + post-run: playbooks/devstack/post.yaml + timeout: 7500 + required-projects: + - openstack-infra/devstack-gate + - openstack/heat + - openstack/heat-templates + +- project: + name: openstack/heat-templates + check: + jobs: + - heat-templates-check + gate: + jobs: + - heat-templates-check diff --git a/playbooks/devstack/post.yaml b/playbooks/devstack/post.yaml new file mode 100644 index 00000000..e07f5510 --- /dev/null +++ b/playbooks/devstack/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/run.yaml b/playbooks/devstack/run.yaml new file mode 100644 index 00000000..0e9bd339 --- /dev/null +++ b/playbooks/devstack/run.yaml @@ -0,0 +1,54 @@ +- hosts: all + name: job for templates-devstack + 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 heat git://git.openstack.org/openstack/heat + EOF + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + environment: '{{ zuul | zuul_legacy_vars }}' + + - shell: + cmd: | + set -e + set -x + export PYTHONUNBUFFERED=true + export DEVSTACK_GATE_TEMPEST=0 + export DEVSTACK_GATE_EXERCISES=0 + function post_test_hook { + cd $BASE/new/heat-templates/tools + ./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 }}' diff --git a/tools/validate-templates b/tools/validate-templates index 2ebb12ac..59f9f1d2 100755 --- a/tools/validate-templates +++ b/tools/validate-templates @@ -1,12 +1,11 @@ #!/usr/bin/env python import os -import re import subprocess import sys -EXCLUDED_DIRS = ('contrib', 'elements', 'invalid') +EXCLUDED_DIRS = ('contrib', 'elements', 'invalid', 'playbooks') def main(args): @@ -20,7 +19,8 @@ def main(args): if excluded in dirs: dirs.remove(excluded) for name in files: - if name.endswith((".yaml", ".template")): + if name.endswith((".yaml", ".template") + ) and not name == ".zuul.yaml": got_error = validate(root, name) or got_error sys.exit(int(got_error))