gpt4 book ai didi

DockerHub 为 GitHub 拉取请求自动构建 - 使用 $DOCKER_TAG 变量?

转载 作者:行者123 更新时间:2023-12-02 18:48:02 25 4
gpt4 key购买 nike

我有一个为项目的每个分支运行 DockerHub 自动构建的项目。这些构建运行良好。

我想扩展这个自动构建配置来为这些分支的选定拉取请求构建图像。

enter image description here

以下文档表明一个名为 DOCKER_TAG 的变量应该在 DockerHub 自动构建中可用。

https://docs.docker.com/docker-hub/builds/advanced/#environment-variables-for-building-and-testing

我想以下列方式配置我的自动构建。

如果我尝试构建一个名为“pr1234”的标签,那么我的构建将在运行构建之前覆盖 PR #1234 中的代码。

# Assign the env variable DOCKER_TAG to an arg of the same name
ARG DOCKER_TAG=${DOCKER_TAG}

...

# if DOCKER_TAG is in the format prNNNN then merge code for that PR on top of the current branch
RUN PRNUM=`echo ${DOCKER_TAG}| egrep "^pr([0-9]+)$" | sed -e s/pr//` && \
if [ -n "$PRNUM" ]; \
then echo "Merging $PRNUM"; \
curl -o /tmp/pr.patch -L https://github.com/DSpace/DSpace/pull/$PRNUM.diff; \
git apply /tmp/pr.patch; \
fi

如果我在本地运行我的构建,我可以设置这个变量并且我的 docker build 运行我想要的。
docker build -t dspace/dspace:pr1234 -f Dockerfile.jdk8-test --build-arg DOCKER_TAG=pr1234 .

当我尝试从 Dockerhub 运行它时,DOCKER_TAG 变量似乎是空白的,所以我认为 DOCKER_TAG 没有按我的预期设置。

您能否建议一种访问此变量或为选定 PR 完成自动构建的方法?

最佳答案

我找到了一个似乎可行的解决方案。我创建了一个名为 的构建 Hook Hook /构建 并显式传递变量。

#!/bin/bash
docker build --build-arg DOCKER_TAG=$DOCKER_TAG -f $DOCKERFILE_PATH -t $IMAGE_NAME .

https://docs.docker.com/docker-hub/builds/advanced/#custom-build-phase-hooks

关于DockerHub 为 GitHub 拉取请求自动构建 - 使用 $DOCKER_TAG 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55347752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com