diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcb0804..241f0bf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -121,6 +121,7 @@ jobs: run: | IMG="ghcr.io/${GITHUB_REPOSITORY,,}/${{ matrix.target }}-${{ matrix.variant }}" echo "::set-output name=name::${IMG/ /-}" + echo "::set-output name=gh_repo::${GITHUB_REPOSITORY,,}" - name: Stop Commands run: T="$(echo -n ${{ github.token }} | sha256sum | head -c 64)" && echo -e "::add-mask::${T}\n::stop-commands::${T}" - name: Build target base image @@ -132,6 +133,8 @@ jobs: tags: ${{ steps.imagename.outputs.name }}:latest cache-to: type=registry,mode=max,ref=${{ steps.imagename.outputs.name }}:cache cache-from: type=registry,ref=${{ steps.imagename.outputs.name }}:cache + build-args: | + GH_REPO=ghcr.io/${{ steps.imagename.outputs.gh_repo }} build_ffmpeg: name: Build ffmpeg if: ${{ ( github.event.inputs.buildOnly == 'true' && !cancelled() ) || success() }} diff --git a/images/base-linux64/Dockerfile b/images/base-linux64/Dockerfile index f8c39c7..a99ac97 100644 --- a/images/base-linux64/Dockerfile +++ b/images/base-linux64/Dockerfile @@ -1,5 +1,5 @@ -ARG GH_REPO=btbn/ffmpeg-builds -FROM ghcr.io/$GH_REPO/base:latest +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest RUN --mount=src=ct-ng-config,dst=/.config \ git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ diff --git a/images/base-linuxarm64/Dockerfile b/images/base-linuxarm64/Dockerfile index bcc068b..eb39ec5 100644 --- a/images/base-linuxarm64/Dockerfile +++ b/images/base-linuxarm64/Dockerfile @@ -1,5 +1,5 @@ -ARG GH_REPO=btbn/ffmpeg-builds -FROM ghcr.io/$GH_REPO/base:latest +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest RUN --mount=src=ct-ng-config,dst=/.config \ git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ diff --git a/images/base-win32/Dockerfile b/images/base-win32/Dockerfile index d62ac18..4a01efd 100644 --- a/images/base-win32/Dockerfile +++ b/images/base-win32/Dockerfile @@ -1,5 +1,5 @@ -ARG GH_REPO=btbn/ffmpeg-builds -FROM ghcr.io/$GH_REPO/base:latest +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest RUN --mount=src=ct-ng-config,dst=/.config \ git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ diff --git a/images/base-win64/Dockerfile b/images/base-win64/Dockerfile index 87f5d0f..120ce8c 100644 --- a/images/base-win64/Dockerfile +++ b/images/base-win64/Dockerfile @@ -1,5 +1,5 @@ -ARG GH_REPO=btbn/ffmpeg-builds -FROM ghcr.io/$GH_REPO/base:latest +ARG GH_REPO=ghcr.io/btbn/ffmpeg-builds +FROM $GH_REPO/base:latest RUN --mount=src=ct-ng-config,dst=/.config \ git clone --filter=blob:none https://github.com/crosstool-ng/crosstool-ng.git /ct-ng && cd /ct-ng && \ diff --git a/makeimage.sh b/makeimage.sh index c6c18af..bbbd4cd 100755 --- a/makeimage.sh +++ b/makeimage.sh @@ -14,21 +14,31 @@ docker buildx inspect ffbuilder &>/dev/null || docker buildx create \ --bootstrap \ --name ffbuilder \ --config "$TMPCFG" \ + --driver-opt network=host \ --driver-opt env.BUILDKIT_STEP_LOG_MAX_SIZE=-1 \ --driver-opt env.BUILDKIT_STEP_LOG_MAX_SPEED=-1 if [[ -z "$QUICKBUILD" ]]; then + docker container inspect ffbuildreg &>/dev/null || \ + docker run --rm -d -p 127.0.0.1:0:5000 --name ffbuildreg registry:2 + LOCAL_REG_PORT="$(docker container inspect --format='{{range $p, $conf := .NetworkSettings.Ports}}{{(index $conf 0).HostPort}}{{end}}' ffbuildreg)" + LOCAL_ROOT="127.0.0.1:${LOCAL_REG_PORT}/local" + trap "rm -f '$TMPCFG'; docker container stop ffbuildreg" EXIT + if grep "FROM.*base.*" "images/base-${TARGET}/Dockerfile" >/dev/null 2>&1; then docker buildx --builder ffbuilder build \ --cache-from=type=local,src=.cache/"${BASE_IMAGE/:/_}" \ --cache-to=type=local,mode=max,dest=.cache/"${BASE_IMAGE/:/_}" \ - --load --tag "$BASE_IMAGE" images/base + --push --tag "${LOCAL_ROOT}/base:latest" images/base fi docker buildx --builder ffbuilder build \ --cache-from=type=local,src=.cache/"${TARGET_IMAGE/:/_}" \ --cache-to=type=local,mode=max,dest=.cache/"${TARGET_IMAGE/:/_}" \ - --load --build-arg GH_REPO="$REPO" --tag "$TARGET_IMAGE" "images/base-${TARGET}" + --push --tag "${LOCAL_ROOT}/base-${TARGET}:latest" \ + --build-arg GH_REPO="$LOCAL_ROOT" "images/base-${TARGET}" + + export REGISTRY_OVERRIDE="127.0.0.1:${LOCAL_REG_PORT}" GITHUB_REPOSITORY="local" fi ./generate.sh "$TARGET" "$VARIANT" "${ADDINS[@]}" diff --git a/util/vars.sh b/util/vars.sh index f3002a2..656ac06 100644 --- a/util/vars.sh +++ b/util/vars.sh @@ -32,7 +32,7 @@ done REPO="${GITHUB_REPOSITORY:-btbn/ffmpeg-builds}" REPO="${REPO,,}" -REGISTRY="ghcr.io" +REGISTRY="${REGISTRY_OVERRIDE:-ghcr.io}" BASE_IMAGE="${REGISTRY}/${REPO}/base:latest" TARGET_IMAGE="${REGISTRY}/${REPO}/base-${TARGET}:latest" IMAGE="${REGISTRY}/${REPO}/${TARGET}-${VARIANT}${ADDINS_STR:+-}${ADDINS_STR}:latest"