You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2022/04/05 10:04:54 UTC
[buildstream-plugins] 39/49: .github: Adding run-ci.sh and the ci.docker-compose.yml
This is an automated email from the ASF dual-hosted git repository.
tvb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/buildstream-plugins.git
commit d54c1efc677cb4911b14f3c934b443b11d61a8ec
Author: Tristan van Berkom <tr...@codethink.co.uk>
AuthorDate: Fri Mar 25 14:35:50 2022 +0900
.github: Adding run-ci.sh and the ci.docker-compose.yml
This doesn't add CI workflows but adds the underlying mechanics needed to
run the tox test suite under the various docker containers.
---
.github/common.env | 5 +++
.github/compose/ci.docker-compose.yml | 58 ++++++++++++++++++++++++
.github/run-ci.sh | 83 +++++++++++++++++++++++++++++++++++
3 files changed, 146 insertions(+)
diff --git a/.github/common.env b/.github/common.env
new file mode 100644
index 0000000..02eea32
--- /dev/null
+++ b/.github/common.env
@@ -0,0 +1,5 @@
+# Shared common variables
+
+CI_IMAGE_VERSION=master-488745436
+CI_TOXENV_ALL=py37,py38,py39,py310
+CI_TOXENV_MASTER=py37-bst-master,py38-bst-master,py39-bst-master,py310-bst-master
diff --git a/.github/compose/ci.docker-compose.yml b/.github/compose/ci.docker-compose.yml
new file mode 100644
index 0000000..1251079
--- /dev/null
+++ b/.github/compose/ci.docker-compose.yml
@@ -0,0 +1,58 @@
+version: '3.4'
+
+x-tests-template: &tests-template
+ image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:35-${CI_IMAGE_VERSION:-latest}
+ command: tox -vvvvv -- --color=yes --integration
+ environment:
+ TOXENV: ${CI_TOXENV_ALL}
+
+ # Enable privileges to run the sandbox
+ #
+ privileged: true
+ devices:
+ - /dev/fuse:/dev/fuse
+
+ # Mount the local directory and set the working directory
+ # to run the tests from.
+ #
+ volumes:
+ - ../..:/home/testuser/buildstream
+ working_dir: /home/testuser/buildstream
+
+
+services:
+
+ fedora-34:
+ <<: *tests-template
+ image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:34-${CI_IMAGE_VERSION:-latest}
+
+ fedora-35:
+ <<: *tests-template
+ image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:35-${CI_IMAGE_VERSION:-latest}
+
+ debian-10:
+ <<: *tests-template
+ image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-debian:10-${CI_IMAGE_VERSION:-latest}
+
+ # Ensure that tests also pass in the absence of a sandboxing tool
+ fedora-missing-deps:
+ <<: *tests-template
+ image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:minimal-${CI_IMAGE_VERSION:-latest}
+
+ # Test against the master version of BuildStream
+ bst-master:
+ <<: *tests-template
+ environment:
+ TOXENV: ${CI_TOXENV_MASTER}
+
+ docs:
+ <<: *tests-template
+ command: tox -e docs
+
+ lint:
+ <<: *tests-template
+ command: tox -e lint,format-check
+
+ mypy:
+ <<: *tests-template
+ command: tox -e mypy
diff --git a/.github/run-ci.sh b/.github/run-ci.sh
new file mode 100755
index 0000000..d4f60e3
--- /dev/null
+++ b/.github/run-ci.sh
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+topdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+function usage () {
+ echo "Usage: "
+ echo " run-ci.sh [OPTIONS] [TEST NAME [TEST NAME...]]"
+ echo
+ echo "Runs the CI tests locally using docker"
+ echo
+ echo "The test names are based on the names of tests in the CI yaml files"
+ echo
+ echo "If no test names are specified, all tests will be run"
+ echo
+ echo "Options:"
+ echo
+ echo " -h --help Display this help message and exit"
+ echo " "
+ exit 1;
+}
+
+arg_service=false
+
+while : ; do
+ case "$1" in
+ -h|--help)
+ usage;
+ shift ;;
+ -s|--service)
+ arg_service=true
+ shift ;;
+ *)
+ break ;;
+ esac
+done
+
+test_names="${@}"
+
+
+# We need to give ownership to the docker image user `testuser`,
+# chances are high that this will be the same UID as the primary
+# user on this host
+#
+user_uid="$(id -u)"
+user_gid="$(id -g)"
+if [ "${user_uid}" -ne "1000" ] || [ "${user_gid}" -ne "1000" ]; then
+ sudo chown -R 1000:1000 "${topdir}/.."
+fi
+
+
+# runTest()
+#
+# $1 = test name
+#
+function runTest() {
+ test_name=$1
+
+ # Run docker-compose from it's directory, because it will use
+ # relative paths
+ cd "${topdir}/compose"
+ docker-compose \
+ --env-file ${topdir}/common.env \
+ --file ${topdir}/compose/ci.docker-compose.yml \
+ run "${test_name}"
+ return $?
+}
+
+
+if [ -z "${test_names}" ]; then
+ for test_name in "mypy debian-10 fedora-34 fedora-35 fedora-missing-deps"; do
+ if ! runTest "${test_name}"; then
+ echo "Tests failed"
+ exit 1
+ fi
+ done
+else
+ for test_name in "${test_names}"; do
+ if ! runTest "${test_name}"; then
+ echo "Tests failed"
+ exit 1
+ fi
+ done
+fi