From e899d479c9578ee5a7743e72172595d95ca1d43a Mon Sep 17 00:00:00 2001 From: Rafi Einstein Date: Wed, 31 Mar 2021 11:32:45 +0300 Subject: [PATCH 1/4] CircleCI: added QA automation (#660) (cherry picked from commit 5045c12709a49349085e599349da3e6483a208b7) --- .circleci/config.yml | 51 ++++++++++++++++++--- Dockerfile | 8 ++-- Dockerfile.gpu | 14 +++--- Dockerfile.gpu-test | 7 ++- opt/pack.sh | 3 +- opt/readies | 2 +- opt/system-setup.py | 20 ++++---- tests/qa/RS_VERSIONS | 4 ++ tests/qa/nightly.json | 22 +++++++++ tests/qa/release.json | 28 ++++++++++++ tests/qa/run | 103 ++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 227 insertions(+), 35 deletions(-) create mode 100644 tests/qa/RS_VERSIONS create mode 100644 tests/qa/nightly.json create mode 100644 tests/qa/release.json create mode 100755 tests/qa/run diff --git a/.circleci/config.yml b/.circleci/config.yml index ec4c763a0..b3fe1e7a9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -167,7 +167,7 @@ jobs: build-and-test: docker: - - image: redisfab/rmbuilder:6.0.9-x64-buster + - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - build-steps: platform: debian @@ -183,7 +183,7 @@ jobs: coverage: docker: - - image: redisfab/rmbuilder:6.0.9-x64-buster + - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - abort_for_docs - checkout @@ -217,7 +217,7 @@ jobs: type: string default: "CLUSTER=0 AOF=0" docker: - - image: redisfab/rmbuilder:6.0.9-x64-buster + - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - abort_for_docs - checkout @@ -325,7 +325,7 @@ jobs: location: type: string docker: - - image: redisfab/rmbuilder:6.0.9-x64-buster + - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - abort_for_docs - early_return_for_forked_pull_requests @@ -342,7 +342,7 @@ jobs: deploy-snapshot: docker: - - image: redisfab/rmbuilder:6.0.9-x64-buster + - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - abort_for_docs - early_return_for_forked_pull_requests @@ -365,7 +365,7 @@ jobs: deploy-release: docker: - - image: redisfab/rmbuilder:6.0.9-x64-buster + - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - abort_for_docs - early_return_for_forked_pull_requests @@ -380,6 +380,26 @@ jobs: aws s3 cp --no-progress $f s3://redismodules/$PACKAGE_NAME/ --acl public-read done + release-automation: + docker: + - image: redisfab/rmbuilder:6.2.1-x64-buster + steps: + - checkout + - setup-automation + - run: + name: Run QA Automation + command: MODULE_VERSION=$CIRCLE_TAG VERBOSE=1 TEST=release ./tests/qa/run + + nightly-automation: + docker: + - image: redisfab/rmbuilder:6.2.1-x64-buster + steps: + - checkout + - setup-automation + - run: + name: Run QA Automation + command: MODULE_VERSION=$CIRCLE_BRANCH VERBOSE=1 TEST=nightly QUICK=1 ./tests/qa/run + on-any-branch: &on-any-branch filters: @@ -408,6 +428,17 @@ on-integ-branch: &on-integ-branch only: - master - /^\d+\.\d+.*$/ + - /^feature-.*$/ + tags: + ignore: /.*/ + +not-on-integ-branch: ¬-on-integ-branch + filters: + branches: + ignore: + - master + - /^\d+\.\d+.*$/ + - /^feature-.*$/ tags: ignore: /.*/ @@ -424,6 +455,7 @@ on-integ-and-version-tags: &on-integ-and-version-tags only: - master - /^\d+\.\d+.*$/ + - /^feature-.*$/ tags: only: /^v[0-9].*/ @@ -493,6 +525,11 @@ workflows: context: common <<: *after-platform-builds <<: *on-version-tags + - release-automation: + context: common + <<: *on-version-tags + requires: + - deploy-release nightly: triggers: @@ -504,3 +541,5 @@ workflows: jobs: - build-macos: <<: *never # temporarily disabled + - nightly-automation: + context: common diff --git a/Dockerfile b/Dockerfile index 7e9fb6e3a..2aa3ab013 100755 --- a/Dockerfile +++ b/Dockerfile @@ -40,20 +40,18 @@ RUN if [ "$DEPS_ARGS" = "" ]; then ./get_deps.sh cpu; else env $DEPS_ARGS ./get_ ARG BUILD_ARGS="" ADD ./ /build -RUN bash -c "set -e ;\ - . ./opt/readies/bin/sourced ./profile.d ;\ - make -C opt build $BUILD_ARGS SHOW=1" +RUN bash -l -c "make -C opt build $BUILD_ARGS SHOW=1" ARG PACK ARG TEST RUN mkdir -p bin/artifacts RUN set -e ;\ - if [ "$PACK" = "1" ]; then make -C opt pack; fi + if [ "$PACK" = "1" ]; then bash -l -c "make -C opt pack"; fi RUN set -e ;\ if [ "$TEST" = "1" ]; then \ - TEST= make -C opt test $BUILD_ARGS NO_LFS=1 ;\ + bash -l -c "TEST= make -C opt test $BUILD_ARGS NO_LFS=1" ;\ if [[ -d test/logs ]]; then \ tar -C test/logs -czf bin/artifacts/test-logs-cpu.tgz . ;\ fi ;\ diff --git a/Dockerfile.gpu b/Dockerfile.gpu index 3ec0d776a..a8a833773 100644 --- a/Dockerfile.gpu +++ b/Dockerfile.gpu @@ -52,23 +52,21 @@ RUN if [ "$DEPS_ARGS" = "" ]; then ./get_deps.sh gpu; else env $DEPS_ARGS ./get_ ARG BUILD_ARGS="" ADD ./ /build -RUN bash -c "set -e ;\ - . ./opt/readies/bin/sourced ./profile.d ;\ - make -C opt build GPU=1 $BUILD_ARGS SHOW=1" +RUN bash -l -c "make -C opt build GPU=1 $BUILD_ARGS SHOW=1" ARG PACK ARG TEST RUN mkdir -p bin/artifacts RUN set -e ;\ - if [ "$PACK" = "1" ]; then make -C opt pack GPU=1; fi + if [ "$PACK" = "1" ]; then bash -l -c "make -C opt pack GPU=1"; fi RUN set -e ;\ if [ "$TEST" = "1" ]; then \ - TEST= make -C opt test GPU=1 $BUILD_ARGS NO_LFS=1 ;\ - if [[ -d test/logs ]]; then \ - tar -C test/logs -czf bin/artifacts/test-logs-gpu.tgz . ;\ - fi ;\ + bash -l -c "TEST= make -C opt test GPU=1 $BUILD_ARGS NO_LFS=1" ;\ + if [[ -d test/logs ]]; then \ + tar -C test/logs -czf bin/artifacts/test-logs-gpu.tgz . ;\ + fi ;\ fi #---------------------------------------------------------------------------------------------- diff --git a/Dockerfile.gpu-test b/Dockerfile.gpu-test index 6d7c45ca8..8c5b1fa7b 100644 --- a/Dockerfile.gpu-test +++ b/Dockerfile.gpu-test @@ -57,15 +57,14 @@ ARG BUILD_ARGS="" ADD ./ /build RUN set -e ;\ . venv/bin/activate ;\ - . ./opt/readies/bin/sourced ./profile.d ;\ - make -C opt build GPU=1 $BUILD_ARGS SHOW=1 + bash -l -c "make -C opt build GPU=1 $BUILD_ARGS SHOW=1" ARG PACK RUN set -e ;\ if [[ $PACK == 1 ]]; then \ - . venv/bin/activate ;\ - make -C opt pack GPU=1 VERBOSE=1 ;\ + . venv/bin/activate ;\ + bash -l -c "make -C opt pack GPU=1 VERBOSE=1" ;\ fi RUN git remote set-url origin https://github.com/RedisAI/RedisAI diff --git a/opt/pack.sh b/opt/pack.sh index 0d85ed96a..1a92470d7 100755 --- a/opt/pack.sh +++ b/opt/pack.sh @@ -50,7 +50,8 @@ RAMP_PROG="python3 -m RAMP.ramp" BINDIR=$(realpath $BINDIR) INSTALL_DIR=$(realpath $INSTALL_DIR) -. $READIES/enable-utf8 +$READIES/enable-utf8 +source /etc/profile.d/utf8.sh export ARCH=$($READIES/platform --arch) export OS=$($READIES/platform --os) diff --git a/opt/readies b/opt/readies index f459039a4..188333311 160000 --- a/opt/readies +++ b/opt/readies @@ -1 +1 @@ -Subproject commit f459039a42c686c75476a702c60ad9ad3b1dd7da +Subproject commit 1883333112c650381e3514a022943af3eb58d99b diff --git a/opt/system-setup.py b/opt/system-setup.py index a0437a0bb..07fdd50eb 100755 --- a/opt/system-setup.py +++ b/opt/system-setup.py @@ -5,8 +5,8 @@ import argparse HERE = os.path.abspath(os.path.dirname(__file__)) -READIES = os.path.join(HERE, "readies") ROOT = os.path.abspath(os.path.join(HERE, "..")) +READIES = os.path.join(ROOT, "opt/readies") sys.path.insert(0, READIES) import paella @@ -21,25 +21,27 @@ def common_first(self): self.pip_install("wheel") self.install("git unzip patchelf") - self.install("coreutils") # for realpath + if self.osnick != 'centos8': + self.install("coreutils") # for realpath def debian_compat(self): + self.run("%s/bin/enable-utf8" % READIES) + self.run("%s/bin/getgcc" % READIES) self.install("gawk") - self.install("build-essential") self.install("libssl-dev") self.install("python3-regex") - self.install("python3-psutil python3-networkx python3-numpy") + self.install("python3-networkx python3-numpy") if self.platform.is_arm(): self.install("python3-dev") # python3-skimage self.install("libmpich-dev libopenblas-dev") # for libtorch self.install_git_lfs_on_linux() def redhat_compat(self): - self.install("redhat-lsb-core") self.run("%s/bin/enable-utf8" % READIES) + self.run("%s/bin/getepel" % READIES) + self.install("redhat-lsb-core") self.run("%s/bin/getgcc --modern" % READIES) - # self.install("llvm-toolset-7") if self.arch == 'x64': self.install_linux_gnu_tar() @@ -47,17 +49,15 @@ def redhat_compat(self): if not self.dist == "amzn": self.install("epel-release") self.install("python3-devel libaec-devel") - self.install("python36-psutil") else: self.run("amazon-linux-extras install epel", output_on_error=True) self.install("python3-devel") - self.pip_install("psutil") self.install_git_lfs_on_linux() def fedora(self): - self.group_install("'Development Tools'") - self.install("python3 python3-psutil python3-networkx") + self.run("%s/bin/getepel" % READIES) + self.install("python3-networkx") self.install_git_lfs_on_linux() def linux_last(self): diff --git a/tests/qa/RS_VERSIONS b/tests/qa/RS_VERSIONS new file mode 100644 index 000000000..a0cdbfdb3 --- /dev/null +++ b/tests/qa/RS_VERSIONS @@ -0,0 +1,4 @@ +6.0.12-41 +5.4.14-37 +6.0.8-30 +100.0.0-2199 diff --git a/tests/qa/nightly.json b/tests/qa/nightly.json new file mode 100644 index 000000000..1884d0477 --- /dev/null +++ b/tests/qa/nightly.json @@ -0,0 +1,22 @@ +{ + "service_id": "single_module_test_cycle", + "name": "redisai automation-testing", + "properties": { + "sut_version": "master", + "email_recipients": "redisaidev-aaaacob2o7eeecrhkqwua77kku@redislabs.slack.com", + "sut_environments": [], + "tools_environment": {}, + "modules_version": "master", + "test_names_modules": [ + "{{RS_MODULE}}" + ], + "cycle_environments_setup": [ + { + "teardown": true, + "name": "bionic-amd64-aws", + "concurrency": 1, + "module_url": "http://redismodules.s3.amazonaws.com/{{RS_MODULE_FILE_PREFIX}}/snapshots/{{RS_MODULE_FILE_PREFIX}}-cpu.linux-bionic-x64.master.zip" + } + ] + } +} diff --git a/tests/qa/release.json b/tests/qa/release.json new file mode 100644 index 000000000..5809fafb6 --- /dev/null +++ b/tests/qa/release.json @@ -0,0 +1,28 @@ +{ + "service_id": "single_module_test_cycle", + "name": "redisai automation-testing", + "properties": { + "sut_version": "{{RS_VERSION}}", + "email_recipients": "redisaidev-aaaacob2o7eeecrhkqwua77kku@redislabs.slack.com", + "sut_environments": [], + "tools_environment": {}, + "modules_version": "{{MODULE_VERSION}}", + "test_names_modules": [ + "{{RS_MODULE}}" + ], + "cycle_environments_setup": [ + { + "teardown": true, + "name": "xenial-amd64-aws", + "concurrency": 1, + "module_url": "http://redismodules.s3.amazonaws.com/{{RS_MODULE_FILE_PREFIX}}/{{RS_MODULE_FILE_PREFIX}}-cpu.linux-xenial-x64.{{MODULE_VERSION}}.zip" + }, + { + "teardown": true, + "name": "bionic-amd64-aws", + "concurrency": 1, + "module_url": "http://redismodules.s3.amazonaws.com/{{RS_MODULE_FILE_PREFIX}}/{{RS_MODULE_FILE_PREFIX}}-cpu.linux-bionic-x64.{{MODULE_VERSION}}.zip" + } + ] + } +} diff --git a/tests/qa/run b/tests/qa/run new file mode 100755 index 000000000..4a113b1c9 --- /dev/null +++ b/tests/qa/run @@ -0,0 +1,103 @@ +#!/bin/bash + +HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +ROOT=$(cd $HERE/../.. && pwd) +READIES=$ROOT/opt/readies + +(( VERBOSE > 1 )) && { set -x; PS4='$LINENO: '; } + +if [[ $1 == --help || $1 == help ]]; then + cat <<-END + Invoke QA Automation tests + + [ARGVARS...] run [--help|help] + + Argument variables: + QA_AUTOMATION_USERNAME=name QA automation (Opereto) username + QA_AUTOMATION_PASS=pass QA automation (Opereto) password + TEST=name Name of .json parameters file + MODULE_VERSION=ver Module version to test. Default: master + NOP=1 Do not execute automation command + VERBOSE=N Set verbosity level (N=1,2) + QUICK=1 Only test one RS version + + Other configuration: + RS_VERSIONS file includes Redis Enterprive versions for release tests. + + END + exit 0 +fi + +export RS_MODULE=RedisAI +export RS_MODULE_FILE_PREFIX=redisai-cpu + +if [[ -z $QA_AUTOMATION_USERNAME && $NOP != 1 ]]; then + echo "Variable QA_AUTOMATION_USERNAME is undefined." >&2 + exit 1 +fi +if [[ -z $QA_AUTOMATION_PASS && $NOP != 1 ]]; then + echo "Variable QA_AUTOMATION_PASS is undefined." >&2 + exit 1 +fi + +export TEST=${TEST:-release} +if [[ ! -f $HERE/$TEST.json ]]; then + echo "Invalid TEST name: $TEST" >&2 + exit 1 +fi + +run_test() { + export RS_VERSION=$1 + + if [[ -z $MODULE_VERSION ]]; then + export MODULE_VERSION=master + else + export MODULE_VERSION=$(echo "$MODULE_VERSION" | sed 's/^v\(.*\)/\1/') + fi + + results() { + echo "$JSON" | jq "$1" | cut -d\" -f2 + } + + cd $HERE + + json_in=$(mktemp /tmp/$TEST.json.XXXX) + $READIES/bin/xtx -e RS_MODULE -e RS_MODULE_FILE_PREFIX -e MODULE_VERSION -e RS_VERSION $TEST.json > $json_in + (( VERBOSE >= 1 )) && cat $json_in + + if [[ $NOP == 1 ]]; then + echo "Testing RS $RS_VERSION" + return 0 + fi + + JSON=$(curl -sk \ + -u "$QA_AUTOMATION_USERNAME":"$QA_AUTOMATION_PASS" \ + -X POST -H "Content-Type: application/json" \ + -d @$json_in \ + https://qa-automation-center.redislabs.com/processes 2>&1) + rc=$? + rm $json_in + status=$(results .status) + if [[ $rc == 0 && $status == success ]]; then + id=$(results .data[0]) + echo "Tests running on $MODULE_VERSION for RS $RS_VERSION" + echo "Results: https://qa-automation-center.redislabs.com/ui#dashboard/flow/$id" + return 0 + else + err=$(results .message) + echo "Failed to run tests on $MODULE_VERSION for RS $RS_VERSION: $err" + return 1 + fi +} + +rc=0 +if [[ $QUICK == 1 ]]; then + RS_VERSIONS=$(cat $HERE/RS_VERSIONS | head -1) +else + RS_VERSIONS=$(cat $HERE/RS_VERSIONS) +fi +for RS_VERSION in $RS_VERSIONS; do + run_test $RS_VERSION + [[ $? != 0 && $rc == 0 ]] && rc=$? +done +exit $rc From eefceebd6397332dee1ddf5808e5e3e5c8219e91 Mon Sep 17 00:00:00 2001 From: Rafi Einstein Date: Thu, 1 Apr 2021 12:15:40 +0300 Subject: [PATCH 2/4] CircleCI fixes (#667) --- .circleci/config.yml | 63 +++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b3fe1e7a9..5535b8e61 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -35,14 +35,35 @@ commands: - setup_remote_docker: docker_layer_caching: true + relocate-docker-storage: + steps: + - run: + name: Relocate docker overlay2 dir + command: | + sudo systemctl stop docker + sudo mkdir -p /var2/lib/docker + sudo mv /var/lib/docker/overlay2 /var2/lib/docker + sudo mkdir /var/lib/docker/overlay2 + sudo mount --bind /var2/lib/docker/overlay2 /var/lib/docker/overlay2 + sudo systemctl start docker + setup-automation: steps: - run: name: Setup automation command: | + git submodule update --init opt/readies ./opt/readies/bin/getpy3 ./opt/system-setup.py + setup-build-system: + steps: + - setup-automation + - run: + name: Setup build system + command: | + ./opt/system-setup.py + build-steps: parameters: platform: @@ -57,7 +78,7 @@ commands: keys: - v1-dependencies-{{ checksum "get_deps.sh" }} # If no exact match is found will get dependencies from source - - setup-automation + - setup-build-system - run: name: Install dependencies command: | @@ -98,28 +119,18 @@ commands: steps: - abort_for_docs - checkout + - relocate-docker-storage - run: - name: Relocate docker overlay2 dir - command: | - sudo systemctl stop docker - sudo mkdir -p /var2/lib/docker - sudo mv /var/lib/docker/overlay2 /var2/lib/docker - sudo mkdir /var/lib/docker/overlay2 - sudo mount --bind /var2/lib/docker/overlay2 /var/lib/docker/overlay2 - sudo systemctl start docker - - run: - name: Setup - command: | - git submodule update --init --recursive - ./opt/readies/bin/getpy3 + name: Submodule checkout + command: git submodule update --init --recursive + - setup-automation - run: name: Build for platform command: | - docker login -u redisfab -p $DOCKER_REDISFAB_PWD pushd opt/build/docker for osnick in bionic xenial; do - make CPU=1 OSNICK=$osnick ARTIFACTS=1 VERBOSE=1 build publish - make GPU=1 OSNICK=$osnick ARTIFACTS=1 VERBOSE=1 build publish + make CPU=1 OSNICK=$osnick ARTIFACTS=1 VERBOSE=1 build + make GPU=1 OSNICK=$osnick ARTIFACTS=1 VERBOSE=1 build done popd > /dev/null logstar=bin/artifacts/tests-logs-cpu.tgz @@ -128,6 +139,16 @@ commands: if [[ -e $logstar ]]; then tar -C $logsdir -xzf $logstar; fi (cd bin/artifacts; tar -cf snapshots.tar snapshots/) no_output_timeout: 40m + - early_return_for_forked_pull_requests + - run: + name: Build for platform (publish) + command: | + docker login -u redisfab -p $DOCKER_REDISFAB_PWD + cd opt/build/docker + for osnick in bionic xenial; do + make CPU=1 OSNICK=$osnick VERBOSE=1 publish + make GPU=1 OSNICK=$osnick VERBOSE=1 publish + done - persist_to_workspace: root: bin/ paths: @@ -159,7 +180,7 @@ jobs: - run: name: Submodule checkout command: git submodule update --init --recursive - - setup-automation + - setup-build-system - run: name: lint command: | @@ -194,7 +215,7 @@ jobs: keys: - build-dependencies-{{ checksum "get_deps.sh" }} # If no exact match is found will get dependencies from source - - setup-automation + - setup-build-system - run: name: Install dependencies command: | @@ -228,11 +249,11 @@ jobs: keys: - build-dependencies-{{ checksum "get_deps.sh" }} # If no exact match is found will get dependencies from source - - setup-automation + - setup-build-system - run: name: Install dependencies command: | - ./opt/readies/bin/getredis -v 6 --valgrind --force + ./opt/readies/bin/getredis -v 6.0 --valgrind --force ./get_deps.sh cpu - run: name: Build for valgrind From 9078fdd71a4cda981e42c473189ca391ad1cdfe9 Mon Sep 17 00:00:00 2001 From: Rafi Einstein Date: Thu, 1 Apr 2021 14:01:15 +0300 Subject: [PATCH 3/4] More CircleCI fixes (#668) --- .circleci/config.yml | 43 ++++++++++++++----------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5535b8e61..ba6929a5b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -54,7 +54,6 @@ commands: command: | git submodule update --init opt/readies ./opt/readies/bin/getpy3 - ./opt/system-setup.py setup-build-system: steps: @@ -64,16 +63,20 @@ commands: command: | ./opt/system-setup.py + checkout-all: + steps: + - checkout + - run: + name: Checkout submodules + command: git submodule update --init --recursive + build-steps: parameters: platform: type: string steps: - abort_for_docs - - checkout - - run: - name: Submodule checkout - command: git submodule update --init --recursive + - checkout-all - restore_cache: keys: - v1-dependencies-{{ checksum "get_deps.sh" }} @@ -118,11 +121,8 @@ commands: platforms-build-steps: steps: - abort_for_docs - - checkout + - checkout-all - relocate-docker-storage - - run: - name: Submodule checkout - command: git submodule update --init --recursive - setup-automation - run: name: Build for platform @@ -176,10 +176,7 @@ jobs: docker: - image: redislabsmodules/llvm-toolset:latest steps: - - checkout - - run: - name: Submodule checkout - command: git submodule update --init --recursive + - checkout-all - setup-build-system - run: name: lint @@ -207,10 +204,7 @@ jobs: - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - abort_for_docs - - checkout - - run: - name: Submodule checkout - command: git submodule update --init --recursive + - checkout-all - restore_cache: keys: - build-dependencies-{{ checksum "get_deps.sh" }} @@ -241,10 +235,7 @@ jobs: - image: redisfab/rmbuilder:6.2.1-x64-buster steps: - abort_for_docs - - checkout - - run: - name: Submodule checkout - command: git submodule update --init --recursive + - checkout-all - restore_cache: keys: - build-dependencies-{{ checksum "get_deps.sh" }} @@ -283,10 +274,7 @@ jobs: image: cimg/base:2020.01 steps: - abort_for_docs - - checkout - - run: - name: Submodule checkout - command: git submodule update --init --recursive + - checkout-all - run: name: Checkout LFS command: | @@ -315,10 +303,7 @@ jobs: image: ubuntu-1604-cuda-11.1:202012-01 steps: - abort_for_docs - - checkout - - run: - name: Submodule checkout - command: git submodule update --init --recursive + - checkout-all - run: name: Relocate docker overlay2 dir command: | From 3a846b9fe32bb4c895ad6fddae98044c133090f3 Mon Sep 17 00:00:00 2001 From: rafie Date: Sun, 18 Apr 2021 12:00:53 +0300 Subject: [PATCH 4/4] Updated readies --- opt/readies | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opt/readies b/opt/readies index 188333311..fee800c27 160000 --- a/opt/readies +++ b/opt/readies @@ -1 +1 @@ -Subproject commit 1883333112c650381e3514a022943af3eb58d99b +Subproject commit fee800c2781e18405e154adf25d422cdc3cc5461