From 3458d7369246f83f26f802bf9d9827c67cf40f69 Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Tue, 29 Aug 2017 12:35:52 +0000 Subject: .gitlab-ci.yml: Avoid pulling artifacts for every BuildStream build We shouldn't download artifacts to the CI workers every time somebody pushes just to throw them away again. This should speed up no-op builds. The functionality is implemented in two shell scripts. Context is here: https://gitlab.com/BuildStream/buildstream/issues/77 It would be possible to do this with a single script, but I wanted to avoid doing any argument parsing code in shell. --- scripts/bst-build-or-show | 16 ++++++++++++++++ scripts/bst-cross-build-or-show | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100755 scripts/bst-build-or-show create mode 100755 scripts/bst-cross-build-or-show (limited to 'scripts') diff --git a/scripts/bst-build-or-show b/scripts/bst-build-or-show new file mode 100755 index 00000000..7a8a8ecc --- /dev/null +++ b/scripts/bst-build-or-show @@ -0,0 +1,16 @@ +#!/bin/bash +# This script runs a BuildStream build for a given element, unless there +# is a suitable artifact already in the remote cache in which case it just +# runs `bst show`. +# +# It is intended for use by on-demand CI workers. If we just call `bst build` +# and there is nothing to build then the CI worker will pull all of the remote +# artifacts into a local cache, which will probably then be discarded anyway. + +set -eu +bst_target="$1" +if [ "$(bst show $bst_target --deps none --format '%{state}')" == 'cached' ]; then + bst --colors show $bst_target +else + bst --colors build $bst_target +fi diff --git a/scripts/bst-cross-build-or-show b/scripts/bst-cross-build-or-show new file mode 100755 index 00000000..3be2b482 --- /dev/null +++ b/scripts/bst-cross-build-or-show @@ -0,0 +1,17 @@ +#!/bin/bash +# This script runs a BuildStream cross-build for a given element, unless there +# is a suitable artifact already in the remote cache in which case it just +# runs `bst show`. +# +# It is intended for use by on-demand CI workers. If we just call `bst build` +# and there is nothing to build then the CI worker will pull all of the remote +# artifacts into a local cache, which will probably then be discarded anyway. + +set -eu +bst_target_arch="$1" +bst_target="$2" +if [ "$(bst --target-arch=$bst_target_arch show $bst_target --deps none --format '%{state}')" == 'cached' ]; then + bst --colors --target-arch="$bst_target_arch" show $bst_target +else + bst --colors --target-arch="$bst_target_arch" build $bst_target +fi -- cgit v1.2.1