From c317b78514522ae6e4371e75966ef18159decf30 Mon Sep 17 00:00:00 2001 From: Mathieu Bultel Date: Thu, 7 May 2020 14:36:02 +0200 Subject: [PATCH] Change zuul config for functional CI execution Depends-On: https://review.opendev.org/#/c/737997/ Change-Id: If5e678a7fbaba2790d31887c411fea0ed6d2b622 --- .zuul.yaml | 27 ++++++ .../validations-dsvm-functional/post.yaml | 96 +++++++++++++++++++ .../validations-dsvm-functional/run.yaml | 37 +++++++ .../validations-dsvm-functional/setup.yaml | 60 ++++++++++++ .../validations.yaml | 23 +++++ zuul.d/layout.yaml | 37 ------- 6 files changed, 243 insertions(+), 37 deletions(-) create mode 100644 .zuul.yaml create mode 100644 playbooks/legacy/validations-dsvm-functional/post.yaml create mode 100644 playbooks/legacy/validations-dsvm-functional/run.yaml create mode 100644 playbooks/legacy/validations-dsvm-functional/setup.yaml create mode 100644 playbooks/legacy/validations-dsvm-functional/validations.yaml delete mode 100644 zuul.d/layout.yaml diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 00000000..08b0bf3d --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,27 @@ +- job: + name: validations-dsvm-functional + parent: legacy-dsvm-base + run: playbooks/legacy/validations-dsvm-functional/run.yaml + post-run: playbooks/legacy/validations-dsvm-functional/post.yaml + timeout: 7200 + required-projects: + - openstack/devstack-gate + - openstack/validations-libs + - openstack/validations-common + irrelevant-files: + - ^.*\.rst$ + - ^doc/.*$ + - ^releasenotes/.*$ + +- project: + templates: + - check-requirements + - openstack-lower-constraints-jobs + - openstack-python3-victoria-jobs + check: + jobs: + - validations-dsvm-functional + gate: + jobs: + - openstack-tox-linters + - validations-dsvm-functional diff --git a/playbooks/legacy/validations-dsvm-functional/post.yaml b/playbooks/legacy/validations-dsvm-functional/post.yaml new file mode 100644 index 00000000..26093f55 --- /dev/null +++ b/playbooks/legacy/validations-dsvm-functional/post.yaml @@ -0,0 +1,96 @@ +- hosts: primary + tasks: + - name: Set fact for validation src directory + set_fact: + src_dir: '/home/zuul/src/opendev.org/openstack' + + - 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 + + - name: Copy files from {{ src_dir }} on node + synchronize: + src: '{{ src_dir }}' + dest: '{{ zuul.executor.log_root }}' + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - --include=**/*.log + - --include=*/ + - --exclude=* + - --prune-empty-dirs diff --git a/playbooks/legacy/validations-dsvm-functional/run.yaml b/playbooks/legacy/validations-dsvm-functional/run.yaml new file mode 100644 index 00000000..97e0c71b --- /dev/null +++ b/playbooks/legacy/validations-dsvm-functional/run.yaml @@ -0,0 +1,37 @@ +--- +- hosts: primary + name: validations-dsvm-functional + tasks: + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - name: Set fact for validation src directory + set_fact: + src_dir: '/home/zuul/src/opendev.org/openstack' + + - name: Set fact for validation executable + set_fact: + val_exec: "python {{ src_dir }}/validations-common/validations_common/validation.py" + + - include: setup.yaml src_dir="{{ src_dir }}" log_dir="/var/log/validations" + + - include: validations.yaml validation_command="{{ item.command }}" val_output="{{ item.output }}" src_dir="{{ src_dir }}" + with_items: + - { output: "{{ src_dir }}/run.log", command: "{{ val_exec }} run --validation check-ftype,512e \ + --validation-dir {{ src_dir }}/validations-common/validations_common/playbooks \ + --ansible-base-dir {{ src_dir }}/validations-common/validations_common \ + --output-log {{ src_dir }}/run.log" } + - { output: "{{ src_dir }}/run-group.log", command: "{{ val_exec }} run --group prep \ + --validation-dir {{ src_dir }}/validations-common/validations_common/playbooks \ + --ansible-base-dir {{ src_dir }}/validations-common/validations_common \ + --output-log {{ src_dir }}/run-group.log" } + - { output: "{{ src_dir }}/list.log", command: "{{ val_exec }} list \ + --validation-dir {{ src_dir }}/validations-common/validations_common/playbooks \ + --ansible-base-dir {{ src_dir }}/validations-common/validations_common \ + --output-log {{ src_dir }}/list.log" } + - { output: "{{ src_dir }}/show.log", command: "{{ val_exec }} show \ + --validation-dir {{ src_dir }}/validations-common/validations_common/playbooks \ + --ansible-base-dir {{ src_dir }}/validations-common/validations_common \ + --output-log {{ src_dir }}/show.log" } diff --git a/playbooks/legacy/validations-dsvm-functional/setup.yaml b/playbooks/legacy/validations-dsvm-functional/setup.yaml new file mode 100644 index 00000000..5c2533ba --- /dev/null +++ b/playbooks/legacy/validations-dsvm-functional/setup.yaml @@ -0,0 +1,60 @@ +- name: Instal python pip + ignore_errors: yes + become: yes + package: + name: + - python3-pip + - python-pip + state: present + +- name: Install validations deps + ignore_errors: yes + shell: + cmd: | + sudo pip3 install prettytable + sudo pip3 install setuptools + sudo pip3 install ansible + +- name: Install validations deps + shell: + cmd: | + sudo pip install prettytable + sudo pip install setuptools + sudo pip3 install ansible + +- name: Install validations-libs + ignore_errors: yes + shell: + cmd: | + sudo pip install -r requirements.txt + sudo python setup.py install + executable: /bin/bash + chdir: '{{ src_dir }}/validations-libs' + +- name: Install validations-common + ignore_errors: yes + shell: + cmd: | + sudo pip install -r requirements.txt + sudo python setup.py install + executable: /bin/bash + chdir: '{{ src_dir }}/validations-common' + +- name: Make sure Validations Log dir exists + become: yes + file: + path: '{{ log_dir }}' + state: directory + mode: '0755' + owner: '{{ ansible_user }}' + group: '{{ ansible_user }}' + recurse: yes + +- name: Make validation script executable + register: output + shell: + cmd: | + chmod +x validations_common/validation.py + executable: /bin/bash + chdir: '{{ src_dir }}/validations-common' + environment: '{{ zuul | zuul_legacy_vars }}' diff --git a/playbooks/legacy/validations-dsvm-functional/validations.yaml b/playbooks/legacy/validations-dsvm-functional/validations.yaml new file mode 100644 index 00000000..21760078 --- /dev/null +++ b/playbooks/legacy/validations-dsvm-functional/validations.yaml @@ -0,0 +1,23 @@ +- name: Execute validation commands + shell: "{{ validation_command }}" + +- name: Get run results + register: result + shell: + cmd: "cat {{val_output}}" + executable: /bin/bash + +- name: Get json data + set_fact: + jsondata: "{{ result.stdout | from_json }}" + +- name: Get Validations Status + set_fact: + status: "{{ jsondata | json_query(jsonres) }}" + vars: + jsonres: 'results[*].Status' + +- fail: + msg: "Validation failed: some of the validations has failed." + when: item != "PASSED" + loop: "{{ status }}" diff --git a/zuul.d/layout.yaml b/zuul.d/layout.yaml deleted file mode 100644 index 3064102e..00000000 --- a/zuul.d/layout.yaml +++ /dev/null @@ -1,37 +0,0 @@ -- project: - templates: - - openstack-python3-victoria-jobs - - check-requirements - - openstack-lower-constraints-jobs - check: - jobs: - - openstack-tox-linters: &tripleo-linters - nodeset: centos-8 - - openstack-tox-docs: &tripleo-docs - files: - - ^doc/.* - - ^README.rst - - tripleo-ci-centos-8-containers-multinode: &containers_multinode - dependencies: &deps - - openstack-tox-linters - files: &containers_files - - ^validations_libs/.* - irrelevant-files: &irrelevant_scenario_files - - .*.md$ - - .*.rst$ - - .*.txt$ - - .*.ini$ - - ^validations_libs/tests/.* - - tripleo-ci-centos-8-standalone: &basic_standalone - dependencies: *deps - files: *containers_files - irrelevant-files: *irrelevant_scenario_files - gate: - jobs: - - openstack-tox-linters: *tripleo-linters - - openstack-tox-docs: *tripleo-docs - - tripleo-ci-centos-8-containers-multinode: *containers_multinode - - tripleo-ci-centos-8-standalone: *basic_standalone - promote: - jobs: - - promote-openstack-tox-docs: *tripleo-docs