From f1552e9f0a2a2e8926cde20e700f1ee89091c8fe Mon Sep 17 00:00:00 2001 From: Andrey Kurilin Date: Thu, 16 Apr 2020 16:22:03 +0300 Subject: [PATCH] Improve rally-docker jobs to be usefull for rally-openstack Change-Id: I107b28b38f0f33d79291eca782f63392e5e77c94 --- .zuul.d/docker-jobs.yaml | 47 +++++++++++++++++ .zuul.d/zuul.yaml | 50 +------------------ .../build-and-check-docker-image.yaml | 4 -- .../build-check-and-push-docker-image.yaml | 5 -- .../ci/playbooks/docker-build-and-check.yaml | 4 ++ .../docker-build-check-and-push.yaml | 5 ++ .../build_docker_image/defaults/main.yaml | 3 -- .../roles/build_docker_image/tasks/main.yaml | 24 --------- .../docker-build-image/defaults/main.yaml | 6 +++ .../roles/docker-build-image/tasks/main.yaml | 42 ++++++++++++++++ .../defaults/main.yaml | 0 .../tasks/main.yaml | 0 12 files changed, 105 insertions(+), 85 deletions(-) create mode 100644 .zuul.d/docker-jobs.yaml delete mode 100644 tests/ci/playbooks/build-and-check-docker-image.yaml delete mode 100644 tests/ci/playbooks/build-check-and-push-docker-image.yaml create mode 100644 tests/ci/playbooks/docker-build-and-check.yaml create mode 100644 tests/ci/playbooks/docker-build-check-and-push.yaml delete mode 100644 tests/ci/playbooks/roles/build_docker_image/defaults/main.yaml delete mode 100644 tests/ci/playbooks/roles/build_docker_image/tasks/main.yaml create mode 100644 tests/ci/playbooks/roles/docker-build-image/defaults/main.yaml create mode 100644 tests/ci/playbooks/roles/docker-build-image/tasks/main.yaml rename tests/ci/playbooks/roles/{push_docker_image => docker-push-image}/defaults/main.yaml (100%) rename tests/ci/playbooks/roles/{push_docker_image => docker-push-image}/tasks/main.yaml (100%) diff --git a/.zuul.d/docker-jobs.yaml b/.zuul.d/docker-jobs.yaml new file mode 100644 index 0000000000..3a1bb84aa1 --- /dev/null +++ b/.zuul.d/docker-jobs.yaml @@ -0,0 +1,47 @@ +- secret: + name: rally-dockerhub-credentials + data: + username: !encrypted/pkcs1-oaep + - IOewkAChKmlkgrYeX+Lk+sjpGj99dswA6b0vXQBio0dUngRspAtXR3VJAxyZAyYwXbUPU + HHq7qHDlesVfBl/RCPVfbFt4+79L7h4NSCo2NIR3DPKIVIXBfVGsmHvRglY3c6E+ji2Bm + VOk/jsEW+b+k+SZy6rQ4J35HGVBJUzyJzVB7l/2lJ3Wmf0b2MyTBz3tApK8+dP+GAa6Hd + UTY6140pxTPS010kit7/8s5B2zlt/ky3raTjclLuCmQHR5J98/7Mxd02HYjz71VSmDOjZ + d0fWYGVLQb0XxcdaLHYNYQhY0BIq3qa0p9diavz131OzJ5maQI0RKDXcz0BTsBP6bQfcM + etdB7L9geqTjIoA8dlJgM4ZQNer5UFrfeOTf8XpjPtM+U03T9GE4wKtEu1S8iinN9CB/g + dQdcrel9V0HkKBvJTJdlHFngp4lGx2JG+sDGIIgUru2GH4mi3fndAkqth/m22SgDq14TG + Zksbd3pBtoirt93H1hk557EM1FbfNpxGXkIo4No+LzuCuDymDga2ntHF2EcuGGUDlE+Pn + vmEvD4/dkXyyNJAqaHhwnTHy8clTYu0xEwTDvUL+Ss86McIxotw6Vv0XPeL1JUB0Ewfdu + QG3mgGXWqnoaixZpxjtLnmvA/syB5BEj9qcw4aXfU0ACytTU5H+pGHiwah0ST0= + password: !encrypted/pkcs1-oaep + - VU7F2XHpVSvqfco6B6F3iXhTdy1/5Rv+8UiT/Sk2SuQd+ZHLV2mVSncdYQRpuAt3/z3Al + 1BaoCFBYXPiaGOb1zW2s6kvwhn9jWOWHc20M2QAWMia45HNfS9qtMsBW4djlFFW4TTsSy + zCZXor3ulVhlBaLOKGrhjWTBi/EDCslLJEH4quOjmP5/RXqph7Z62RyueSbm6F1+JcWgE + zI+nJ+X7q4winKrAndSkP7lDr3IU1OK8gmPwfvPO4Tvwrec6RMWb5DlICp9YDP/H35Fb9 + PdR+aapd++UOxsZPKc0nUroxjmENpOcqrIYuwtS7oAitoK3QuAsQ/M8d6WHwmoa4/I6DB + rBDEJV9goxu9qAzYLNKiqsV/IIcpud52j9HVlKLTvqeAN7qCSqxlhVlS8lXCmYhiNrscy + LTa+uM+6EKQC46eFaYos/2bChKR1c6wya2Y1Dj0Qj27CgQtp+WiAHTT+NgxGo7d3Jqk2z + UakGoIOovwcV7HpfFHQDijDBz/+6DR4iD+MSbOrG2QRzrjSix9kSk2b7t2liUZ0ODEPWe + DvlbYngfxXRzxdh/lxQ8AvCXtdRQNYrahyhhCsruBtQTptUgjxnPRe/tZyYAAKXILadZM + 1cA3UecdfuFWhah/ffS1wWC0TvP+UPcJ/dNw3Xlurjt2USJfdyw0MueN7Wsj3Q= + +- job: + name: rally-docker-build + parent: build-docker-image + nodeset: ubuntu-bionic + run: tests/ci/playbooks/docker-build-and-check.yaml + post-run: tests/ci/playbooks/fetch-html-and-json-reports.yaml + timeout: 1800 + vars: + docker_image_version: latest + +- job: + name: rally-docker-build-and-push + parent: build-docker-image + nodeset: ubuntu-bionic + run: tests/ci/playbooks/docker-build-check-and-push.yaml + post-run: tests/ci/playbooks/fetch-html-and-json-reports.yaml + timeout: 1800 + secrets: + name: docker_credentials + secret: rally-dockerhub-credentials + pass-to-parent: false diff --git a/.zuul.d/zuul.yaml b/.zuul.d/zuul.yaml index ee8b7b8452..43a0fdaaab 100644 --- a/.zuul.d/zuul.yaml +++ b/.zuul.d/zuul.yaml @@ -1,29 +1,3 @@ -- secret: - name: rally-dockerhub-credentials - data: - username: !encrypted/pkcs1-oaep - - IOewkAChKmlkgrYeX+Lk+sjpGj99dswA6b0vXQBio0dUngRspAtXR3VJAxyZAyYwXbUPU - HHq7qHDlesVfBl/RCPVfbFt4+79L7h4NSCo2NIR3DPKIVIXBfVGsmHvRglY3c6E+ji2Bm - VOk/jsEW+b+k+SZy6rQ4J35HGVBJUzyJzVB7l/2lJ3Wmf0b2MyTBz3tApK8+dP+GAa6Hd - UTY6140pxTPS010kit7/8s5B2zlt/ky3raTjclLuCmQHR5J98/7Mxd02HYjz71VSmDOjZ - d0fWYGVLQb0XxcdaLHYNYQhY0BIq3qa0p9diavz131OzJ5maQI0RKDXcz0BTsBP6bQfcM - etdB7L9geqTjIoA8dlJgM4ZQNer5UFrfeOTf8XpjPtM+U03T9GE4wKtEu1S8iinN9CB/g - dQdcrel9V0HkKBvJTJdlHFngp4lGx2JG+sDGIIgUru2GH4mi3fndAkqth/m22SgDq14TG - Zksbd3pBtoirt93H1hk557EM1FbfNpxGXkIo4No+LzuCuDymDga2ntHF2EcuGGUDlE+Pn - vmEvD4/dkXyyNJAqaHhwnTHy8clTYu0xEwTDvUL+Ss86McIxotw6Vv0XPeL1JUB0Ewfdu - QG3mgGXWqnoaixZpxjtLnmvA/syB5BEj9qcw4aXfU0ACytTU5H+pGHiwah0ST0= - password: !encrypted/pkcs1-oaep - - VU7F2XHpVSvqfco6B6F3iXhTdy1/5Rv+8UiT/Sk2SuQd+ZHLV2mVSncdYQRpuAt3/z3Al - 1BaoCFBYXPiaGOb1zW2s6kvwhn9jWOWHc20M2QAWMia45HNfS9qtMsBW4djlFFW4TTsSy - zCZXor3ulVhlBaLOKGrhjWTBi/EDCslLJEH4quOjmP5/RXqph7Z62RyueSbm6F1+JcWgE - zI+nJ+X7q4winKrAndSkP7lDr3IU1OK8gmPwfvPO4Tvwrec6RMWb5DlICp9YDP/H35Fb9 - PdR+aapd++UOxsZPKc0nUroxjmENpOcqrIYuwtS7oAitoK3QuAsQ/M8d6WHwmoa4/I6DB - rBDEJV9goxu9qAzYLNKiqsV/IIcpud52j9HVlKLTvqeAN7qCSqxlhVlS8lXCmYhiNrscy - LTa+uM+6EKQC46eFaYos/2bChKR1c6wya2Y1Dj0Qj27CgQtp+WiAHTT+NgxGo7d3Jqk2z - UakGoIOovwcV7HpfFHQDijDBz/+6DR4iD+MSbOrG2QRzrjSix9kSk2b7t2liUZ0ODEPWe - DvlbYngfxXRzxdh/lxQ8AvCXtdRQNYrahyhhCsruBtQTptUgjxnPRe/tZyYAAKXILadZM - 1cA3UecdfuFWhah/ffS1wWC0TvP+UPcJ/dNw3Xlurjt2USJfdyw0MueN7Wsj3Q= - - job: name: rally-install-base parent: base @@ -47,26 +21,6 @@ parent: rally-install-base nodeset: centos-8 -- job: - name: rally-docker-build - parent: build-docker-image - nodeset: ubuntu-bionic - run: tests/ci/playbooks/build-and-check-docker-image.yaml - post-run: tests/ci/playbooks/fetch-html-and-json-reports.yaml - timeout: 1800 - -- job: - name: rally-docker-build-and-push - parent: build-docker-image - nodeset: ubuntu-bionic - run: tests/ci/playbooks/build-check-and-push-docker-image.yaml - post-run: tests/ci/playbooks/fetch-html-and-json-reports.yaml - timeout: 1800 - secrets: - name: docker_credentials - secret: rally-dockerhub-credentials - pass-to-parent: false - - job: name: rally-database-migration parent: base @@ -95,9 +49,7 @@ - rally-install-ubuntu-bionic - rally-install-centos-7 - rally-install-centos-8 - - rally-docker-build: - vars: - docker_image_version: latest + - rally-docker-build gate: jobs: - rally-tox-cover diff --git a/tests/ci/playbooks/build-and-check-docker-image.yaml b/tests/ci/playbooks/build-and-check-docker-image.yaml deleted file mode 100644 index 25d13df3cb..0000000000 --- a/tests/ci/playbooks/build-and-check-docker-image.yaml +++ /dev/null @@ -1,4 +0,0 @@ -- hosts: all - name: Execute the similar to `tox -e self` job - roles: - - build_docker_image diff --git a/tests/ci/playbooks/build-check-and-push-docker-image.yaml b/tests/ci/playbooks/build-check-and-push-docker-image.yaml deleted file mode 100644 index 6629232811..0000000000 --- a/tests/ci/playbooks/build-check-and-push-docker-image.yaml +++ /dev/null @@ -1,5 +0,0 @@ -- hosts: all - name: Execute the similar to `tox -e self` job - roles: - - build_docker_image - - push_docker_image diff --git a/tests/ci/playbooks/docker-build-and-check.yaml b/tests/ci/playbooks/docker-build-and-check.yaml new file mode 100644 index 0000000000..0dfb18edc9 --- /dev/null +++ b/tests/ci/playbooks/docker-build-and-check.yaml @@ -0,0 +1,4 @@ +- hosts: all + name: Build docker image for Rally and check it (calling the similar workload as `tox -e self`) + roles: + - docker-build-image diff --git a/tests/ci/playbooks/docker-build-check-and-push.yaml b/tests/ci/playbooks/docker-build-check-and-push.yaml new file mode 100644 index 0000000000..c49f5a2453 --- /dev/null +++ b/tests/ci/playbooks/docker-build-check-and-push.yaml @@ -0,0 +1,5 @@ +- hosts: all + name: Build and push docker image for Rally + roles: + - docker-build-image + - docker-push-image diff --git a/tests/ci/playbooks/roles/build_docker_image/defaults/main.yaml b/tests/ci/playbooks/roles/build_docker_image/defaults/main.yaml deleted file mode 100644 index a1b6dcc3d4..0000000000 --- a/tests/ci/playbooks/roles/build_docker_image/defaults/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ -docker_repository: xrally/xrally -docker_image_version: "{{ zuul.tag }}" -docker_image_tag: "{{ docker_repository }}:{{ docker_image_version }}" \ No newline at end of file diff --git a/tests/ci/playbooks/roles/build_docker_image/tasks/main.yaml b/tests/ci/playbooks/roles/build_docker_image/tasks/main.yaml deleted file mode 100644 index 49ebdf60dd..0000000000 --- a/tests/ci/playbooks/roles/build_docker_image/tasks/main.yaml +++ /dev/null @@ -1,24 +0,0 @@ -- name: Build xrally/xrally docker image - shell: - chdir: '{{ zuul.project.src_dir }}' - cmd: 'docker build -t {{ docker_image_tag }} ./' - -- name: List available docker images - shell: docker image list - -- name: Prepare directories to mount to the docker container for persistency - shell: - chdir: '{{ zuul.project.src_dir }}' - cmd: | - mkdir -p .test_results - sudo chown 65500 .test_results - -- name: Execute the similar wokrloads as `tox -e self` - shell: - cmd: > - python3 {{ zuul.project.src_dir }}/tests/ci/rally_self_job.py - --task /rally/source/rally-jobs/self-rally.yaml - --plugins-path /rally/source/rally-jobs/plugins - --rally-cmd 'docker run -v '$(realpath {{ zuul.project.src_dir }})'/.test_results:/home/rally/.rally {{ docker_image_tag }}' - --results-dir /home/rally/.rally - --without-tmp-sqlite diff --git a/tests/ci/playbooks/roles/docker-build-image/defaults/main.yaml b/tests/ci/playbooks/roles/docker-build-image/defaults/main.yaml new file mode 100644 index 0000000000..6092775025 --- /dev/null +++ b/tests/ci/playbooks/roles/docker-build-image/defaults/main.yaml @@ -0,0 +1,6 @@ +docker_repository: xrally/xrally +docker_image_version: "{{ zuul.tag }}" +docker_image_tag: "{{ docker_repository }}:{{ docker_image_version }}" +rally_project_path: "{{ zuul.projects['opendev.org/openstack/rally'].src_dir }}" +rally_plugin_name: "Dummy.dummy" +rally_package_name: "" \ No newline at end of file diff --git a/tests/ci/playbooks/roles/docker-build-image/tasks/main.yaml b/tests/ci/playbooks/roles/docker-build-image/tasks/main.yaml new file mode 100644 index 0000000000..b906f61787 --- /dev/null +++ b/tests/ci/playbooks/roles/docker-build-image/tasks/main.yaml @@ -0,0 +1,42 @@ +- name: "Build {{ docker_image_tag }} docker image" + shell: + chdir: '{{ zuul.project.src_dir }}' + cmd: 'docker build -t {{ docker_image_tag }} ./' + +- name: Get image size + shell: > + set -e + SIZE=$(docker image inspect {{ docker_image_tag }} {% raw %}--format='{{.Size}}'{% endraw %} ) + SIZE=$(expr $SIZE / 1000 / 1000) + echo "Size of {{ docker_image_tag }}: "$SIZE" Mbyte" + +- name: Prepare directories to mount to the docker container for persistency + shell: + chdir: '{{ zuul.project.src_dir }}' + cmd: | + mkdir -p .test_results + sudo chown 65500 .test_results + +- name: List Rally version + shell: docker run {{ docker_image_tag }} --version + register: rally_version_info + +- name: Check plugin package is discoverable + fail: + msg: "{{ rally_package_name }} is not discoverable." + when: + - '"{{ rally_package_name }}" != ""' + - '"{{ rally_package_name }}" not in rally_version_info.stdout' + +- name: "Check availability of {{ rally_plugin_name }} plugin" + shell: docker run {{ docker_image_tag }} plugin show {{ rally_plugin_name }} + +- name: Execute the similar wokrloads as `tox -e self` + shell: + cmd: > + python3 {{ rally_project_path }}/tests/ci/rally_self_job.py + --task /rally/source/rally-jobs/self-rally.yaml + --plugins-path /rally/source/rally-jobs/plugins + --rally-cmd 'docker run -v '$(realpath {{ zuul.project.src_dir }})'/.test_results:/home/rally/.rally {{ docker_image_tag }}' + --results-dir /home/rally/.rally + --without-tmp-sqlite diff --git a/tests/ci/playbooks/roles/push_docker_image/defaults/main.yaml b/tests/ci/playbooks/roles/docker-push-image/defaults/main.yaml similarity index 100% rename from tests/ci/playbooks/roles/push_docker_image/defaults/main.yaml rename to tests/ci/playbooks/roles/docker-push-image/defaults/main.yaml diff --git a/tests/ci/playbooks/roles/push_docker_image/tasks/main.yaml b/tests/ci/playbooks/roles/docker-push-image/tasks/main.yaml similarity index 100% rename from tests/ci/playbooks/roles/push_docker_image/tasks/main.yaml rename to tests/ci/playbooks/roles/docker-push-image/tasks/main.yaml