From ecb9893d68db00026a900b2bb9d48559b17e7c38 Mon Sep 17 00:00:00 2001 From: Federico Ressi Date: Tue, 21 Dec 2021 16:20:14 +0100 Subject: [PATCH] Create a job to run Tobiko tests from a Docker container Change-Id: I8ff349d73e8573fd6636ed10132e9dae613710c8 --- playbooks/docker/pre.yaml | 9 ++++ playbooks/docker/run.yaml | 7 ++++ .../tobiko-docker-compose/defaults/main.yaml | 8 ++++ roles/tobiko-docker-compose/tasks/build.yaml | 8 ++++ roles/tobiko-docker-compose/tasks/main.yaml | 3 ++ roles/tobiko-docker-compose/tasks/run.yaml | 8 ++++ .../defaults/main.yaml | 3 ++ .../tasks/main.yaml | 17 ++++++++ zuul.d/docker.yaml | 41 +++++++++++++++++++ zuul.d/project.yaml | 1 + 10 files changed, 105 insertions(+) create mode 100644 playbooks/docker/pre.yaml create mode 100644 playbooks/docker/run.yaml create mode 100644 roles/tobiko-docker-compose/defaults/main.yaml create mode 100644 roles/tobiko-docker-compose/tasks/build.yaml create mode 100644 roles/tobiko-docker-compose/tasks/main.yaml create mode 100644 roles/tobiko-docker-compose/tasks/run.yaml create mode 100644 roles/tobiko-ensure-docker-compose/defaults/main.yaml create mode 100644 roles/tobiko-ensure-docker-compose/tasks/main.yaml create mode 100644 zuul.d/docker.yaml diff --git a/playbooks/docker/pre.yaml b/playbooks/docker/pre.yaml new file mode 100644 index 000000000..91617fb05 --- /dev/null +++ b/playbooks/docker/pre.yaml @@ -0,0 +1,9 @@ +--- + +- hosts: all + roles: + - role: ensure-docker + - role: tobiko-ensure-docker-compose + - role: tobiko-docker-compose + vars: + docker_compose_command: build diff --git a/playbooks/docker/run.yaml b/playbooks/docker/run.yaml new file mode 100644 index 000000000..caf1cfcbd --- /dev/null +++ b/playbooks/docker/run.yaml @@ -0,0 +1,7 @@ +--- + +- hosts: all + roles: + - role: tobiko-docker-compose + vars: + docker_compose_command: run diff --git a/roles/tobiko-docker-compose/defaults/main.yaml b/roles/tobiko-docker-compose/defaults/main.yaml new file mode 100644 index 000000000..64f45ebec --- /dev/null +++ b/roles/tobiko-docker-compose/defaults/main.yaml @@ -0,0 +1,8 @@ +--- + +docker_compose_command: run +docker_compose_dir: '{{ zuul_work_dir }}' +docker_compose_environment: {} +docker_compose_executable: /usr/local/bin/docker-compose + +zuul_work_dir: "{{ zuul.project.src_dir }}" diff --git a/roles/tobiko-docker-compose/tasks/build.yaml b/roles/tobiko-docker-compose/tasks/build.yaml new file mode 100644 index 000000000..c25d29392 --- /dev/null +++ b/roles/tobiko-docker-compose/tasks/build.yaml @@ -0,0 +1,8 @@ +--- + +- name: "Build image for service {{ docker_compose_service }} at {{ docker_compose_dir }}" + command: + chdir: '{{ docker_compose_dir }}' + cmd: '{{ docker_compose_executable }} build {{ docker_compose_service }}' + register: docker_compose_build + environment: '{{ docker_compose_environment }}' diff --git a/roles/tobiko-docker-compose/tasks/main.yaml b/roles/tobiko-docker-compose/tasks/main.yaml new file mode 100644 index 000000000..62f07c61f --- /dev/null +++ b/roles/tobiko-docker-compose/tasks/main.yaml @@ -0,0 +1,3 @@ +--- + +- include_tasks: '{{ docker_compose_command }}.yaml' diff --git a/roles/tobiko-docker-compose/tasks/run.yaml b/roles/tobiko-docker-compose/tasks/run.yaml new file mode 100644 index 000000000..9460c8b38 --- /dev/null +++ b/roles/tobiko-docker-compose/tasks/run.yaml @@ -0,0 +1,8 @@ +--- + +- name: "Run service {{ docker_compose_service }} at {{ docker_compose_dir }}" + command: + chdir: '{{ docker_compose_dir }}' + cmd: '{{ docker_compose_executable }} run {{ docker_compose_service }}' + register: docker_compose_run + environment: '{{ docker_compose_environment }}' diff --git a/roles/tobiko-ensure-docker-compose/defaults/main.yaml b/roles/tobiko-ensure-docker-compose/defaults/main.yaml new file mode 100644 index 000000000..5b9851fa5 --- /dev/null +++ b/roles/tobiko-ensure-docker-compose/defaults/main.yaml @@ -0,0 +1,3 @@ +--- + +docker_compose_executable: /usr/local/bin/docker-compose diff --git a/roles/tobiko-ensure-docker-compose/tasks/main.yaml b/roles/tobiko-ensure-docker-compose/tasks/main.yaml new file mode 100644 index 000000000..e8da6015c --- /dev/null +++ b/roles/tobiko-ensure-docker-compose/tasks/main.yaml @@ -0,0 +1,17 @@ +--- + +- name: "Install latest Docker compose" + become: true + shell: | + set -x + VERSION=$( + git ls-remote https://github.com/docker/compose | + grep refs/tags | + grep -oE "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | + sort --version-sort | + tail -n 1) + ARCH=$(uname -s)-$(uname -m) + URL=https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-${ARCH} + mkdir -p $(dirname '{{ docker_compose_executable }}') + curl -L ${URL} > '{{ docker_compose_executable }}' + chmod +x '{{ docker_compose_executable }}' diff --git a/zuul.d/docker.yaml b/zuul.d/docker.yaml new file mode 100644 index 000000000..9b6637932 --- /dev/null +++ b/zuul.d/docker.yaml @@ -0,0 +1,41 @@ +--- + +- project-template: + name: tobiko-docker + description: | + Docker jobs intended to gate Tobiko container related changes + check: &CHECK + jobs: + - tobiko-docker-unit + - tobiko-docker-functional + gate: + jobs: + - tobiko-docker-unit + periodic: *CHECK + + +# ---------------------------------------------------------------------------- + +- job: + name: tobiko-docker-unit + description: | + Run unit tests for an OpenStack Python project inside a Docker container. + voting: true + parent: base + timeout: 2400 + pre-run: playbooks/docker/pre.yaml + run: playbooks/docker/run.yaml + # post-run: playbooks/docker/post.yaml + vars: + docker_compose_service: unit + + +- job: + name: tobiko-docker-functional + description: | + Run functional tests for an OpenStack Python project inside a Docker container. + voting: false + parent: tobiko-docker-unit + timeout: 3600 + vars: + docker_compose_service: functional diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index a52290f28..15ae7081c 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -19,6 +19,7 @@ - openstack-lower-constraints-jobs - openstack-python3-wallaby-jobs - publish-to-pypi + - tobiko-docker - tobiko-infrared vars: rtd_webhook_id: '84947'