DockerHub 自动构建 GitHub 拉取请求 - 使用 $DOCKER_TAG 变量?
DockerHub autobuild for a GitHub pull request - using the $DOCKER_TAG variable?
我有一个项目,其中每个分支都有 DockerHub 自动构建 运行ning。这些构建 运行 非常好。
我想扩展这个自动构建配置来为这些分支的选定拉取请求构建图像。
以下文档表明名为 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 构建 运行s。
docker build -t dspace/dspace:pr1234 -f Dockerfile.jdk8-test --build-arg DOCKER_TAG=pr1234 .
当我尝试从 Dockerhub 运行 执行此操作时,DOCKER_TAG 变量似乎为空,因此我认为 DOCKER_TAG 未按预期设置。
您能否建议一种方法来访问此变量或为选定的 PR 完成自动构建?
我找到了一个似乎有效的解决方案。我创建了一个名为 hooks/build 的构建挂钩并显式传递变量。
#!/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 自动构建 运行ning。这些构建 运行 非常好。
我想扩展这个自动构建配置来为这些分支的选定拉取请求构建图像。
以下文档表明名为 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 构建 运行s。
docker build -t dspace/dspace:pr1234 -f Dockerfile.jdk8-test --build-arg DOCKER_TAG=pr1234 .
当我尝试从 Dockerhub 运行 执行此操作时,DOCKER_TAG 变量似乎为空,因此我认为 DOCKER_TAG 未按预期设置。
您能否建议一种方法来访问此变量或为选定的 PR 完成自动构建?
我找到了一个似乎有效的解决方案。我创建了一个名为 hooks/build 的构建挂钩并显式传递变量。
#!/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