Auf dieser Seite wird erläutert, wie Sie mit Cloud Build Node.js
-Anwendungen erstellen und testen, erstellte Artefakte in einem npm-Repository in Artifact Registry speichern und Informationen zur Build-Herkunft generieren.
Mit Cloud Build können Sie jedes öffentlich verfügbare Container-Image zur Ausführung Ihrer Aufgaben verwenden. Das öffentliche node
-Image aus Docker Hub ist im npm
-Tool vorinstalliert. Sie können Cloud Build so konfigurieren, dass Ihr Node.js
-Projekt mit diesem Tool erstellt wird.
Hinweise
Die Anleitung auf dieser Seite setzt voraus, dass Sie mit Node.js
vertraut sind. Außerdem gilt:
- Machen Sie sich mit npm vertraut.
- Halten Sie Ihr
Node.js
-Projekt bereit, einschließlich der Dateienpackage.json
undtest.js
. - Die Datei
package.json
muss einstart
- und eintest
-Skript enthalten. - Machen Sie sich damit vertraut, wie eine Cloud Build-Konfigurationsdatei geschrieben wird.
- Sie müssen ein npm-Repository in Artifact Registry haben. Erstellen Sie ein neues Repository, falls Sie noch keines haben.
- Zum Ausführen der
gcloud
-Befehle auf dieser Seite installieren Sie die Google Cloud CLI.
Mit npm
erstellen
Damit die Aufgaben im Image node
von Docker Hub ausgeführt werden, geben Sie in der Cloud Build-Konfigurationsdatei im Feld name
die Image-URL an.
Cloud Build startet den im Feld name
angegebenen Container mithilfe des Standardeinstiegspunkts des Images. Wenn Sie den Standardeinstiegspunkt überschreiben und definieren möchten, wie der Build-Schritt ausgeführt werden soll, wenn er ausgelöst wird, fügen Sie dem Build-Schritt ein entrypoint
-Feld hinzu. Das node
-Image in Docker Hub ist im npm
-Tool vorinstalliert. Geben Sie die Tools im Feld entrypoint
an, um sie als Einstiegspunkt für Ihren Build-Schritt aufzurufen.
Für die folgende Beispiel-Build-Konfigurationsdatei gilt:
- Das Feld
name
gibt an, dass das Imagenode
aus Docker Hub von Cloud Build zum Ausführen Ihrer Aufgabe verwendet wird. Wenn Sie das Imagenode
angeben, können Sie entweder die Knotenversion auslassen, um standardmäßig:latest
zu verwenden, oder eine Knotenversion angeben, um eine bestimmte Version zu verwenden.name: node
verwendet beispielsweise die neueste Knotenversion undname: node:12
verwendetnode:12
. Das Feld
entrypoint
gibt an, dass dasnpm
-Tool verwendet wird, wenn dasnode
-Image aufgerufen wird.steps: - name: 'node' entrypoint: 'npm'
Node.js
-Builds konfigurieren
Erstellen Sie im Stammverzeichnis des Projekts eine Konfigurationsdatei mit dem Namen
cloudbuild.yaml
.Abhängigkeiten installieren: Bevor Sie die Anwendung erstellen können, müssen Sie dafür sorgen, dass alle Abhängigkeiten Ihres Projekts über
npm
installiert werden. Sie können Abhängigkeiten mit dem Befehlinstall
im Build-Schrittnpm
installieren. Im Feldargs
eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feld "name" verwiesen wird. Fügen Sie in der Build-Konfigurationsdateiinstall
zum Feldargs
hinzu, um den Befehlinstall
aufzurufen:steps: - name: 'node' entrypoint: 'npm' args: ['install']
Tests hinzufügen: Wenn Sie in der
package.json
eintest
-Skript definiert haben, können Sie Cloud Build so konfigurieren, dass es das Skript ausführt, indem Sietest
zum Feldargs
hinzufügen:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
Benutzerdefinierte Befehle ausführen: Wenn die
package.json
benutzerdefinierte Befehle enthält, können Sie Cloud Build für die Ausführung dieser Befehle konfigurieren. Fügen Sie im Feldargs
run
als erstes Argument hinzu, gefolgt vom Namen des benutzerdefinierten Befehls. Die folgende Build-Konfigurationsdatei enthält Argumente zum Ausführen eines benutzerdefinierten Befehls namensbuild
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test'] - name: 'node' entrypoint: 'npm' args: ['run', 'build']
In Artifact Registry hochladen:
Fügen Sie der Konfigurationsdatei das Feld
npmPackages
hinzu und geben Sie Ihr npm-Repository in Artifact Registry an:artifacts: npmPackages: - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME' packagePath: 'PACKAGE_PATH'
Ersetzen Sie die folgenden Werte:
- LOCATION: der Speicherort für Ihr Repository in Artifact Registry.
- PROJECT_ID: die ID des Google Cloud-Projekts, das Ihr Artifact Registry-Repository enthält.
- REPOSITORY_NAME: der Name Ihres npm-Repositorys in Artifact Registry.
- PACKAGE_PATH: der Pfad für das lokale Verzeichnis mit dem npm-Paket, das Sie in Artifact Registry hochladen möchten. Wir empfehlen die Verwendung eines absoluten Pfads. Ihr
PACKAGE_PATH
-Wert kann.
sein, um das aktuelle Arbeitsverzeichnis zu verwenden. Das Feld darf aber nicht weggelassen oder leer bleiben. Dieses Verzeichnis muss einepackage.json
-Datei enthalten.
Optional: Provenance-Generierung aktivieren
Cloud Build kann überprüfbare Supply Chain Levels for Software Artifacts (SLSA)-Build-Herkunftsmetadaten generieren, um Ihre CI-Pipeline zu sichern.
Zum Aktivieren der Generierung der Herkunft fügen Sie
requestedVerifyOption: VERIFIED
in den Abschnittoptions
Ihrer Konfigurationsdatei ein.Build starten: Manuell oder mithilfe von Build-Triggern
Sobald der Build abgeschlossen ist, können Sie sich in Artifact Registry Repository-Details ansehen.
Sie können sich auch Build-Herkunftsmetadaten ansehen und Herkunft prüfen.
Mehrere node
-Versionen testen
Manchmal muss Ihr Projekt in mehreren Versionen von node
funktionieren. Sie können Cloud Build-Trigger folgendermaßen erstellen und konfigurieren:
- Geben Sie in der Build-Konfigurationsdatei die
node
-Version als eine Substitutionsvariable an. - Erstellen Sie einen Trigger für jede Version von
node
, mit der Sie Ihre Anwendung erstellen möchten. - Verwenden Sie in den einzelnen Triggereinstellungen das Feld für den Wert der Substitutionsvariable, um die Version von
node
für den jeweiligen Trigger anzugeben.
In den folgenden Schritten wird erläutert, wie Sie die node
-Version mithilfe von triggerspezifischen Substitutionsvariablen angeben:
Fügen Sie im Stammverzeichnis Ihres Repositorys eine Build-Konfigurationsdatei hinzu, die die Version
node
als Substitutionsvariable angibt. Im folgenden Beispiel für eine Build-Konfigurationsdatei ist$_NODE_VERSION
eine benutzerdefinierte Substitutionsvariable:steps: - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['install'] - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['test']
Erstellen Sie für jede Version von
node
, die Sie erstellen möchten, einen Build-Trigger. Gehen Sie dazu so vor:Öffnen Sie in der Google Cloud Console die Seite Trigger:
Wählen Sie oben auf der Seite im Drop-down-Menü zur Projektauswahl Ihr Projekt aus.
Klicken Sie auf Öffnen.
Klicken Sie auf Trigger erstellen.
Auf der Seite Erstellen Sie einen Trigger geben Sie die folgenden Einstellungen ein:
Geben Sie einen Namen für den Trigger ein.
Wählen Sie das Repository-Ereignis aus, das den Trigger aufrufen soll.
Wählen Sie das Repository aus, das Ihren Quellcode und die Build-Konfigurationsdatei enthält.
Geben Sie den regulären Ausdruck für den Zweig- oder Tag-Namen an, mit dem der Trigger gestartet wird.
Konfiguration: Wählen Sie die Build-Konfigurationsdatei aus, die Sie zuvor erstellt haben.
Klicken Sie unter Substitutionsvariablen auf Variable hinzufügen.
- Geben Sie unter Variable die Versionsvariable
node
an, die Sie in der Build-Konfigurationsdatei verwendet haben, und unter Wert die Version vonnode
. Zum Beispiel:_NODE_VERSION
und12
- Geben Sie unter Variable die Versionsvariable
Klicken Sie auf Erstellen, um den Build-Trigger zu speichern.
Sie können diese Trigger verwenden, um Ihren Code auf der Version von node
zu erstellen, die Sie im Trigger angegeben haben.
Nächste Schritte
- Build-Ergebnisse aufrufen
- Builds schützen
- Container-Images erstellen
- Go-Anwendungen erstellen
- Blau/Grün-Bereitstellungen in Compute Engine ausführen
- Build-Fehler beheben