File tree Expand file tree Collapse file tree 9 files changed +192
-7
lines changed Expand file tree Collapse file tree 9 files changed +192
-7
lines changed Original file line number Diff line number Diff line change @@ -12,3 +12,4 @@ shippable/
12
12
htmlcov /
13
13
.dir-locals.el
14
14
.venv /
15
+ docker-testing /outdir
Original file line number Diff line number Diff line change @@ -11,20 +11,35 @@ Pre-release test plan
11
11
12
12
git checkout vX.Y-branch
13
13
14
- 1. Make tox happy on the following first-party platforms:
14
+ 1. Make tox happy on the following first-party non-Linux platforms:
15
15
16
16
- Windows 10
17
17
- the latest macOS
18
- - the latest Ubuntu LTS
19
18
20
- 2. Make tox happy on other popular Linux distributions as resources allow.
21
- Doing this in a container is fine.
19
+ Do this by hand and check for any anomalous warnings in the output.
20
+ Do not just trust CI.
21
+
22
+ 2. Make tox happy on other popular Linux distributions:
22
23
23
24
- Arch
24
- - the latest Ubuntu release (if different than the latest LTS)
25
- - Debian stable (if its Python 3 is still supported)
25
+ - the latest Ubuntu LTS release
26
+ - the latest Ubuntu development release
27
+ - Debian stable
26
28
- Debian testing
27
- - Fedora
29
+ - the latest Fedora release
30
+ - the latest Fedora rawhide release
31
+
32
+ Automated infrastructure for doing this in docker is in the docker-testing
33
+ directory. Start by updating the Dockerfiles and compose.yaml in that
34
+ directory if any newer distribution versions should be tested.
35
+
36
+ Then, install docker compose in your host Linux environment and run::
37
+
38
+ cd docker-testing
39
+ ./run-tests.sh
40
+
41
+ Make sure to check the tox.log files mentioned in the output for any
42
+ anomalous warnings.
28
43
29
44
3. Build alpha N (N=1 to start, then N=2 if you need more commits, etc.) and
30
45
upload to pypi. See "Building and uploading the release wheels" below for
Original file line number Diff line number Diff line change
1
+ Docker based testing
2
+ --------------------
3
+
4
+ This directory contains helper files used for running west's tests in Docker on
5
+ various Linux runtimes. It was originally developed for release testing.
6
+
7
+ Run "./run-tests.sh" in this directory to run the tests.
Original file line number Diff line number Diff line change
1
+ ARG TARGET
2
+
3
+ FROM ${TARGET}
4
+
5
+ ARG TARGET
6
+ ENV WEST_TARGET=${TARGET}
7
+
8
+ RUN pacman -Syu --noconfirm \
9
+ git \
10
+ python-pip \
11
+ && pacman -Scc --noconfirm
12
+
13
+ RUN pip3 install --break-system-packages tox
Original file line number Diff line number Diff line change
1
+ # SPDX-License-Identifier: Apache-2.0
2
+
3
+ x-common : &common
4
+ user : ${MY_UID}:${MY_GID}
5
+ volumes :
6
+ - /etc/passwd:/etc/passwd:ro
7
+ - /etc/group:/etc/group:ro
8
+ - ..:/west
9
+ command : /west/docker-testing/in-container-test.sh
10
+ environment :
11
+ WEST_TOX_OUT : /west/docker-testing/outdir
12
+ WEST_TOX_OUT_IN_HOST : ${WEST_IN_HOST}/docker-testing/outdir
13
+
14
+ services :
15
+ west-archlinux-latest :
16
+ << : *common
17
+ build :
18
+ args :
19
+ TARGET : archlinux:latest
20
+ dockerfile : arch/Dockerfile
21
+
22
+ west-debian-stable :
23
+ << : *common
24
+ build :
25
+ args :
26
+ TARGET : debian:stable
27
+ dockerfile : debian/Dockerfile
28
+
29
+ west-debian-testing :
30
+ << : *common
31
+ build :
32
+ args :
33
+ TARGET : debian:testing
34
+ dockerfile : debian/Dockerfile
35
+
36
+ west-fedora-latest :
37
+ << : *common
38
+ build :
39
+ args :
40
+ TARGET : fedora:latest
41
+ dockerfile : fedora/Dockerfile
42
+
43
+ west-fedora-rawhide :
44
+ << : *common
45
+ build :
46
+ args :
47
+ TARGET : fedora:rawhide
48
+ dockerfile : fedora/Dockerfile
49
+
50
+ west-ubuntu-latest :
51
+ << : *common
52
+ build :
53
+ args :
54
+ TARGET : ubuntu:latest
55
+ dockerfile : debian/Dockerfile
56
+
57
+ west-ubuntu-devel :
58
+ << : *common
59
+ build :
60
+ args :
61
+ TARGET : ubuntu:devel
62
+ dockerfile : debian/Dockerfile
Original file line number Diff line number Diff line change
1
+ ARG TARGET
2
+
3
+ FROM ${TARGET}
4
+
5
+ ARG TARGET
6
+ ENV WEST_TARGET=${TARGET}
7
+
8
+ RUN apt-get update \
9
+ && apt-get install -y \
10
+ git \
11
+ python3-pip \
12
+ && rm -rf /var/lib/apt/lists/*
13
+
14
+ RUN pip3 install --break-system-packages tox
Original file line number Diff line number Diff line change
1
+ ARG TARGET
2
+
3
+ FROM ${TARGET}
4
+
5
+ ARG TARGET
6
+ ENV WEST_TARGET=${TARGET}
7
+
8
+ RUN dnf install -y \
9
+ git \
10
+ python3-pip \
11
+ && dnf clean dbcache
12
+
13
+ RUN pip3 install tox
Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+ set -e
3
+
4
+ # This is the test script that runs in the containers themselves.
5
+
6
+ WEST=/west
7
+ # Replace semicolon with dash
8
+ WEST_TARGET=${WEST_TARGET//:/ -}
9
+
10
+ WEST_TOX_OUT=$WEST_TOX_OUT /$WEST_TARGET
11
+ WEST_TOX_OUT_IN_HOST=$WEST_TOX_OUT_IN_HOST /$WEST_TARGET
12
+
13
+ die () {
14
+ if [ $# -eq 0 ]; then
15
+ echo " error: $* " >&2
16
+ else
17
+ echo " error: unknown error in $0 " >&2
18
+ fi
19
+ exit 1
20
+ }
21
+
22
+ main ()
23
+ {
24
+ # Verify the container environment set up meets this script's requirements.
25
+ [ -n " $WEST_TOX_OUT " ] || die " missing $WEST_TOX_OUT "
26
+ [ -n " $WEST_TOX_OUT_IN_HOST " ] || die " missing $WEST_TOX_OUT_IN_HOST "
27
+ [ -d " $WEST " ] || die " missing $WEST in the container"
28
+
29
+ TOX_LOG=" $WEST_TOX_OUT /tox.log"
30
+ TOX_LOG_IN_HOST=" $WEST_TOX_OUT_IN_HOST /tox.log"
31
+ WEST_TESTDIR=" /tmp/west"
32
+
33
+ mkdir " $WEST_TOX_OUT "
34
+
35
+ git clone -q " $WEST " " $WEST_TESTDIR " || die " failed to clone west to $WEST_TESTDIR in container"
36
+ cd " $WEST_TESTDIR "
37
+
38
+ echo " running tox, output in $TOX_LOG_IN_HOST in host"
39
+ tox run > " $TOX_LOG " 2>&1 || die " tox failed, see $TOX_LOG "
40
+
41
+ cp -R htmlcov " $WEST_TOX_OUT " || die " failed to copy coverage to $WEST_TOX_OUT_IN_HOST /htmlcov in host"
42
+ }
43
+
44
+ main " $@ "
Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+
3
+ # This is the top-level test script that runs in the host.
4
+
5
+ HERE=$( dirname " $0 " )
6
+
7
+ [ -d " $HERE /outdir" ] && rm -r " $HERE /outdir"
8
+
9
+ set -e
10
+ mkdir " $HERE /outdir"
11
+ export MY_UID=$( id -u)
12
+ export MY_GID=$( id -g)
13
+ export WEST_IN_HOST=$( realpath " $HERE /.." )
14
+ # Store the final config as reference
15
+ docker-compose config > $HERE /outdir/config.yml
16
+ docker-compose up --force-recreate --build
You can’t perform that action at this time.
0 commit comments