Administra las dependencias de compilación

En esta página, se explica cómo puedes especificar las dependencias de compilación. Cloud Build te permite administrar las dependencias de código fuente por separado del proceso de compilación.

En el archivo de configuración de compilación, puedes enumerar uno o más repositorios para clonar para tu compilación y el orden en el que se deben recuperar. Si especificas las dependencias de esta manera, se separa la recuperación de dependencias del proceso de compilación en sí.

Si no incluyes ninguna dependencia en el archivo de configuración de compilación, Cloud Build clona el repositorio de código fuente que contiene el archivo de configuración de compilación (para compilaciones activadas) o el repositorio que contiene tu código fuente (para compilaciones que invocas desde la línea de comandos). Si incluyes dependencias en el archivo de configuración de compilación, Cloud Build clona solo los repositorios que se especifican en el campo dependencies.

Las dependencias se clonan en el orden en que las especificas. Además, la recuperación de dependencias se produce antes de que se ejecute cualquier lógica especificada por el usuario. Por lo tanto, la recuperación de dependencias es confiable.

Las dependencias se muestran en la pestaña Build dependencies de la página Build details.

Antes de comenzar

En las instrucciones de esta página, se supone que tienes al menos uno de los siguientes dos tipos de repositorios:

Para asegurarte de que tenga los permisos necesarios para agregar un repositorio de Developer Connect como dependencia, pídele a tu administrador que le otorgue el rol de IAM de Developer Connect Read Token Accessor (developerconnect.readTokenAccessor) a en tu cuenta de servicio. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda otorgar los permisos necesarios a través de roles personalizados o de otros roles predefinidos.

Especifica las dependencias

Para especificar dependencias, agrega un campo dependencies al archivo de configuración de compilación. dependencies es una propiedad de nivel superior en la configuración de compilación, pero puedes colocarla en cualquier lugar del archivo.

Especifica dependencias de GitHub

Para especificar una dependencia en un repositorio de GitHub, agrega la siguiente configuración de dependencies a tu archivo de configuración de compilación:

YAML

 dependencies:
 - gitSource:
     repository:
       url: 'URL'
       developerConnect: 'DC_RESOURCE_PATH'
     revision: 'REVISION'
     recurseSubmodules: 'true|false'
     fetchTags: 'true|false'
     depth: 'DEPTH'
     destPath: 'DEST_PATH'

JSON

 {
     "dependencies": {
         "gitSource": {
             "repository": {
                 "url": "URL"
                 "developerConnect": "DC_RESOURCE_PATH"
             },
             "revision": "REVISION",
             "recurseSubmodules": true|false,
             "fetchTags": true|false,
             "depth": "DEPTH",
             "destPath": "DEST_PATH",
         },
     },
 }

Reemplaza los siguientes valores:

  • URL: La URL HTTPS del repositorio que se recuperará. Es obligatorio, a menos que tu repositorio esté conectado a Cloud Build con Developer Connect.

  • DC_RESOURCE_PATH: Es la ruta de acceso al Google Cloud recurso de un repositorio de Developer Connect. Por ejemplo, projects/my-project/locations/us-central1/connections/my-connection/gitRepositoryLinks/my-repo. Es obligatorio si tu repositorio está conectado a Cloud Build con Developer Connect.

    Si tu repositorio está conectado con Developer Connect, necesitas lo siguiente:

  • REVISION: Obligatorio. Es la versión, el hash de confirmación, la etiqueta o el nombre de la rama que se recuperará del repositorio.

  • recurseSubmodules: 'true|false': Indica si se deben recuperar los submódulos.

  • fetchTags: 'true|false': Opcional. Es verdadero si también se deben recuperar las etiquetas remotas (el valor predeterminado es false). Nota: Cuando depth es 1 (predeterminado), git fetch solo recupera las etiquetas que apuntan a confirmaciones dentro del límite superficial. Establece depth en -1 para recuperar todas las etiquetas históricas.

  • DEPTH: Opcional. Indica qué tan profundo en el historial del repositorio se debe recuperar. Si no se especifica, se recupera la confirmación más reciente.

    • 1: La confirmación más reciente
    • 2: Las últimas dos confirmaciones
    • 3: Las últimas tres confirmaciones
    • -1: Todas las confirmaciones
  • DEST_PATH: Obligatorio. Es la ruta de acceso al directorio en el que se clona el repositorio. Por ejemplo, my/repo.

    Cuando estableces el dest_path, el repositorio se recupera en /workspace/<dest_path>. El valor dest_path debe ser una ruta de acceso relativa al directorio de trabajo de la compilación.

Especifica un artefacto genérico como dependencia

Para especificar un artefacto genérico como dependencia, agrega la siguiente configuración dependencies a tu archivo de configuración de compilación:

YAML

dependencies:
- genericArtifact:
    resource: RESOURCE
    destPath: PATH

JSON

{
  "dependencies": [
    {
      "genericArtifact": {
        "resource": "RESOURCE",
        "destPath": "PATH"
      }
    }
  ]
}

Aquí:

  • RESOURCE es la dirección completa del artefacto genérico dentro de tu repositorio genérico de Artifact Registry, con el siguiente formato:

    projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/packages/PACKAGE/versions/VERSION

    Te recomendamos que incluyas la huella digital de tu artefacto en la dirección del recurso para que Cloud Build pueda verificar que la referencia del artefacto sea inmutable. Una versión del paquete con una huella digital anexada tiene el siguiente formato:

    VERSION@dirsum_sha256=HASH_VALUE

    Para encontrar la huella digital de un artefacto en un repositorio de Artifact Registry, consulta Recupera la huella digital de una versión del paquete en tu repositorio.

  • PATH es la dirección de la carpeta a la que Cloud Build descarga el paquete de tu repositorio. Si la carpeta aún no existe, Cloud Build la crea automáticamente.

¿Qué sigue?