aboutsummaryrefslogtreecommitdiff
path: root/ci
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2020-04-02 12:40:56 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2020-04-02 12:40:56 +0200
commitc17ed429be9575a99d893a31cd7bf32dc428ede9 (patch)
treeb6bcce05a2d34b6fe85961768c6597d27f0c3157 /ci
parente6451c74729662c8bdefeb0f3fe4bd90e49f100f (diff)
downloadmeson-c17ed429be9575a99d893a31cd7bf32dc428ede9.zip
meson-c17ed429be9575a99d893a31cd7bf32dc428ede9.tar.gz
meson-c17ed429be9575a99d893a31cd7bf32dc428ede9.tar.bz2
ci: Retry if dub fetch failed
Diffstat (limited to 'ci')
-rwxr-xr-xci/ciimage/build.py12
-rw-r--r--ci/ciimage/common.sh22
-rwxr-xr-xci/ciimage/eoan/install.sh6
-rwxr-xr-xci/ciimage/eoan/test.sh12
-rwxr-xr-xci/ciimage/opensuse/install.sh6
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