Ya configuré un repositorio de github con 3 sucursales (maestro, desarrollador y ventana acoplable). Ya configuré correctamente y vinculé la compilación automatizada en dockerhub. Cada vez que se realiza una inserción en Github, se crea una imagen en Dockerhub con una etiqueta diferente (más reciente para maestro, beta para desarrollador y alfa para docker). Esto está funcionando bien. Ahora el problema...
En Dockerfile, hay un comando git clone para recuperar el proyecto. El problema es que esto apunta al maestro siempre. Entonces, si presiono algo en la rama de la ventana acoplable, por ejemplo (construye una imagen con una etiqueta alfa), el código del proyecto en esa imagen es el código del maestro y no el código de la ventana acoplable de la rama, que es el deseado para este caso.
Si modifico el Dockerfile de branch docker (que genera una imagen etiquetada alfa) y pongo git clone -b docker ... la compilación está bien, pero después de todas las pruebas, cuando quiero fusionarme con una solicitud de extracción de docker branch a rama de desarrollo, por ejemplo, se necesita otra actualización en desarrollo para cambiar el comando git clone dentro de Dockerfile para que apunte a la rama correcta. Y lo mismo con una solicitud de extracción de desarrollador a maestro con la dificultad adicional de que en este proyecto la rama maestra está protegida y no puedo enviar directamente a maestro... así que después de una solicitud de extracción de desarrollador a maestro no puedo arreglar Dockerfile cambiando el Dockerfile para cambiar el git clone para que apunte nuevamente al maestro.
¿Hay alguna manera de tener diferentes sucursales con diferentes etiquetas en la construcción automatizada sin cambiar nada después de las solicitudes de extracción de una a otra sucursal? Gracias.
Cuando se usan compilaciones automatizadas, esto es lo que sucede;
De lo anterior; no debe git clone dentro de su Dockerfile en absoluto , porque estaría haciendo lo que ya ha hecho la compilación automatizada. Simplemente hazlo;
FROM some-base-image # Copy your project's source into the image COPY . /my-src RUN do-something-with-the-sourceDocker Cloud tiene funciones avanzadas que le permiten ejecutar scripts personalizados en varias etapas de la compilación automatizada, utilizando enlaces de fase de compilación (documentación) . Esto le permite (por ejemplo) crear imágenes "mínimas" construyendo su proyecto en una "imagen de compilación", luego copiando el código generado en un directorio local y construyendo la imagen final a partir de eso.
editar
Las opciones de compilación automática en Docker Cloud tienen más funciones que la compilación automática en Docker Hub. Por ejemplo, el Dockerfile para compilar y el contexto de compilación se pueden configurar por separado. Esto le permite tener un Dockerfile en un subdirectorio, pero usar archivos fuera de ese subdirectorio para usarlos como contexto de compilación. Para hacer esto, establezca la ubicación de Dockerfile en (p. ej.) /docker/Dockerfile y el contexto de compilación en /