From 812546c87595b1d8a1bc0da931d644473b03b31f Mon Sep 17 00:00:00 2001 From: Sergiy Markin Date: Wed, 24 May 2023 20:00:29 +0000 Subject: [PATCH] Update armada image run test This PS improves armada image run test by enriching it with config generator. Also this test was removed from make images section of Makefile. Build images zuul gate has make run_images task to test the freshly built image now. Change-Id: I87e089e5d268d248cda1dad1cd417694d166fdfb --- .readthedocs.yaml | 4 +- .zuul.yaml | 3 + Makefile | 4 +- images/armada/Dockerfile.ubuntu_bionic | 1 - images/armada/Dockerfile.ubuntu_focal | 1 - tools/armada_image_run.sh | 75 +++++++++++++------- tools/gate/playbooks/docker-image-build.yaml | 14 ++++ 7 files changed, 71 insertions(+), 31 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 9e9c1463..9fd229d9 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -19,7 +19,7 @@ formats: # Optionally set the version of Python and requirements required to build your docs python: - version: 3.7 + version: 3.8 install: - requirements: doc/requirements.txt - - requirements: requirements.txt + - requirements: requirements-frozen.txt diff --git a/.zuul.yaml b/.zuul.yaml index 092e45db..aa331e00 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -62,6 +62,9 @@ timeout: 900 run: tools/gate/playbooks/build-charts.yaml nodeset: armada-single-node-focal + vars: + HTK_COMMIT: a7cd689280cdbc0acd04a7a1b745941260e8700b + - job: name: armada-chart-build-latest-htk diff --git a/Makefile b/Makefile index 9fab1d5d..36f56ed8 100644 --- a/Makefile +++ b/Makefile @@ -78,14 +78,14 @@ check-tox: exit 2; \ fi -images: check-docker build_armada run_armada +images: check-docker build_armada docs: clean build_docs build_docs: tox -e docs -run_images: run_armada +run_images: build_armada run_armada run_armada: build_armada ./tools/armada_image_run.sh $(IMAGE) diff --git a/images/armada/Dockerfile.ubuntu_bionic b/images/armada/Dockerfile.ubuntu_bionic index 0f9fbf4e..6ccd8cee 100644 --- a/images/armada/Dockerfile.ubuntu_bionic +++ b/images/armada/Dockerfile.ubuntu_bionic @@ -88,7 +88,6 @@ RUN set -ex \ /usr/share/doc-base COPY . ./ -COPY etc/armada /etc/armada # Setting the version explicitly for PBR ENV PBR_VERSION 0.8.0 diff --git a/images/armada/Dockerfile.ubuntu_focal b/images/armada/Dockerfile.ubuntu_focal index e89c1388..b340f403 100644 --- a/images/armada/Dockerfile.ubuntu_focal +++ b/images/armada/Dockerfile.ubuntu_focal @@ -88,7 +88,6 @@ RUN set -ex \ /usr/share/doc-base COPY . ./ -COPY etc/armada /etc/armada # Setting the version explicitly for PBR ENV PBR_VERSION 0.8.0 diff --git a/tools/armada_image_run.sh b/tools/armada_image_run.sh index d9bfba50..1e28cf3b 100755 --- a/tools/armada_image_run.sh +++ b/tools/armada_image_run.sh @@ -16,33 +16,58 @@ set -x IMAGE=$1 -USE_PROXY=${USE_PROXY:-false} -CONTAINER_NAME=armada_test_$(date +%Y%m%d%H%M%s%s) +ARMADA_CONTAINER_NAME=armada_test_$(date +%Y%m%d%H%M%s%s) -docker create \ - -p 8000:8000 \ - --name ${CONTAINER_NAME} ${IMAGE} +function generate_conf { + tox -e genconfig > /dev/null + tox -e genpolicy > /dev/null + ETCDIR=$(mktemp -d)/armada + mkdir -p ${ETCDIR} > /dev/null + cp etc/armada/api-paste.ini ${ETCDIR}/api-paste.ini + cp etc/armada/policy.yaml.sample ${ETCDIR}/policy.yaml + echo ${ETCDIR} +} -docker start ${CONTAINER_NAME} & -sleep 5 +function test_armada { + TMPETC=$1 + docker run \ + -d --name "${ARMADA_CONTAINER_NAME}" --net host \ + -v ${TMPETC}:/etc/armada \ + ${IMAGE} -# If the image build pipeline is running in a pod/docker (docker-in-docker), -# we'll need to exec into the nested container's network namespace to acces the -# armada api. -GOOD="HTTP/1.1 204 No Content" -RESULT="$(curl -i 'http://127.0.0.1:8000/api/v1.0/health' --noproxy '*' | tr '\r' '\n' | head -1)" -if [[ "${RESULT}" != "${GOOD}" ]]; then - if docker exec -t ${CONTAINER_NAME} /bin/bash -c "curl -i 'http://127.0.0.1:8000/api/v1.0/health' --noproxy '*' | tr '\r' '\n' | head -1 "; then - RESULT="${GOOD}" - fi -fi + sleep 10 -docker stop ${CONTAINER_NAME} -docker logs ${CONTAINER_NAME} -docker rm ${CONTAINER_NAME} + RESULT=$(curl --noproxy '*' -i 'http://127.0.0.1:8000/api/v1.0/health' | tr '\r' '\n' | head -1) + GOOD="HTTP/1.1 204 No Content" + if [[ "${RESULT}" != "${GOOD}" ]]; then + if docker exec -t ${CONTAINER_NAME} /bin/bash -c "curl -i 'http://127.0.0.1:8000/api/v1.0/health' --noproxy '*' | tr '\r' '\n' | head -1 "; then + RESULT="${GOOD}" + fi + fi -if [[ ${RESULT} == ${GOOD} ]]; then - exit 0 -else - exit 1 -fi \ No newline at end of file + if [[ ${RESULT} == ${GOOD} ]] + then + RC=0 + else + RC=1 + fi + + docker logs "${ARMADA_CONTAINER_NAME}" + return $RC +} + +function cleanup { + TMPDIR=$1 + docker stop "${ARMADA_CONTAINER_NAME}" + docker rm "${ARMADA_CONTAINER_NAME}" + rm -rf $TMPDIR +} + +TMPETC=$(generate_conf) + +test_armada $TMPETC +RC=$? + +cleanup $TMPETC + +exit $RC diff --git a/tools/gate/playbooks/docker-image-build.yaml b/tools/gate/playbooks/docker-image-build.yaml index 0a6876d5..1f4f8128 100644 --- a/tools/gate/playbooks/docker-image-build.yaml +++ b/tools/gate/playbooks/docker-image-build.yaml @@ -18,6 +18,7 @@ - ensure-docker - ensure-python - ensure-pip + - ensure-tox tasks: - include_vars: vars.yaml @@ -56,6 +57,19 @@ executable: pip3 become: True + + + - name: Run images + when: not publish + shell: | + make run_images + args: + chdir: "{{ zuul.project.src_dir }}" + executable: /bin/bash + become: True + + + - name: Make images when: not publish block: