From 4617967e14fc01e82c5dc14ea3e37fddf8540963 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 May 2021 21:47:40 +0200 Subject: [PATCH 1/5] Try building for multiarch --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a0837eb2..ab640789e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,6 +6,7 @@ on: - master - stable - develop + - test_multiarch tags: release: types: [published] @@ -402,7 +403,7 @@ jobs: - name: Build Raspberry docker image env: IMAGE_NAME: freqtradeorg/freqtrade - BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }}_pi + BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} run: | build_helpers/publish_docker_pi.sh From 8658be004e00eb0c75fe364407ed54d2d8dd46bf Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 May 2021 06:35:41 +0200 Subject: [PATCH 2/5] Use docker-manifest to build multiarch images --- build_helpers/publish_docker_pi.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/build_helpers/publish_docker_pi.sh b/build_helpers/publish_docker_pi.sh index 060b1deaf..d3a941a1f 100755 --- a/build_helpers/publish_docker_pi.sh +++ b/build_helpers/publish_docker_pi.sh @@ -3,7 +3,9 @@ # The below assumes a correctly setup docker buildx environment # Replace / with _ to create a valid tag -TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g") +TAG_ORIG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g") +TAG="${TAG_ORIG}_pi" + PI_PLATFORM="linux/arm/v7" echo "Running for ${TAG}" CACHE_TAG=freqtradeorg/freqtrade_cache:${TAG}_cache @@ -30,6 +32,13 @@ else -t ${IMAGE_NAME}:${TAG} --push . fi +docker images + +docker manifest create freqtradeorg/freqtrade:${TAG}_multi ${IMAGE_NAME}:${TAG_ORIG} ${IMAGE_NAME}:${TAG} +docker manifest push freqtradeorg/freqtrade:${TAG}_multi + +docker images + if [ $? -ne 0 ]; then echo "failed building image" return 1 From 1e052bde90d8a511f3247b40733b4a5b1e337452 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 May 2021 10:23:08 +0200 Subject: [PATCH 3/5] Move Dockerfile.armhf to docker directory --- .dockerignore | 1 + .github/workflows/ci.yml | 14 +++++++------- build_helpers/publish_docker.sh | 1 + build_helpers/publish_docker_pi.sh | 10 +++++----- Dockerfile.armhf => docker/Dockerfile.armhf | 0 5 files changed, 14 insertions(+), 12 deletions(-) rename Dockerfile.armhf => docker/Dockerfile.armhf (100%) diff --git a/.dockerignore b/.dockerignore index 889a4dfc7..abc5b82f0 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,6 +3,7 @@ Dockerfile Dockerfile.armhf .dockerignore +docker/ .coveragerc .eggs .github diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab640789e..dbcde8adf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -375,13 +375,6 @@ jobs: run: | echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin - - name: Build and test and push docker image - env: - IMAGE_NAME: freqtradeorg/freqtrade - BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} - run: | - build_helpers/publish_docker.sh - # We need docker experimental to pull the ARM image. - name: Switch docker to experimental run: | @@ -400,6 +393,13 @@ jobs: - name: Available platforms run: echo ${{ steps.buildx.outputs.platforms }} + - name: Build and test and push docker image + env: + IMAGE_NAME: freqtradeorg/freqtrade + BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} + run: | + build_helpers/publish_docker.sh + - name: Build Raspberry docker image env: IMAGE_NAME: freqtradeorg/freqtrade diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index d987bcc69..da9fc4e34 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -53,6 +53,7 @@ docker images docker push ${IMAGE_NAME} docker push ${IMAGE_NAME}:$TAG_PLOT docker push ${IMAGE_NAME}:$TAG + if [ $? -ne 0 ]; then echo "failed pushing repo" return 1 diff --git a/build_helpers/publish_docker_pi.sh b/build_helpers/publish_docker_pi.sh index d3a941a1f..7c77c5ba1 100755 --- a/build_helpers/publish_docker_pi.sh +++ b/build_helpers/publish_docker_pi.sh @@ -7,7 +7,7 @@ TAG_ORIG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g") TAG="${TAG_ORIG}_pi" PI_PLATFORM="linux/arm/v7" -echo "Running for ${TAG}" +echo "Running for ${TAG_ORIG}" CACHE_TAG=freqtradeorg/freqtrade_cache:${TAG}_cache # Add commit and commit_message to docker container @@ -17,7 +17,7 @@ if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then echo "event ${GITHUB_EVENT_NAME}: full rebuild - skipping cache" docker buildx build \ --cache-to=type=registry,ref=${CACHE_TAG} \ - -f Dockerfile.armhf \ + -f docker/Dockerfile.armhf \ --platform ${PI_PLATFORM} \ -t ${IMAGE_NAME}:${TAG} --push . else @@ -27,15 +27,15 @@ else docker buildx build \ --cache-from=type=registry,ref=${CACHE_TAG} \ --cache-to=type=registry,ref=${CACHE_TAG} \ - -f Dockerfile.armhf \ + -f docker/Dockerfile.armhf \ --platform ${PI_PLATFORM} \ -t ${IMAGE_NAME}:${TAG} --push . fi docker images -docker manifest create freqtradeorg/freqtrade:${TAG}_multi ${IMAGE_NAME}:${TAG_ORIG} ${IMAGE_NAME}:${TAG} -docker manifest push freqtradeorg/freqtrade:${TAG}_multi +docker manifest create freqtradeorg/freqtrade:${TAG_ORIG} ${IMAGE_NAME}:${TAG_ORIG} ${IMAGE_NAME}:${TAG} +docker manifest push freqtradeorg/freqtrade:${TAG_ORIG} docker images diff --git a/Dockerfile.armhf b/docker/Dockerfile.armhf similarity index 100% rename from Dockerfile.armhf rename to docker/Dockerfile.armhf From 9cf2c2201b61a2ddbdb47aa622d0c1b4cfc74dd6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 May 2021 15:51:16 +0200 Subject: [PATCH 4/5] Align dockerfiles --- Dockerfile | 12 ++++++------ build_helpers/publish_docker_pi.sh | 6 +++++- docker/Dockerfile.aarch64 | 6 +++--- docker/Dockerfile.armhf | 5 +++-- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index b12cde6bb..f2d7c8a40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,8 +10,8 @@ ENV FT_APP_ENV="docker" # Prepare environment RUN mkdir /freqtrade \ - && apt update \ - && apt install -y sudo \ + && apt-get update \ + && apt-get -y install sudo libatlas3-base curl sqlite3 libhdf5-serial-dev \ && apt-get clean \ && useradd -u 1000 -G sudo -U -m ftuser \ && chown ftuser:ftuser /freqtrade \ @@ -22,10 +22,10 @@ WORKDIR /freqtrade # Install dependencies FROM base as python-deps -RUN apt-get update \ - && apt-get -y install curl build-essential libssl-dev git \ - && apt-get clean \ - && pip install --upgrade pip +RUN apt-get update \ + && apt-get -y install build-essential libssl-dev git libffi-dev libgfortran5 pkg-config cmake gcc \ + && apt-get clean \ + && pip install --upgrade pip # Install TA-lib COPY build_helpers/* /tmp/ diff --git a/build_helpers/publish_docker_pi.sh b/build_helpers/publish_docker_pi.sh index 7c77c5ba1..c7024828b 100755 --- a/build_helpers/publish_docker_pi.sh +++ b/build_helpers/publish_docker_pi.sh @@ -7,7 +7,7 @@ TAG_ORIG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g") TAG="${TAG_ORIG}_pi" PI_PLATFORM="linux/arm/v7" -echo "Running for ${TAG_ORIG}" +echo "Running for ${TAG}" CACHE_TAG=freqtradeorg/freqtrade_cache:${TAG}_cache # Add commit and commit_message to docker container @@ -34,6 +34,10 @@ fi docker images +# Create multiarch image +# Make sure that all images contained here are pushed to github first. +# Otherwise installation might fail. + docker manifest create freqtradeorg/freqtrade:${TAG_ORIG} ${IMAGE_NAME}:${TAG_ORIG} ${IMAGE_NAME}:${TAG} docker manifest push freqtradeorg/freqtrade:${TAG_ORIG} diff --git a/docker/Dockerfile.aarch64 b/docker/Dockerfile.aarch64 index 9f51ba61e..e5d3f0ee9 100644 --- a/docker/Dockerfile.aarch64 +++ b/docker/Dockerfile.aarch64 @@ -11,7 +11,7 @@ ENV FT_APP_ENV="docker" # Prepare environment RUN mkdir /freqtrade \ && apt-get update \ - && apt-get -y install libatlas3-base curl sqlite3 libhdf5-serial-dev sudo \ + && apt-get -y install sudo libatlas3-base curl sqlite3 libhdf5-serial-dev \ && apt-get clean \ && useradd -u 1000 -G sudo -U -m ftuser \ && chown ftuser:ftuser /freqtrade \ @@ -22,8 +22,8 @@ WORKDIR /freqtrade # Install dependencies FROM base as python-deps -RUN apt-get update \ - && apt-get -y install curl build-essential libssl-dev git libffi-dev libgfortran5 pkg-config cmake gcc \ +RUN apt-get update \ + && apt-get -y install build-essential libssl-dev git libffi-dev libgfortran5 pkg-config cmake gcc \ && apt-get clean \ && pip install --upgrade pip diff --git a/docker/Dockerfile.armhf b/docker/Dockerfile.armhf index 9b7986240..8abf0e44b 100644 --- a/docker/Dockerfile.armhf +++ b/docker/Dockerfile.armhf @@ -11,7 +11,7 @@ ENV FT_APP_ENV="docker" # Prepare environment RUN mkdir /freqtrade \ && apt-get update \ - && apt-get -y install libatlas3-base curl sqlite3 libhdf5-serial-dev sudo \ + && apt-get -y install sudo libatlas3-base curl sqlite3 libhdf5-serial-dev \ && apt-get clean \ && useradd -u 1000 -G sudo -U -m ftuser \ && chown ftuser:ftuser /freqtrade \ @@ -22,7 +22,8 @@ WORKDIR /freqtrade # Install dependencies FROM base as python-deps -RUN apt-get -y install build-essential libssl-dev libffi-dev libgfortran5 \ +RUN apt-get update \ + && apt-get -y install build-essential libssl-dev libffi-dev libgfortran5 \ && apt-get clean \ && pip install --upgrade pip \ && echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > /etc/pip.conf From f6b1abe23fe40fe6f51659b33894447c8eddf7cd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 May 2021 08:22:50 +0200 Subject: [PATCH 5/5] Remove ci from test_multiarch again --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dbcde8adf..ea766d77d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,6 @@ on: - master - stable - develop - - test_multiarch tags: release: types: [published]