Skip to content

Commit

Permalink
[CI] split molecule testes to run in parallel (kubernetes-sigs#8756)
Browse files Browse the repository at this point in the history
* add parametrization to molecule_run.sh

* [CI] split molecule tests to allow parallelization of work
  • Loading branch information
cristicalin authored Apr 29, 2022
1 parent b7004d7 commit 835fd86
Show file tree
Hide file tree
Showing 4 changed files with 118 additions and 25 deletions.
1 change: 1 addition & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,4 @@ include:
- .gitlab-ci/terraform.yml
- .gitlab-ci/packet.yml
- .gitlab-ci/vagrant.yml
- .gitlab-ci/molecule.yml
93 changes: 93 additions & 0 deletions .gitlab-ci/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---

.molecule:
tags: [c3.small.x86]
only: [/^pr-.*$/]
except: ['triggers']
image: quay.io/kubespray/vagrant:$KUBESPRAY_VERSION
services: []
stage: deploy-part1
before_script:
- tests/scripts/rebase.sh
- apt-get update && apt-get install -y python3-pip
- update-alternatives --install /usr/bin/python python /usr/bin/python3 10
- python -m pip uninstall -y ansible ansible-base ansible-core
- python -m pip install -r tests/requirements.txt
- ./tests/scripts/vagrant_clean.sh
script:
- ./tests/scripts/molecule_run.sh
after_script:
- chronic ./tests/scripts/molecule_logs.sh
artifacts:
when: always
paths:
- molecule_logs/

# CI template for periodic CI jobs
# Enabled when PERIODIC_CI_ENABLED var is set
.molecule_periodic:
only:
variables:
- $PERIODIC_CI_ENABLED
allow_failure: true
extends: .molecule

molecule_full:
extends: .molecule_periodic

molecule_no_container_engines:
extends: .molecule
script:
- ./tests/scripts/molecule_run.sh -e container-engine
when: on_success

molecule_docker:
extends: .molecule
script:
- ./tests/scripts/molecule_run.sh -i container-engine/docker
when: on_success

molecule_containerd:
extends: .molecule
script:
- ./tests/scripts/molecule_run.sh -i container-engine/containerd
when: on_success

molecule_cri-o:
extends: .molecule
stage: deploy-part2
script:
- ./tests/scripts/molecule_run.sh -i container-engine/cri-o
when: on_success

molecule_cri-dockerd:
extends: .molecule
stage: deploy-part2
script:
- ./tests/scripts/molecule_run.sh -i container-engine/cri-dockerd
when: on_success

# Stage 3 container engines don't get as much attention so allow them to fail
molecule_kata:
extends: .molecule
stage: deploy-part3
allow_failure: true
script:
- ./tests/scripts/molecule_run.sh -i container-engine/kata-containers
when: on_success

molecule_gvisor:
extends: .molecule
stage: deploy-part3
allow_failure: true
script:
- ./tests/scripts/molecule_run.sh -i container-engine/gvisor
when: on_success

molecule_youki:
extends: .molecule
stage: deploy-part3
allow_failure: true
script:
- ./tests/scripts/molecule_run.sh -i container-engine/youki
when: on_success
23 changes: 0 additions & 23 deletions .gitlab-ci/vagrant.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,5 @@
---

molecule_tests:
tags: [c3.small.x86]
only: [/^pr-.*$/]
except: ['triggers']
image: quay.io/kubespray/vagrant:$KUBESPRAY_VERSION
services: []
stage: deploy-part1
before_script:
- tests/scripts/rebase.sh
- apt-get update && apt-get install -y python3-pip
- update-alternatives --install /usr/bin/python python /usr/bin/python3 10
- python -m pip uninstall -y ansible ansible-base ansible-core
- python -m pip install -r tests/requirements.txt
- ./tests/scripts/vagrant_clean.sh
script:
- ./tests/scripts/molecule_run.sh
after_script:
- chronic ./tests/scripts/molecule_logs.sh
artifacts:
when: always
paths:
- molecule_logs/

.vagrant:
extends: .testcases
variables:
Expand Down
26 changes: 24 additions & 2 deletions tests/scripts/molecule_run.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,32 @@
#!/bin/bash
set -euxo pipefail
set -euxo pipefail -o noglob

export LC_ALL=C.UTF-8
export LANG=C.UTF-8

for d in $(find roles -name molecule -type d)
_PATH='roles'
_EXCLUDE=""

while [[ $# -gt 0 ]] ; do
case $1 in
-e|--exclude)
_EXCLUDE="${_EXCLUDE} -not -path ${_PATH}/$2/*"
shift
shift
;;
-i|--include)
_PATH="${_PATH}/$2"
shift
shift
;;
-h|--help)
echo "Usage: molecule_run.sh [-h|--help] [-e|--exclude] [-i|--include]"
exit 0
;;
esac
done

for d in $(find ${_PATH} ${_EXCLUDE} -name molecule -type d)
do
pushd $(dirname $d)
molecule test --all
Expand Down

0 comments on commit 835fd86

Please sign in to comment.