diff --git a/.cicd/build.sh b/.cicd/build.sh index 9a9e2721089..0323436402e 100755 --- a/.cicd/build.sh +++ b/.cicd/build.sh @@ -2,9 +2,36 @@ set -eo pipefail [[ "$ENABLE_INSTALL" == 'true' ]] || echo '--- :evergreen_tree: Configuring Environment' . ./.cicd/helpers/general.sh +if [[ "$BUILDKITE_PIPELINE_SLUG" == 'eosio-contract-build' ]]; then + [[ "$RAW_PIPELINE_CONFIG" == '' ]] && export RAW_PIPELINE_CONFIG="$1" + [[ "$RAW_PIPELINE_CONFIG" == '' ]] && export RAW_PIPELINE_CONFIG='pipeline.jsonc' + [[ "$PIPELINE_CONFIG" == '' ]] && export PIPELINE_CONFIG='pipeline.json' + # read dependency file + if [[ -f "$RAW_PIPELINE_CONFIG" ]]; then + echo 'Reading pipeline configuration file...' + cat "$RAW_PIPELINE_CONFIG" | grep -Po '^[^"/]*("((?<=\\).|[^"])*"[^"/]*)*' | jq -c '.[env.BUILDKITE_PIPELINE_SLUG]' > "$PIPELINE_CONFIG" + CDT_VERSION=$(cat "$PIPELINE_CONFIG" | jq -r '.dependencies."eosio.cdt"') + else + echo 'ERROR: No pipeline configuration file or dependencies file found!' + exit 1 + fi + + + CDT_COMMIT=$((curl -s https://api.github.com/repos/EOSIO/eosio.cdt/git/refs/tags/$CDT_VERSION && curl -s https://api.github.com/repos/EOSIO/eosio.cdt/git/refs/heads/$CDT_VERSION) | jq '.object.sha' | sed "s/null//g" | sed "/^$/d" | tr -d '"' | sed -n '1p') + test -z "$CDT_COMMIT" && CDT_COMMIT=$(echo $CDT_VERSION | tr -d '"' | tr -d "''" | cut -d ' ' -f 1) # if both searches returned nothing, the version is probably specified by commit hash already + + echo "Using cdt ${CDT_COMMIT} from \"$CDT_VERSION\"..." + export CDT_URL="https://eos-public-oss-binaries.s3-us-west-2.amazonaws.com/${CDT_COMMIT:0:7}-eosio.cdt-ubuntu-20.04_amd64.deb" + export DEOSIO_COMPILE_TEST_CONTRACTS=true + CDT_COMMAND="curl -sSf $CDT_URL --output eosio.cdt.deb && apt install ./eosio.cdt.deb" +fi + mkdir -p "$BUILD_DIR" + [[ -z "$DCMAKE_BUILD_TYPE" ]] && export DCMAKE_BUILD_TYPE='Release' -CMAKE_EXTRAS="-DCMAKE_BUILD_TYPE=\"$DCMAKE_BUILD_TYPE\" -DENABLE_MULTIVERSION_PROTOCOL_TEST=\"true\" -DAMQP_CONN_STR=\"amqp://guest:guest@localhost:5672\"" +[[ -z "$DEOSIO_COMPILE_TEST_CONTRACTS" ]] && export DEOSIO_COMPILE_TEST_CONTRACTS=false +CMAKE_EXTRAS="-DCMAKE_BUILD_TYPE=\"$DCMAKE_BUILD_TYPE\" -DEOSIO_COMPILE_TEST_CONTRACTS=\"$DEOSIO_COMPILE_TEST_CONTRACTS\" -DENABLE_MULTIVERSION_PROTOCOL_TEST=\"true\" -DAMQP_CONN_STR=\"amqp://guest:guest@localhost:5672\"" + if [[ "$(uname)" == 'Darwin' && "$FORCE_LINUX" != 'true' ]]; then # You can't use chained commands in execute if [[ "$GITHUB_ACTIONS" == 'true' ]]; then @@ -40,8 +67,11 @@ else # Linux fi CMAKE_COMMAND="cmake \$CMAKE_EXTRAS .." MAKE_COMMAND="make -j $JOBS" - BUILD_COMMANDS="echo \"+++ :hammer_and_wrench: Building EOSIO\" && echo \"$ $CMAKE_COMMAND\" && eval $CMAKE_COMMAND && echo \"$ $MAKE_COMMAND\" && eval $MAKE_COMMAND" - # Docker Commands + if [[ "$BUILDKITE_PIPELINE_SLUG" == 'eosio-contract-build' ]]; then + BUILD_COMMANDS="echo \"+++ :hammer_and_wrench: Building EOSIO\" && echo \"$CDT_COMMAND\" && eval $CDT_COMMAND && echo \"$ $CMAKE_COMMAND\" && eval $CMAKE_COMMAND && echo \"$ $MAKE_COMMAND\" && eval $MAKE_COMMAND" + else + BUILD_COMMANDS="echo \"+++ :hammer_and_wrench: Building EOSIO\" && echo \"$ $CMAKE_COMMAND\" && eval $CMAKE_COMMAND && echo \"$ $MAKE_COMMAND\" && eval $MAKE_COMMAND" + fi # Docker Commands if [[ "$BUILDKITE" == 'true' ]]; then # Generate Base Images BASE_IMAGE_COMMAND="\"$CICD_DIR/generate-base-images.sh\"" @@ -70,4 +100,4 @@ if [[ "$BUILDKITE" == 'true' && "$ENABLE_INSTALL" != 'true' ]]; then buildkite-agent artifact upload 'build.tar.gz' echo 'Done uploading artifacts.' fi -[[ "$ENABLE_INSTALL" == 'true' ]] || echo '--- :white_check_mark: Done!' +[[ "$ENABLE_INSTALL" == 'true' ]] || echo '--- :white_check_mark: Done!' \ No newline at end of file diff --git a/.cicd/create-docker-from-binary.sh b/.cicd/create-docker-from-binary.sh index 5c3c3a234d0..cdc05de7512 100755 --- a/.cicd/create-docker-from-binary.sh +++ b/.cicd/create-docker-from-binary.sh @@ -2,7 +2,11 @@ echo '--- :evergreen_tree: Configuring Environment' set -euo pipefail . ./.cicd/helpers/general.sh -buildkite-agent artifact download '*.deb' --step ':ubuntu: Ubuntu 18.04 - Package Builder' . +if [[ "$BUILDKITE_PIPELINE_SLUG" == 'eosio-contract-build' ]]; then + buildkite-agent artifact download '*.deb' --step ':ubuntu: Ubuntu 20.04 - Package Builder' . +else + buildkite-agent artifact download '*.deb' --step ':ubuntu: Ubuntu 18.04 - Package Builder' . +fi SANITIZED_BRANCH="$(sanitize "$BUILDKITE_BRANCH")" echo "Branch '$BUILDKITE_BRANCH' sanitized as '$SANITIZED_BRANCH'." SANITIZED_TAG="$(sanitize "$BUILDKITE_TAG")" diff --git a/.cicd/docker-tag.sh b/.cicd/docker-tag.sh index 3c4ddf35c9a..fe856e98d1d 100755 --- a/.cicd/docker-tag.sh +++ b/.cicd/docker-tag.sh @@ -2,7 +2,11 @@ set -eo pipefail echo '--- :evergreen_tree: Configuring Environment' . ./.cicd/helpers/general.sh -PREFIX='base-ubuntu-18.04' +if [[ "$IMAGE_TAG" == 'ubuntu-20.04-unpinned' ]]; then + PREFIX='base-ubuntu-20.04' +else + PREFIX='base-ubuntu-18.04' +fi SANITIZED_BRANCH="$(sanitize "$BUILDKITE_BRANCH")" echo "Branch '$BUILDKITE_BRANCH' sanitized as '$SANITIZED_BRANCH'." SANITIZED_TAG="$(sanitize "$BUILDKITE_TAG")" diff --git a/.cicd/generate-pipeline.sh b/.cicd/generate-pipeline.sh index 1b35f9f86b2..6d14501f5fe 100755 --- a/.cicd/generate-pipeline.sh +++ b/.cicd/generate-pipeline.sh @@ -194,7 +194,7 @@ EOF fi done [[ -z "$TEST" ]] && cat <