In Cloud Build einbinden

Auf dieser Seite wird beschrieben, wie Sie Cloud Build zum Speichern von erstellten Artefakten in einem Artifact Registry-Repository konfigurieren.

Hinweis

  1. Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein neues Repository.
  2. Wenn sich Cloud Build und Ihr Repository in verschiedenen Projekten befinden oder SieBenutzerdefiniertes Dienstkonto um Builds auszuführen, die Rolle "Artifact Registry-Autor" gewähren an das Build-Dienstkonto im Projekt mit den Repositories.

    Das Cloud Build-Standarddienstkonto hat Berechtigungen zum Hochladen und Herunterladen aus Repositories im selben Projekt.

Docker-Build konfigurieren

Nachdem Sie dem Ziel-Repository Berechtigungen gewährt haben, können Sie den Build konfigurieren.

So konfigurieren Sie Ihren Build:

  1. Fügen Sie in Ihrer Build-Konfigurationsdatei den Schritt zum Erstellen und Taggen des Images hinzu.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ]
    images:
    - '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
    

    Dieses Snippet verwendet Cloud Build-Substitutionen. Dieser Ansatz ist nützlich, wenn Sie dieselbe Build-Konfigurationsdatei verwenden möchten, um Images in Repositories für verschiedene Umgebungen wie Tests, Staging oder Produktion zu übertragen.

    • ${_LOCATION}, ${_REPOSITORY} und ${_IMAGE} sind eine benutzerdefinierte Ersetzung in Bezug auf den Speicherort des Repositorys, den Repository-Namen und das Image. Sie geben die Werte für diese Variablen bei der Erstellung an.
    • $PROJECT_ID ist eine Standardsubstitution, die von Cloud Build mit der Google Cloud-Projekt-ID für den Build aufgelöst wird.

      • Wenn Sie den Befehl gcloud builds submit ausführen, verwendet Cloud Build die aktive Projekt-ID in der gcloud-Sitzung.
      • Wenn Sie einen Build-Trigger verwenden, verwendet Cloud Build die ID des Projekts, in dem Cloud Build ausgeführt wird.

      Alternativ können Sie eine benutzerdefinierte Substitution anstelle von $PROJECT_ID verwenden, damit Sie eine Projekt-ID beim Build angeben können.

  2. Wenn Sie zum Ausführen des Builds bereit sind, geben Sie Werte für die benutzerdefinierten Substitutionen an. Dieser Befehl ersetzt beispielsweise:

    • us-east1 für den Repository-Speicherort
    • my-repo für den Repository-Namen
    • my-image für den Image-Namen
    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_IMAGE="my-image" .
    

Java-Build konfigurieren

Nachdem Sie dem Ziel-Repository Berechtigungen gewährt haben, können Sie den Build konfigurieren. In der folgenden Anleitung wird beschrieben, wie Sie Ihren Build zum Hochladen eines Java-Pakets in ein Maven-Repository konfigurieren.

So konfigurieren Sie Ihren Build:

  1. Richten Sie die Authentifizierung für Maven ein. Achten Sie darauf, dass Sie in der Datei pom.xml das richtige Zielprojekt und Repository angeben.

  2. Fügen Sie Ihrer Cloud Build-Konfigurationsdatei einen Schritt hinzu, um das Paket mit Maven hochzuladen:

    steps:
    - name: gcr.io/cloud-builders/mvn
      args: ['deploy']
    

Node.js-Build konfigurieren

Nachdem Sie dem Ziel-Repository Berechtigungen gewährt haben, können Sie den Build konfigurieren. In der folgenden Anleitung wird beschrieben, wie Sie Ihren Build zum Hochladen eines Node.js-Pakets in ein npm-Repository konfigurieren.

So konfigurieren Sie Ihren Build:

  1. Richten Sie die Authentifizierung für npm ein. Achten Sie darauf, in der Datei .npmrc das richtige Zielprojekt und das richtige Repository anzugeben.

  2. Fügen Sie der Datei package.json in Ihrem Projekt ein Skript hinzu, das das Zugriffstoken für die Authentifizierung beim Repository aktualisiert.

    "scripts": {
     "artifactregistry-login": "npx google-artifactregistry-auth"
    }
    
  3. Fügen Sie den Schritt zum Hochladen des Pakets in das Repository in Ihre Build-Konfigurationsdatei ein.

    steps:
    - name: gcr.io/cloud-builders/npm
      args: ['run', 'artifactregistry-login', '${_NPMRC}']
    - name: gcr.io/cloud-builders/npm
      args: ['publish', '${_PACKAGE}']
    

    In diesem Snippet:

    • ${_PACKAGE} ist der Speicherort des Pakets, des Ordners oder eines mit gzip komprimierten Tarballs, der package.json und andere Dateien in Ihrem Paket enthält.
    • ${_NPMRC} ist der Pfad zur npmrc-Datei.

    Geben Sie die Werte für diese Variablen beim Erstellen in Cloud Build Substitutionen an.

    Mit diesem Befehl wird beispielsweise ein Paket in einem Verzeichnis mit dem Namen src mit der Konfiguration in /home/username/.npmrc hochgeladen:

    gcloud builds submit --config=cloudbuild.yaml \
        --substitutions=_PACKAGE="src",_NPMRC="/home/username/.npmrc" .
    

Python-Build konfigurieren

Nachdem Sie dem Ziel-Repository Berechtigungen gewährt haben, können Sie den Build konfigurieren. In der folgenden Anleitung wird beschrieben, wie Sie Ihren Build zum Hochladen eines Python-Pakets in ein Python-Repository konfigurieren und mit pip installieren.

Informationen zum Erstellen und Containerisieren einer Python-Anwendung und zum anschließenden Verschieben in ein Docker-Repository finden Sie unter Python-Anwendungen erstellen in der Cloud Build-Dokumentation.

So konfigurieren Sie Ihren Build:

  1. Erstellen Sie im Verzeichnis mit der Build-Konfigurationsdatei für Cloud Build eine Datei mit dem Namen requirements.txt und den folgenden Abhängigkeiten:

    twine
    keyrings.google-artifactregistry-auth
    
    • Twine dient zum Hochladen von Paketen in Artifact Registry.
    • keyrings.google-artifactregistry-auth ist das Artifact Registry-Schlüsselbund-Back-End, das die Authentifizierung mit Artifact Registry für pip und Twine durchführt.
  2. Fügen Sie der Build-Konfigurationsdatei die folgenden Schritte hinzu, um ein Python-Paket in Ihr Python-Repository in Ihrem Build hochzuladen:

    steps:
    - name: python
      entrypoint: pip
      args: ["install", "-r", "requirements.txt", "--user"]
    - name: python
      entrypoint: python
      args:
      - '-m'
      - 'twine'
      - 'upload'
      - '--repository-url'
      - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/'
      - 'dist/*'
    

    In diesem Snippet werden im ersten Schritt Twine und das Artifact Registry-Schlüsselbund-Back-End installiert. Im zweiten Schritt werden die erstellten Python-Dateien in das Unterverzeichnis dist hochgeladen. Passen Sie die Pfade zu requirements.txt und Ihren erstellten Python-Dateien an, wenn sie nicht mit dem Snippet übereinstimmen.

    Der Repository-Pfad enthält Cloud Build-Substitutionen. Dieser Ansatz ist nützlich, wenn Sie dieselbe Build-Konfigurationsdatei zum Hochladen von Paketen in Repositories für verschiedene Umgebungen verwenden möchten, z. B. für Tests, Staging oder Produktion.

    • ${_LOCATION} und ${_REPOSITORY} sind benutzerdefinierte Ersetzungen für den Repository-Speicherort, den Repository-Namen und den Paketnamen. Sie geben die Werte für diese Variablen bei der Erstellung an.
    • $PROJECT_ID ist eine Standardsubstitution, die von Cloud Build mit der Google Cloud-Projekt-ID für den Build aufgelöst wird.

      • Wenn Sie den Befehl gcloud builds submit ausführen, verwendet Cloud Build die aktive Projekt-ID in der gcloud-Sitzung.
      • Wenn Sie einen Build-Trigger verwenden, verwendet Cloud Build die ID des Projekts, in dem Cloud Build ausgeführt wird.

      Alternativ können Sie eine benutzerdefinierte Substitution anstelle von $PROJECT_ID verwenden, damit Sie eine Projekt-ID beim Build angeben können.

  3. Fügen Sie der Build-Konfigurationsdatei die entsprechenden Schritte hinzu, um das Paket aus dem Python-Repository zu installieren.

    • Wenn sich beide Dienste im selben Projekt befinden, müssen Sie nur den Befehl pip install ausführen.

      steps:
      - name: python
        entrypoint: pip
        args:
        - 'install'
        - '--index-url'
        - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/simple/'
        - '${_PACKAGE}'
        - '--verbose'
      
    • Wenn sich Cloud Build und Artifact Registry in verschiedenen Projekten befinden, müssen Sie die Abhängigkeiten in requirements.txt installieren, bevor Sie Pakete installieren.

      steps:
      - name: python
        entrypoint: pip
        args: ["install", "-r", "requirements.txt", "--user"]
      - name: python
        entrypoint: pip
        args:
        - 'install'
        - '--index-url'
        - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/simple/'
        - '${_PACKAGE}'
        - '--verbose'
      

    Dieses Snippet enthält eine zusätzliche ${_PACKAGE}-Ersetzung für den Paketnamen.

  4. Wenn Sie zum Ausführen des Builds bereit sind, geben Sie Werte für die benutzerdefinierten Substitutionen an. Dieser Befehl ersetzt beispielsweise:

    • us-east1 für den Repository-Speicherort
    • my-repo für den Repository-Namen
    • my-package für den Paketnamen
    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_PACKAGE="my-package" .