es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GCP Cloud Build – Buildpack -> gradle -> testcontainers GCP Cloud Build – Buildpack -> gradle -> testcontainers

Tengo un problema al cambiar a Cloud Build. Antes estábamos usando otra plataforma y recién comenzamos a utilizar la compilación de grado. Usamos Spring Boot y Testcontainers para las pruebas. Ahora, en Cloud Build, el proyecto de Gradle se construirá con un buildpack. Gradle construye nuestro proyecto y ejecuta las pruebas. Estas pruebas de integración fallan porque Testcontainers no puede iniciar los contenedores requeridos. ¿Qué se puede habilitar en cloudbuild.yml para hacer esto posible?

lang-yaml
steps:
- name: gcr.io/k8s-skaffold/pack
args:
- build
- '$_GCR_HOSTNAME/$PROJECT_ID/$_SERVICE_NAME:$COMMIT_SHA'
- '--env'
- 'BP_GRADLE_BUILD_ARGUMENTS=$_GRADLE_ARGS'
- '--tag=$_GCR_HOSTNAME/$PROJECT_ID/$_SERVICE_NAME:$_TAG_2'
- '--builder=paketobuildpacks/builder:base'
- '--path=.'
id: Buildpack
entrypoint: pack

Gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para hacer que Testcontainers funcione con el proceso de compilación basado en buildpacks de Cloud Build, puedes habilitar el uso compartido del socket de Docker agregando las siguientes líneas al archivo cloudbuild.yaml antes del paso “Buildpack”:

    options:
      machineType: N1_HIGHCPU_8
      volumes:
      - name: "docker-cache"
        path: "/cache"
    steps:
    - name: "docker"
      args: ["run", "--rm", "-v", "docker-cache:/var/lib/docker", "-v", "/var/run/docker.sock:/var/run/docker.sock", "alpine", "true"]
      id: "Configurar caché de Docker"
    - name: gcr.io/k8s-skaffold/pack
      args:
      - build
      - '$_GCR_HOSTNAME/$PROJECT_ID/$_SERVICE_NAME:$COMMIT_SHA'
      - '--env'
      - 'BP_GRADLE_BUILD_ARGUMENTS=$_GRADLE_ARGS'
      - '--tag=$_GCR_HOSTNAME/$PROJECT_ID/$_SERVICE_NAME:$_TAG_2'
      - '--builder=paketobuildpacks/builder:base'
      - '--path=.'
      id: Buildpack
      entrypoint: pack
    

    Esto montará el socket de Docker de la máquina host en el contenedor que ejecuta la compilación, lo que permitirá que Testcontainers inicie los contenedores requeridos. Ten en cuenta que esto puede tener implicaciones de seguridad y se debe utilizar con precaución.

Comments are closed.