Skip to content
This repository was archived by the owner on Aug 2, 2022. It is now read-only.

Commit 617cea2

Browse files
authored
Merge pull request #9748 from EOSIO/release/2.0.x
Merge release/2.0.x into master
2 parents 0d87dff + c5a0f8e commit 617cea2

File tree

76 files changed

+1790
-365
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+1790
-365
lines changed

.cicd/build.sh

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,48 @@
11
#!/bin/bash
22
set -eo pipefail
3+
[[ "$ENABLE_INSTALL" == 'true' ]] || echo '--- :evergreen_tree: Configuring Environment'
34
. ./.cicd/helpers/general.sh
4-
mkdir -p $BUILD_DIR
5-
CMAKE_EXTRAS="-DCMAKE_BUILD_TYPE='Release' -DENABLE_MULTIVERSION_PROTOCOL_TEST=true -DBUILD_MONGO_DB_PLUGIN=true"
6-
if [[ "$(uname)" == 'Darwin' && $FORCE_LINUX != true ]]; then
5+
mkdir -p "$BUILD_DIR"
6+
CMAKE_EXTRAS="-DCMAKE_BUILD_TYPE=\"Release\" -DENABLE_MULTIVERSION_PROTOCOL_TEST=\"true\" -DBUILD_MONGO_DB_PLUGIN=\"true\""
7+
if [[ "$(uname)" == 'Darwin' && "$FORCE_LINUX" != 'true' ]]; then
78
# You can't use chained commands in execute
89
if [[ "$GITHUB_ACTIONS" == 'true' ]]; then
9-
export PINNED=false
10+
export PINNED='false'
1011
fi
11-
[[ ! "$PINNED" == 'false' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE=$HELPERS_DIR/clang.make"
12-
cd $BUILD_DIR
13-
echo "cmake $CMAKE_EXTRAS .."
14-
cmake $CMAKE_EXTRAS ..
15-
echo "make -j$JOBS"
16-
make -j$JOBS
12+
[[ ! "$PINNED" == 'false' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE=\"$HELPERS_DIR/clang.make\""
13+
cd "$BUILD_DIR"
14+
echo '+++ :hammer_and_wrench: Building EOSIO'
15+
CMAKE_COMMAND="cmake $CMAKE_EXTRAS .."
16+
echo "$ $CMAKE_COMMAND"
17+
eval $CMAKE_COMMAND
18+
MAKE_COMMAND="make -j '$JOBS'"
19+
echo "$ $MAKE_COMMAND"
20+
eval $MAKE_COMMAND
21+
cd ..
1722
else # Linux
18-
ARGS=${ARGS:-"--rm --init -v $(pwd):$MOUNTED_DIR"}
19-
PRE_COMMANDS="cd $MOUNTED_DIR/build"
23+
ARGS=${ARGS:-"--rm --init -v \"\$(pwd):$MOUNTED_DIR\""}
24+
PRE_COMMANDS="cd \"$MOUNTED_DIR/build\""
2025
# PRE_COMMANDS: Executed pre-cmake
2126
# CMAKE_EXTRAS: Executed within and right before the cmake path (cmake CMAKE_EXTRAS ..)
22-
[[ ! "$IMAGE_TAG" =~ 'unpinned' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE=$MOUNTED_DIR/.cicd/helpers/clang.make"
27+
[[ ! "$IMAGE_TAG" =~ 'unpinned' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE=\"$MOUNTED_DIR/.cicd/helpers/clang.make\""
2328
if [[ "$IMAGE_TAG" == 'amazon_linux-2-unpinned' ]]; then
24-
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER='clang++' -DCMAKE_C_COMPILER='clang'"
29+
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER=\"clang++\" -DCMAKE_C_COMPILER=\"clang\""
2530
elif [[ "$IMAGE_TAG" == 'centos-7.7-unpinned' ]]; then
26-
PRE_COMMANDS="$PRE_COMMANDS && source /opt/rh/devtoolset-8/enable && source /opt/rh/rh-python36/enable"
27-
CMAKE_EXTRAS="$CMAKE_EXTRAS -DLLVM_DIR='/opt/rh/llvm-toolset-7.0/root/usr/lib64/cmake/llvm'"
31+
PRE_COMMANDS="$PRE_COMMANDS && source \"/opt/rh/devtoolset-8/enable\" && source \"/opt/rh/rh-python36/enable\""
32+
CMAKE_EXTRAS="$CMAKE_EXTRAS -DLLVM_DIR=\"/opt/rh/llvm-toolset-7.0/root/usr/lib64/cmake/llvm\""
2833
elif [[ "$IMAGE_TAG" == 'ubuntu-18.04-unpinned' ]]; then
29-
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER='clang++-7' -DCMAKE_C_COMPILER='clang-7' -DLLVM_DIR='/usr/lib/llvm-7/lib/cmake/llvm'"
34+
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER=\"clang++-7\" -DCMAKE_C_COMPILER=\"clang-7\" -DLLVM_DIR=\"/usr/lib/llvm-7/lib/cmake/llvm\""
3035
fi
31-
BUILD_COMMANDS="cmake $CMAKE_EXTRAS .. && make -j$JOBS"
36+
CMAKE_COMMAND="cmake \$CMAKE_EXTRAS .."
37+
MAKE_COMMAND="make -j $JOBS"
38+
BUILD_COMMANDS="echo \"+++ :hammer_and_wrench: Building EOSIO\" && echo \"$ $CMAKE_COMMAND\" && eval $CMAKE_COMMAND && echo \"$ $MAKE_COMMAND\" && eval $MAKE_COMMAND"
3239
# Docker Commands
3340
if [[ "$BUILDKITE" == 'true' ]]; then
3441
# Generate Base Images
35-
$CICD_DIR/generate-base-images.sh
36-
[[ "$ENABLE_INSTALL" == 'true' ]] && COMMANDS="cp -r $MOUNTED_DIR /root/eosio && cd /root/eosio/build &&"
42+
BASE_IMAGE_COMMAND="\"$CICD_DIR/generate-base-images.sh\""
43+
echo "$ $BASE_IMAGE_COMMAND"
44+
eval $BASE_IMAGE_COMMAND
45+
[[ "$ENABLE_INSTALL" == 'true' ]] && COMMANDS="cp -r \"$MOUNTED_DIR\" \"/root/eosio\" && cd \"/root/eosio/build\" &&"
3746
COMMANDS="$COMMANDS $BUILD_COMMANDS"
3847
[[ "$ENABLE_INSTALL" == 'true' ]] && COMMANDS="$COMMANDS && make install"
3948
elif [[ "$GITHUB_ACTIONS" == 'true' ]]; then
@@ -42,8 +51,18 @@ else # Linux
4251
else
4352
COMMANDS="$BUILD_COMMANDS"
4453
fi
45-
. $HELPERS_DIR/file-hash.sh $CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile
54+
. "$HELPERS_DIR/file-hash.sh" "$CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile"
4655
COMMANDS="$PRE_COMMANDS && $COMMANDS"
47-
echo "$ docker run $ARGS $(buildkite-intrinsics) $FULL_TAG bash -c \"$COMMANDS\""
48-
eval docker run $ARGS $(buildkite-intrinsics) $FULL_TAG bash -c \"$COMMANDS\"
49-
fi
56+
DOCKER_RUN="docker run $ARGS $(buildkite-intrinsics) --env CMAKE_EXTRAS='$CMAKE_EXTRAS' '$FULL_TAG' bash -c '$COMMANDS'"
57+
echo "$ $DOCKER_RUN"
58+
eval $DOCKER_RUN
59+
fi
60+
if [[ "$BUILDKITE" == 'true' && "$ENABLE_INSTALL" != 'true' ]]; then
61+
echo '--- :arrow_up: Uploading Artifacts'
62+
echo 'Compressing build directory.'
63+
tar -pczf 'build.tar.gz' build
64+
echo 'Uploading build directory.'
65+
buildkite-agent artifact upload 'build.tar.gz'
66+
echo 'Done uploading artifacts.'
67+
fi
68+
[[ "$ENABLE_INSTALL" == 'true' ]] || echo '--- :white_check_mark: Done!'

.cicd/docker-tag.sh

Lines changed: 67 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,71 @@
11
#!/bin/bash
22
set -eo pipefail
3-
echo '+++ :evergreen_tree: Configuring Environment'
4-
REPO='eosio/ci-contracts-builder'
3+
echo '--- :evergreen_tree: Configuring Environment'
4+
. ./.cicd/helpers/general.sh
55
PREFIX='base-ubuntu-18.04'
6-
IMAGE="$REPO:$PREFIX-$BUILDKITE_COMMIT-$PLATFORM_TYPE"
7-
SANITIZED_BRANCH=$(echo "$BUILDKITE_BRANCH" | sed 's.^/..' | tr '/' '_')
6+
SANITIZED_BRANCH=$(echo "$BUILDKITE_BRANCH" | sed 's.^/..' | sed 's/[:/]/_/g')
87
SANITIZED_TAG=$(echo "$BUILDKITE_TAG" | sed 's.^/..' | tr '/' '_')
9-
echo '+++ :arrow_down: Pulling Container'
10-
echo "Pulling \"$IMAGE\""
11-
docker pull "$IMAGE"
12-
echo '+++ :label: Tagging Container'
13-
docker tag "$IMAGE" "$REPO:$PREFIX-$SANITIZED_BRANCH"
14-
echo "Tagged \"$REPO:$PREFIX-$SANITIZED_BRANCH\"."
15-
[[ -z "$BUILDKITE_TAG" ]] || docker tag "$IMAGE" "$REPO:$PREFIX-$SANITIZED_TAG" && echo "Tagged \"$REPO:$PREFIX-$SANITIZED_TAG\"."
16-
echo '+++ :arrow_up: Pushing Container'
17-
docker push "$REPO:$PREFIX-$SANITIZED_BRANCH"
18-
[[ -z "$BUILDKITE_TAG" ]] || docker push "$REPO:$PREFIX-$SANITIZED_TAG"
19-
echo '+++ :put_litter_in_its_place: Cleaning Up'
20-
docker rmi "$REPO:$PREFIX-$SANITIZED_BRANCH"
21-
[[ -z "$BUILDKITE_TAG" || "$SANITIZED_BRANCH" == "$SANITIZED_TAG" ]] || docker rmi "$REPO:$PREFIX-$SANITIZED_TAG"
22-
docker rmi "$IMAGE"
8+
echo '$ echo ${#CONTRACT_REGISTRIES[*]} # array length'
9+
echo ${#CONTRACT_REGISTRIES[*]}
10+
echo '$ echo ${CONTRACT_REGISTRIES[*]} # array'
11+
echo ${CONTRACT_REGISTRIES[*]}
12+
# pull
13+
echo '+++ :arrow_down: Pulling Container(s)'
14+
for REGISTRY in ${CONTRACT_REGISTRIES[*]}; do
15+
if [[ ! -z "$REGISTRY" ]]; then
16+
echo "Pulling from '$REGISTRY'."
17+
IMAGE="$REGISTRY:$PREFIX-$BUILDKITE_COMMIT-$PLATFORM_TYPE"
18+
DOCKER_PULL_COMMAND="docker pull '$IMAGE'"
19+
echo "$ $DOCKER_PULL_COMMAND"
20+
eval $DOCKER_PULL_COMMAND
21+
fi
22+
done
23+
# tag
24+
echo '+++ :label: Tagging Container(s)'
25+
for REGISTRY in ${CONTRACT_REGISTRIES[*]}; do
26+
if [[ ! -z "$REGISTRY" ]]; then
27+
echo "Tagging for registry $REGISTRY."
28+
IMAGE="$REGISTRY:$PREFIX-$BUILDKITE_COMMIT-$PLATFORM_TYPE"
29+
DOCKER_TAG_COMMAND="docker tag '$IMAGE' '$REGISTRY:$PREFIX-$SANITIZED_BRANCH'"
30+
echo "$ $DOCKER_TAG_COMMAND"
31+
eval $DOCKER_TAG_COMMAND
32+
if [[ ! -z "$BUILDKITE_TAG" && "$SANITIZED_BRANCH" != "$SANITIZED_TAG" ]]; then
33+
DOCKER_TAG_COMMAND="docker tag '$IMAGE' '$REGISTRY:$PREFIX-$SANITIZED_TAG'"
34+
echo "$ $DOCKER_TAG_COMMAND"
35+
eval $DOCKER_TAG_COMMAND
36+
fi
37+
fi
38+
done
39+
# push
40+
echo '+++ :arrow_up: Pushing Container(s)'
41+
for REGISTRY in ${CONTRACT_REGISTRIES[*]}; do
42+
if [[ ! -z "$REGISTRY" ]]; then
43+
echo "Pushing to '$REGISTRY'."
44+
DOCKER_PUSH_COMMAND="docker push '$REGISTRY:$PREFIX-$SANITIZED_BRANCH'"
45+
echo "$ $DOCKER_PUSH_COMMAND"
46+
eval $DOCKER_PUSH_COMMAND
47+
if [[ ! -z "$BUILDKITE_TAG" && "$SANITIZED_BRANCH" != "$SANITIZED_TAG" ]]; then
48+
DOCKER_PUSH_COMMAND="docker push '$REGISTRY:$PREFIX-$SANITIZED_TAG'"
49+
echo "$ $DOCKER_PUSH_COMMAND"
50+
eval $DOCKER_PUSH_COMMAND
51+
fi
52+
fi
53+
done
54+
# cleanup
55+
echo '--- :put_litter_in_its_place: Cleaning Up'
56+
for REGISTRY in ${CONTRACT_REGISTRIES[*]}; do
57+
if [[ ! -z "$REGISTRY" ]]; then
58+
echo "Cleaning up from $REGISTRY."
59+
DOCKER_RMI_COMMAND="docker rmi '$REGISTRY:$PREFIX-$SANITIZED_BRANCH'"
60+
echo "$ $DOCKER_RMI_COMMAND"
61+
eval $DOCKER_RMI_COMMAND
62+
if [[ ! -z "$BUILDKITE_TAG" && "$SANITIZED_BRANCH" != "$SANITIZED_TAG" ]]; then
63+
DOCKER_RMI_COMMAND="docker rmi '$REGISTRY:$PREFIX-$SANITIZED_TAG'"
64+
echo "$ $DOCKER_RMI_COMMAND"
65+
eval $DOCKER_RMI_COMMAND
66+
fi
67+
DOCKER_RMI_COMMAND="docker rmi '$REGISTRY:$PREFIX-$BUILDKITE_COMMIT-$PLATFORM_TYPE'"
68+
echo "$ $DOCKER_RMI_COMMAND"
69+
eval $DOCKER_RMI_COMMAND
70+
fi
71+
done

.cicd/generate-base-images.sh

Lines changed: 86 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,96 @@
11
#!/bin/bash
22
set -eo pipefail
33
. ./.cicd/helpers/general.sh
4-
. $HELPERS_DIR/file-hash.sh $CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile
5-
# look for Docker image
6-
echo "+++ :mag_right: Looking for $FULL_TAG"
7-
ORG_REPO=$(echo $FULL_TAG | cut -d: -f1)
8-
TAG=$(echo $FULL_TAG | cut -d: -f2)
9-
EXISTS=$(curl -s -H "Authorization: Bearer $(curl -sSL "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${ORG_REPO}:pull" | jq --raw-output .token)" "https://registry.hub.docker.com/v2/${ORG_REPO}/manifests/$TAG")
4+
. "$HELPERS_DIR/file-hash.sh" "$CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile"
5+
# search for base image in docker registries
6+
echo '--- :docker: Build or Pull Base Image :minidisc:'
7+
echo "Looking for '$HASHED_IMAGE_TAG' container in our registries."
8+
EXISTS_ALL='true'
9+
EXISTS_DOCKER_HUB='false'
10+
EXISTS_ECR='false'
11+
for REGISTRY in ${CI_REGISTRIES[*]}; do
12+
if [[ ! -z "$REGISTRY" ]]; then
13+
MANIFEST_COMMAND="docker manifest inspect '$REGISTRY:$HASHED_IMAGE_TAG'"
14+
echo "$ $MANIFEST_COMMAND"
15+
set +e
16+
eval $MANIFEST_COMMAND
17+
MANIFEST_INSPECT_EXIT_STATUS="$?"
18+
set -eo pipefail
19+
if [[ "$MANIFEST_INSPECT_EXIT_STATUS" == '0' ]]; then
20+
if [[ "$(echo "$REGISTRY" | grep -icP '[.]amazonaws[.]com/')" != '0' ]]; then
21+
EXISTS_ECR='true'
22+
elif [[ "$(echo "$REGISTRY" | grep -icP 'docker[.]io/')" != '0' ]]; then
23+
EXISTS_DOCKER_HUB='true'
24+
fi
25+
else
26+
EXISTS_ALL='false'
27+
fi
28+
fi
29+
done
30+
# copy, if possible, since it is so much faster
31+
if [[ "$EXISTS_ECR" == 'false' && "$EXISTS_DOCKER_HUB" == 'true' && "$OVERWRITE_BASE_IMAGE" != 'true' && ! -z "$MIRROR_REGISTRY" ]]; then
32+
echo 'Attempting copy from Docker Hub to the mirror instead of a new base image build.'
33+
DOCKER_PULL_COMMAND="docker pull '$DOCKERHUB_CI_REGISTRY:$HASHED_IMAGE_TAG'"
34+
echo "$ $DOCKER_PULL_COMMAND"
35+
set +e
36+
eval $DOCKER_PULL_COMMAND
37+
DOCKER_PULL_EXIT_STATUS="$?"
38+
set -eo pipefail
39+
if [[ "$DOCKER_PULL_EXIT_STATUS" == '0' ]]; then
40+
echo 'Pull from Docker Hub worked! Pushing to mirror.'
41+
# tag
42+
DOCKER_TAG_COMMAND="docker tag '$DOCKERHUB_CI_REGISTRY:$HASHED_IMAGE_TAG' '$MIRROR_REGISTRY:$HASHED_IMAGE_TAG'"
43+
echo "$ $DOCKER_TAG_COMMAND"
44+
eval $DOCKER_TAG_COMMAND
45+
# push
46+
DOCKER_PUSH_COMMAND="docker push '$MIRROR_REGISTRY:$HASHED_IMAGE_TAG'"
47+
echo "$ $DOCKER_PUSH_COMMAND"
48+
eval $DOCKER_PUSH_COMMAND
49+
EXISTS_ALL='true'
50+
EXISTS_ECR='true'
51+
else
52+
echo 'Pull from Docker Hub failed, rebuilding base image from scratch.'
53+
fi
54+
fi
55+
# esplain yerself
56+
if [[ "$EXISTS_ALL" == 'false' ]]; then
57+
echo 'Building base image from scratch.'
58+
elif [[ "$OVERWRITE_BASE_IMAGE" == 'true' ]]; then
59+
echo "OVERWRITE_BASE_IMAGE is set to 'true', building from scratch and pushing to docker registries."
60+
elif [[ "$FORCE_BASE_IMAGE" == 'true' ]]; then
61+
echo "FORCE_BASE_IMAGE is set to 'true', building from scratch and NOT pushing to docker registries."
62+
fi
1063
# build, if neccessary
11-
if [[ $EXISTS =~ '404 page not found' || $EXISTS =~ 'manifest unknown' || $FORCE_BASE_IMAGE == true ]]; then # if we cannot pull the image, we build and push it first
12-
docker build --no-cache -t $FULL_TAG -f $CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile .
13-
if [[ $FORCE_BASE_IMAGE != true ]]; then
14-
docker push $FULL_TAG
64+
if [[ "$EXISTS_ALL" == 'false' || "$FORCE_BASE_IMAGE" == 'true' || "$OVERWRITE_BASE_IMAGE" == 'true' ]]; then # if we cannot pull the image, we build and push it first
65+
export DOCKER_BUILD_COMMAND="docker build --no-cache -t 'ci:$HASHED_IMAGE_TAG' -f '$CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile' ."
66+
echo "$ $DOCKER_BUILD_COMMAND"
67+
eval $DOCKER_BUILD_COMMAND
68+
if [[ "$FORCE_BASE_IMAGE" != 'true' || "$OVERWRITE_BASE_IMAGE" == 'true' ]]; then
69+
for REGISTRY in ${CI_REGISTRIES[*]}; do
70+
if [[ ! -z "$REGISTRY" ]]; then
71+
# tag
72+
DOCKER_TAG_COMMAND="docker tag 'ci:$HASHED_IMAGE_TAG' '$REGISTRY:$HASHED_IMAGE_TAG'"
73+
echo "$ $DOCKER_TAG_COMMAND"
74+
eval $DOCKER_TAG_COMMAND
75+
# push
76+
DOCKER_PUSH_COMMAND="docker push '$REGISTRY:$HASHED_IMAGE_TAG'"
77+
echo "$ $DOCKER_PUSH_COMMAND"
78+
eval $DOCKER_PUSH_COMMAND
79+
# clean up
80+
if [[ "$FULL_TAG" != "$REGISTRY:$HASHED_IMAGE_TAG" ]]; then
81+
DOCKER_RMI_COMMAND="docker rmi '$REGISTRY:$HASHED_IMAGE_TAG'"
82+
echo "$ $DOCKER_RMI_COMMAND"
83+
eval $DOCKER_RMI_COMMAND
84+
fi
85+
fi
86+
done
87+
DOCKER_RMI_COMMAND="docker rmi 'ci:$HASHED_IMAGE_TAG'"
88+
echo "$ $DOCKER_RMI_COMMAND"
89+
eval $DOCKER_RMI_COMMAND
1590
else
1691
echo "Base image creation successful. Not pushing...".
1792
exit 0
1893
fi
1994
else
2095
echo "$FULL_TAG already exists."
21-
fi
96+
fi

.cicd/generate-pipeline.sh

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ if [[ $PINNED == false ]]; then
1919
else
2020
export PLATFORM_TYPE="pinned"
2121
fi
22-
for FILE in $(ls $CICD_DIR/platforms/$PLATFORM_TYPE); do
22+
for FILE in $(ls "$CICD_DIR/platforms/$PLATFORM_TYPE"); do
2323
# skip mac or linux by not even creating the json block
2424
( [[ $SKIP_MAC == true ]] && [[ $FILE =~ 'macos' ]] ) && continue
2525
( [[ $SKIP_LINUX == true ]] && [[ ! $FILE =~ 'macos' ]] ) && continue
@@ -28,7 +28,7 @@ for FILE in $(ls $CICD_DIR/platforms/$PLATFORM_TYPE); do
2828
export SKIP_CONTRACT_BUILDER=${SKIP_CONTRACT_BUILDER:-true}
2929
export SKIP_PACKAGE_BUILDER=${SKIP_PACKAGE_BUILDER:-true}
3030
fi
31-
export FILE_NAME="$(echo $FILE | awk '{split($0,a,/\.(d|s)/); print a[1] }')"
31+
export FILE_NAME="$(echo "$FILE" | awk '{split($0,a,/\.(d|s)/); print a[1] }')"
3232
# macos-10.14
3333
# ubuntu-16.04
3434
export PLATFORM_NAME="$(echo $FILE_NAME | cut -d- -f1 | sed 's/os/OS/g')"
@@ -55,7 +55,7 @@ for FILE in $(ls $CICD_DIR/platforms/$PLATFORM_TYPE); do
5555
[[ $FILE_NAME =~ 'ubuntu' ]] && export ICON=':ubuntu:'
5656
[[ $FILE_NAME =~ 'centos' ]] && export ICON=':centos:'
5757
[[ $FILE_NAME =~ 'macos' ]] && export ICON=':darwin:'
58-
. $HELPERS_DIR/file-hash.sh $CICD_DIR/platforms/$PLATFORM_TYPE/$FILE # returns HASHED_IMAGE_TAG, etc
58+
. "$HELPERS_DIR/file-hash.sh" "$CICD_DIR/platforms/$PLATFORM_TYPE/$FILE" # returns HASHED_IMAGE_TAG, etc
5959
export PLATFORMS_JSON_ARRAY=$(echo $PLATFORMS_JSON_ARRAY | jq -c '. += [{
6060
"FILE_NAME": env.FILE_NAME,
6161
"PLATFORM_NAME": env.PLATFORM_NAME,
@@ -96,9 +96,7 @@ echo $PLATFORMS_JSON_ARRAY | jq -cr '.[]' | while read -r PLATFORM_JSON; do
9696
if [[ ! "$(echo "$PLATFORM_JSON" | jq -r .FILE_NAME)" =~ 'macos' ]]; then
9797
cat <<EOF
9898
- label: "$(echo "$PLATFORM_JSON" | jq -r .ICON) $(echo "$PLATFORM_JSON" | jq -r .PLATFORM_NAME_FULL) - Build"
99-
command:
100-
- "./.cicd/build.sh"
101-
- "tar -pczf build.tar.gz build && buildkite-agent artifact upload build.tar.gz"
99+
command: "./.cicd/build.sh"
102100
env:
103101
IMAGE_TAG: $(echo "$PLATFORM_JSON" | jq -r .FILE_NAME)
104102
PLATFORM_TYPE: $PLATFORM_TYPE
@@ -114,7 +112,6 @@ EOF
114112
command:
115113
- "git clone \$BUILDKITE_REPO eos && cd eos && $GIT_FETCH git checkout -f \$BUILDKITE_COMMIT && git submodule update --init --recursive"
116114
- "cd eos && ./.cicd/build.sh"
117-
- "cd eos && tar -pczf build.tar.gz build && buildkite-agent artifact upload build.tar.gz"
118115
plugins:
119116
- EOSIO/anka#v0.6.1:
120117
no-volume: true

.cicd/helpers/file-hash.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22
set -eo pipefail
3-
[[ -z $1 ]] && echo "Please provide the file to be hashed" && exit 1
4-
FILE_NAME=$(basename $1 | awk '{split($0,a,/\.(d|s)/); print a[1] }')
5-
export DETERMINED_HASH=$(sha1sum $1 | awk '{ print $1 }')
3+
[[ -z "$1" ]] && echo 'Please provide the file to be hashed as first argument.' && exit 1
4+
FILE_NAME="$(basename "$1" | awk '{split($0,a,/\.(d|s)/); print a[1] }')"
5+
export DETERMINED_HASH=$(sha1sum "$1" | awk '{ print $1 }')
66
export HASHED_IMAGE_TAG="eos-${FILE_NAME}-${DETERMINED_HASH}"
7-
export FULL_TAG="${IMAGE_NAME:-"eosio/ci"}:$HASHED_IMAGE_TAG"
7+
export FULL_TAG="${MIRROR_REGISTRY:-$DOCKERHUB_CI_REGISTRY}:$HASHED_IMAGE_TAG"

.cicd/helpers/general.sh

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,33 @@
11
export ROOT_DIR=$( dirname "${BASH_SOURCE[0]}" )/../..
2-
export BUILD_DIR=$ROOT_DIR/build
3-
export CICD_DIR=$ROOT_DIR/.cicd
4-
export HELPERS_DIR=$CICD_DIR/helpers
2+
export BUILD_DIR="$ROOT_DIR/build"
3+
export CICD_DIR="$ROOT_DIR/.cicd"
4+
export HELPERS_DIR="$CICD_DIR/helpers"
55
export JOBS=${JOBS:-"$(getconf _NPROCESSORS_ONLN)"}
6-
export MOUNTED_DIR='/workdir'
6+
export MOUNTED_DIR='/eos'
7+
export DOCKER_CLI_EXPERIMENTAL='enabled'
8+
export DOCKERHUB_CI_REGISTRY="docker.io/eosio/ci"
9+
export DOCKERHUB_CONTRACTS_REGISTRY="docker.io/eosio/ci-contracts-builder"
10+
export CI_REGISTRIES=("$DOCKERHUB_CI_REGISTRY" "$MIRROR_REGISTRY")
11+
export CONTRACT_REGISTRIES=("$DOCKERHUB_CONTRACTS_REGISTRY" "$MIRROR_REGISTRY")
712

813
# capitalize each word in a string
914
function capitalize()
1015
{
11-
if [[ ! $1 =~ 'mac' ]]; then # Don't capitalize mac
12-
echo $1 | awk '{$1=toupper(substr($1,1,1))substr($1,2)}1'
16+
if [[ ! "$1" =~ 'mac' ]]; then # Don't capitalize mac
17+
echo "$1" | awk '{$1=toupper(substr($1,1,1))substr($1,2)}1'
1318
else
14-
echo $1
19+
echo "$1"
1520
fi
1621
}
1722

1823
# load buildkite intrinsic environment variables for use in docker run
1924
function buildkite-intrinsics()
2025
{
2126
BK_ENV=''
22-
if [[ -f $BUILDKITE_ENV_FILE ]]; then
27+
if [[ -f "$BUILDKITE_ENV_FILE" ]]; then
2328
while read -r var; do
2429
BK_ENV="$BK_ENV --env ${var%%=*}"
2530
done < "$BUILDKITE_ENV_FILE"
2631
fi
2732
echo "$BK_ENV"
28-
}
33+
}

0 commit comments

Comments
 (0)