From f33c9968c3f0e48ae77bd1a137f56e3e33c3761d Mon Sep 17 00:00:00 2001 From: yuhao1118 Date: Wed, 17 May 2023 19:50:12 +0800 Subject: [PATCH] feat: first try on docker buildx --- .github/workflows/build-api-image.sh | 5 +- .github/workflows/build-base-image.sh | 63 ++++++++++++++++++++++++++ .github/workflows/build-base-image.yml | 38 ++++++++++++++++ .github/workflows/build-web-image.sh | 3 +- 4 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/build-base-image.sh create mode 100644 .github/workflows/build-base-image.yml diff --git a/.github/workflows/build-api-image.sh b/.github/workflows/build-api-image.sh index b7c92525fb..a172144800 100644 --- a/.github/workflows/build-api-image.sh +++ b/.github/workflows/build-api-image.sh @@ -3,7 +3,7 @@ set -eo pipefail SHA=$(git rev-parse HEAD) -REPO_NAME=langgenius/dify +REPO_NAME=yuhao1118/dify API_REPO_NAME="${REPO_NAME}-api" if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then @@ -46,7 +46,8 @@ EOF # Build image # cd api -docker build \ +docker buildx build \ + --platform linux/amd64,linux/arm64,linux/arm/v7 \ ${API_CACHE_FROM_SCRIPT} \ --build-arg COMMIT_SHA=${SHA} \ -t "${API_REPO_NAME}:${SHA}" \ diff --git a/.github/workflows/build-base-image.sh b/.github/workflows/build-base-image.sh new file mode 100644 index 0000000000..e87b4157f2 --- /dev/null +++ b/.github/workflows/build-base-image.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -eo pipefail + +SHA=$(git rev-parse HEAD) +REPO_NAME=yuhao1118/base +API_REPO_NAME="${REPO_NAME}" + +if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then + REFSPEC=$(echo "${GITHUB_HEAD_REF}" | sed 's/[^a-zA-Z0-9]/-/g' | head -c 40) + PR_NUM=$(echo "${GITHUB_REF}" | sed 's:refs/pull/::' | sed 's:/merge::') + LATEST_TAG="pr-${PR_NUM}" + CACHE_FROM_TAG="latest" +elif [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then + REFSPEC=$(echo "${GITHUB_REF}" | sed 's:refs/tags/::' | head -c 40) + LATEST_TAG="${REFSPEC}" + CACHE_FROM_TAG="latest" +else + REFSPEC=$(echo "${GITHUB_REF}" | sed 's:refs/heads/::' | sed 's/[^a-zA-Z0-9]/-/g' | head -c 40) + LATEST_TAG="${REFSPEC}" + CACHE_FROM_TAG="${REFSPEC}" +fi + +if [[ "${REFSPEC}" == "main" ]]; then + LATEST_TAG="latest" + CACHE_FROM_TAG="latest" +fi + +echo "Pulling cache image ${API_REPO_NAME}:${CACHE_FROM_TAG}" +if docker pull "${API_REPO_NAME}:${CACHE_FROM_TAG}"; then + API_CACHE_FROM_SCRIPT="--cache-from ${API_REPO_NAME}:${CACHE_FROM_TAG}" +else + echo "WARNING: Failed to pull ${API_REPO_NAME}:${CACHE_FROM_TAG}, disable build image cache." + API_CACHE_FROM_SCRIPT="" +fi + + +cat<