diff --git a/.cicd/create-docker-from-binary.sh b/.cicd/create-docker-from-binary.sh new file mode 100755 index 0000000000..98fa89dabb --- /dev/null +++ b/.cicd/create-docker-from-binary.sh @@ -0,0 +1,53 @@ +#!/bin/bash +echo '--- :evergreen_tree: Configuring Environment' +set -euo pipefail + +buildkite-agent artifact download '*.deb' --step ':ubuntu: Ubuntu 18.04 - Package Builder' . +echo ":done: download successful" + +SANITIZED_BRANCH=$(echo "$BUILDKITE_BRANCH" | sed 's.^/..' | sed 's/[:/]/_/g') +SANITIZED_TAG=$(echo "$BUILDKITE_TAG" | sed 's.^/..' | tr '/' '_') +echo "$SANITIZED_BRANCH" +echo "$SANITIZED_TAG" + +# do docker build +echo '+++ :docker: Building Container' +echo ":docker::build: Building image..." +DOCKERHUB_REGISTRY="docker.io/eosio/eosio.cdt" + +BUILD_TAG=${BUILDKITE_BUILD_NUMBER:-latest} +DOCKER_BUILD_GEN="docker build -t eosio_cdt_image:$BUILD_TAG -f ./docker/dockerfile ." +echo "$ $DOCKER_BUILD_GEN" +eval $DOCKER_BUILD_GEN + +#tag and push on each destination AWS & DOCKERHUB +echo '+++ :arrow_up: Pushing Container' +EOSIO_REGS=("$EOSIO_CDT_REGISTRY" "$DOCKERHUB_REGISTRY") +for REG in ${EOSIO_REGS[@]}; do + DOCKER_TAG_COMMIT="docker tag eosio_cdt_image:$BUILD_TAG $REG:$BUILDKITE_COMMIT" + DOCKER_TAG_BRANCH="docker tag eosio_cdt_image:$BUILD_TAG $REG:$SANITIZED_BRANCH" + echo -e "$ Tagging Images: \n$DOCKER_TAG_COMMIT \n$DOCKER_TAG_BRANCH" + eval $DOCKER_TAG_COMMIT + eval $DOCKER_TAG_BRANCH + DOCKER_PUSH_COMMIT="docker push $REG:$BUILDKITE_COMMIT" + DOCKER_PUSH_BRANCH="docker push $REG:$SANITIZED_BRANCH" + echo -e "$ Pushing Images: \n$DOCKER_PUSH_COMMIT \n$DOCKER_PUSH_BRANCH" + eval $DOCKER_PUSH_COMMIT + eval $DOCKER_PUSH_BRANCH + CLEAN_IMAGE_COMMIT="docker rmi $REG:$BUILDKITE_COMMIT" + CLEAN_IMAGE_BRANCH="docker rmi $REG:$SANITIZED_BRANCH" + echo -e "Cleaning Up: \n$CLEAN_IMAGE_COMMIT \n$CLEAN_IMAGE_BRANCH$" + eval $CLEAN_IMAGE_COMMIT + eval $CLEAN_IMAGE_BRANCH + if [[ ! -z "$SANITIZED_TAG" ]]; then + DOCKER_TAG="docker tag eosio_cdt_image $REG:$SANITIZED_TAG" + DOCKER_REM="docker rmi $REG:$SANITIZED_TAG" + echo -e "$ \n Tagging Image: \n$DOCKER_TAG \n Cleaning Up: \n$DOCKER_REM" + eval $DOCKER_TAG + eval $DOCKER_REM + fi +done + +DOCKER_GEN="docker rmi eosio_cdt_image:$BUILD_TAG" +echo "Clean up base image" +eval $DOCKER_GEN diff --git a/.cicd/pipeline.yml b/.cicd/pipeline.yml index 43359e2b4b..f053bb27c8 100644 --- a/.cicd/pipeline.yml +++ b/.cicd/pipeline.yml @@ -435,6 +435,14 @@ steps: timeout: 20 skip: ${SKIP_MACOS_10_15}${SKIP_PACKAGE_BUILDER} + - wait + + - label: ":docker::ubuntu: Docker - Build 18.04 Docker Image" + command: "./.cicd/create-docker-from-binary.sh" + agents: + queue: "automation-eks-eos-tester-fleet" + timeout: 10 + - label: ":git: Git Submodule Regression Check" command: - "./.cicd/submodule-regression-checker.sh" diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 63c170d8eb..0000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM ubuntu:18.04 - -# Arguments that may be overridden by the user -ARG release=latest - -# Install required packages -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl ca-certificates curl wget && rm -rf /var/lib/apt/lists/* - -# Install CDT from deb package -ADD install_deb.sh / -RUN /install_deb.sh $release && rm -f install_deb.sh - -USER root diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile deleted file mode 100644 index 584686a6ea..0000000000 --- a/docker/dev/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM ubuntu:18.04 - -# Install required packages -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl ca-certificates curl wget && rm -rf /var/lib/apt/lists/* - -# Install CDT from deb package -ADD build/packages/*.deb / -RUN for filename in $(ls *.deb); do /usr/bin/dpkg -i "$filename" && rm -f "$filename"; done - -USER root \ No newline at end of file diff --git a/docker/dockerfile b/docker/dockerfile new file mode 100644 index 0000000000..20978c92e0 --- /dev/null +++ b/docker/dockerfile @@ -0,0 +1,6 @@ +FROM ubuntu:18.04 +COPY *.deb / +RUN apt-get update && \ + apt-get install -y /*.deb && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* diff --git a/docker/install_deb.sh b/docker/install_deb.sh deleted file mode 100755 index 43c6cb25a9..0000000000 --- a/docker/install_deb.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -if [ "$1" = "" ]; then - echo "In order to continue, you must specify either latest or the release version." - exit 1 -elif [ "$1" = "latest" ]; then - deb=$(/usr/bin/curl -s https://api.github.com/repos/EOSIO/eosio.cdt/releases/latest | grep "browser_download_url.*deb" | cut -d '"' -f 4) - filename=$(/usr/bin/curl -s https://api.github.com/repos/EOSIO/eosio.cdt/releases/latest | grep "name.*deb" | cut -d '"' -f 4) -else - deb=$(/usr/bin/curl -s https://api.github.com/repos/EOSIO/eosio.cdt/releases/tags/$1 | grep "browser_download_url.*deb" | cut -d '"' -f 4) - filename=$(/usr/bin/curl -s https://api.github.com/repos/EOSIO/eosio.cdt/releases/tags/$1 | grep "name.*deb" | cut -d '"' -f 4) -fi - -if [ "$deb" = "" ]; then - echo "Either $1 is not a valid release, or there is not a published .deb package for the release." - exit 1 -fi - -/usr/bin/wget $deb && /usr/bin/dpkg -i "$filename" && rm -f "$filename"