diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-04-02 12:40:56 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-04-02 12:40:56 +0200 |
commit | c17ed429be9575a99d893a31cd7bf32dc428ede9 (patch) | |
tree | b6bcce05a2d34b6fe85961768c6597d27f0c3157 /ci | |
parent | e6451c74729662c8bdefeb0f3fe4bd90e49f100f (diff) | |
download | meson-c17ed429be9575a99d893a31cd7bf32dc428ede9.zip meson-c17ed429be9575a99d893a31cd7bf32dc428ede9.tar.gz meson-c17ed429be9575a99d893a31cd7bf32dc428ede9.tar.bz2 |
ci: Retry if dub fetch failed
Diffstat (limited to 'ci')
-rwxr-xr-x | ci/ciimage/build.py | 12 | ||||
-rw-r--r-- | ci/ciimage/common.sh | 22 | ||||
-rwxr-xr-x | ci/ciimage/eoan/install.sh | 6 | ||||
-rwxr-xr-x | ci/ciimage/eoan/test.sh | 12 | ||||
-rwxr-xr-x | ci/ciimage/opensuse/install.sh | 6 |
5 files changed, 50 insertions, 8 deletions
diff --git a/ci/ciimage/build.py b/ci/ciimage/build.py index bc4ec1c..5e25e36 100755 --- a/ci/ciimage/build.py +++ b/ci/ciimage/build.py @@ -33,6 +33,8 @@ class BuilderBase(): self.data_dir = data_dir self.temp_dir = temp_dir + self.common_sh = self.data_dir.parent / 'common.sh' + self.common_sh = self.common_sh.resolve(strict=True) self.validate_data_dir() self.image_def = ImageDef(self.data_dir) @@ -76,9 +78,10 @@ class Builder(BuilderBase): out_data = textwrap.dedent(f'''\ FROM {self.image_def.base_image} - ADD install.sh /usr/sbin/docker-do-install - ADD env_vars.sh /env_vars.sh - RUN docker-do-install + ADD install.sh /ci/install.sh + ADD common.sh /ci/common.sh + ADD env_vars.sh /ci/env_vars.sh + RUN /ci/install.sh ''') out_file.write_text(out_data) @@ -87,6 +90,7 @@ class Builder(BuilderBase): # copy files for i in self.data_dir.iterdir(): shutil.copy(str(i), str(self.temp_dir)) + shutil.copy(str(self.common_sh), str(self.temp_dir)) self.gen_bashrc() self.gen_dockerfile() @@ -149,7 +153,7 @@ class ImageTester(BuilderBase): test_cmd = [ self.docker, 'run', '--rm', '-t', 'meson_test_image', - '/usr/bin/bash', '-c', 'source /env_vars.sh; cd meson; ./run_tests.py' + '/usr/bin/bash', '-c', 'source /ci/env_vars.sh; cd meson; ./run_tests.py' ] if subprocess.run(test_cmd).returncode != 0: raise RuntimeError('Running tests failed') diff --git a/ci/ciimage/common.sh b/ci/ciimage/common.sh new file mode 100644 index 0000000..c8940df --- /dev/null +++ b/ci/ciimage/common.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +### +### Common functions for CI builder files. +### All functions can be accessed in install.sh via: +### +### $ source /ci/common.sh +### + +set -e + +dub_fetch() { + set +e + for (( i=1; i<=24; ++i )); do + dub fetch "$@" + (( $? == 0 )) && break + + echo "Dub Fetch failed. Retrying in $((i*5))s" + sleep $((i*5)) + done + set -e +} diff --git a/ci/ciimage/eoan/install.sh b/ci/ciimage/eoan/install.sh index 7bbc6e6..4b3b746 100755 --- a/ci/ciimage/eoan/install.sh +++ b/ci/ciimage/eoan/install.sh @@ -2,6 +2,8 @@ set -e +source /ci/common.sh + export DEBIAN_FRONTEND=noninteractive export LANG='C.UTF-8' export DC=gdc @@ -42,9 +44,9 @@ eatmydata apt-get -y install --no-install-recommends wine-stable # Wine is spec eatmydata python3 -m pip install hotdoc codecov jsonschema # dub stuff -dub fetch urld +dub_fetch urld dub build urld --compiler=gdc -dub fetch dubtestproject +dub_fetch dubtestproject dub build dubtestproject:test1 --compiler=ldc2 dub build dubtestproject:test2 --compiler=ldc2 diff --git a/ci/ciimage/eoan/test.sh b/ci/ciimage/eoan/test.sh new file mode 100755 index 0000000..d00df6f --- /dev/null +++ b/ci/ciimage/eoan/test.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -e + +testFN() { + set +e + false +} + +testFN +false +exit 0
\ No newline at end of file diff --git a/ci/ciimage/opensuse/install.sh b/ci/ciimage/opensuse/install.sh index 33eb6a1..5e35ef7 100755 --- a/ci/ciimage/opensuse/install.sh +++ b/ci/ciimage/opensuse/install.sh @@ -2,6 +2,8 @@ set -e +source /ci/common.sh + pkgs=( python3-setuptools python3-wheel python3-pip python3-pytest-xdist python3 ninja make git autoconf automake patch python3-Cython python3-jsonschema @@ -36,9 +38,9 @@ chmod +x /env_vars.sh source /env_vars.sh -dub fetch urld +dub_fetch urld dub build urld --compiler=dmd -dub fetch dubtestproject +dub_fetch dubtestproject dub build dubtestproject:test1 --compiler=dmd dub build dubtestproject:test2 --compiler=dmd |