Автоматическая сборка DockerHub для запроса на извлечение GitHub — с использованием переменной $ DOCKER_TAG?

#docker #dockerhub

#docker #dockerhub

Вопрос:

У меня есть проект, в котором автосоздания DockerHub выполняются для каждой ветви проекта. Эти сборки выполняются нормально.

Я хотел бы расширить эту конфигурацию автоматической сборки, чтобы создавать образы для выбранных запросов на извлечение для этих ветвей.

введите описание изображения здесь

В следующей документации указано, что переменная с именем 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//` amp;amp; 
    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 выполняется так, как я хотел бы.

 docker build -t dspace/dspace:pr1234 -f Dockerfile.jdk8-test --build-arg DOCKER_TAG=pr1234 .
  

Когда я пытаюсь запустить это из Dockerhub, переменная DOCKER_TAG оказывается пустой, поэтому я предполагаю, что DOCKER_TAG устанавливается не так, как я ожидал.

Можете ли вы предложить способ доступа к этой переменной или выполнить автоматическую сборку для выбранных PR?

Ответ №1:

Я нашел решение, которое, похоже, работает. Я создал сборку с именем 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

Комментарии:

1. Спасибо за ваш ответ. Это помогает мне решить проблему.