1. Przegląd
Artifact Registry to rozwinięcie Container Registry. Jest to jedno miejsce, w którym organizacja może zarządzać obrazami kontenerów i pakietami językowymi (takimi jak Maven i npm). Jest w pełni zintegrowana z narzędziami i środowiskami wykonawczymi Google Cloud oraz obsługuje zarządzanie zależnościami na podstawie języka do użytku z narzędziami takimi jak npm i Maven. Ułatwia to integrację z narzędziami CI/CD w celu skonfigurowania zautomatyzowanych potoków.
W tym module poznasz niektóre funkcje dostępne w Artifact Registry.
Czego się nauczysz
Jakie są cele tego modułu?
- Tworzenie repozytoriów dla kontenerów i pakietów językowych
- Zarządzanie obrazami kontenerów za pomocą Artifact Registry
- Konfigurowanie narzędzia Maven do używania Artifact Registry w przypadku zależności Javy
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz ją zaktualizować w dowolnym momencie.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle jest on oznaczony jako
PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i będzie obowiązywać przez cały czas trwania projektu. - Warto wiedzieć, że istnieje też trzecia wartość, czyli numer projektu, z której korzystają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub cały projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Konfigurowanie gcloud
W Cloud Shell ustaw identyfikator projektu i numer projektu. Zapisz je jako zmienne PROJECT_ID i PROJECT_NUMBER.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Włączanie usług Google
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Pobieranie kodu źródłowego
Kod źródłowy tego modułu znajduje się w organizacji GoogleCloudPlatform na GitHubie. Sklonuj go za pomocą poniższego polecenia, a następnie przejdź do katalogu.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Praca z obrazami kontenerów
Tworzenie repozytorium Dockera w Artifact Registry
Artifact Registry obsługuje zarządzanie obrazami kontenerów i pakietami językowymi. Różne typy artefaktów wymagają różnych specyfikacji. Na przykład żądania zależności Maven różnią się od żądań zależności Node.
Aby obsługiwać różne specyfikacje interfejsu API, usługa Artifact Registry musi wiedzieć, w jakim formacie mają być zwracane odpowiedzi interfejsu API. Aby to zrobić, utwórz repozytorium i przekaż flagę --repository-format wskazującą typ repozytorium.
Aby utworzyć repozytorium obrazów Dockera, uruchom w Cloud Shell to polecenie:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Jeśli pojawi się prośba o autoryzację Cloud Shell, kliknij Autoryzuj.
Otwórz konsolę Google Cloud – Artifact Registry – Repozytoria i zwróć uwagę na nowo utworzone repozytorium Dockera o nazwie container-dev-repo. Jeśli je klikniesz, zobaczysz, że jest ono obecnie puste.
Konfigurowanie uwierzytelniania Dockera w Artifact Registry
Podczas łączenia się z Artifact Registry wymagane są dane logowania, aby zapewnić dostęp. Zamiast konfigurować oddzielne dane logowania, możesz skonfigurować Dockera tak, aby bezproblemowo korzystał z danych logowania gcloud.
Aby skonfigurować Dockera tak, aby używał Google Cloud CLI do uwierzytelniania żądań do Artifact Registry w regionie us-central1, uruchom w Cloud Shell to polecenie:
gcloud auth configure-docker us-central1-docker.pkg.dev
Polecenie wyświetli prośbę o potwierdzenie zmiany konfiguracji Dockera w Cloud Shell. Naciśnij Enter.
Zapoznaj się z przykładową aplikacją
Przykładowa aplikacja jest dostępna w repozytorium Git sklonowanym w poprzednim kroku. Przejdź do katalogu java i sprawdź kod aplikacji.
cd cloud-code-samples/java/java-hello-world
Folder zawiera przykładową aplikację w języku Java, która renderuje prostą stronę internetową. Oprócz różnych plików nieistotnych w tym module zawiera kod źródłowy w folderze src oraz plik Dockerfile, którego użyjemy do lokalnego utworzenia obrazu kontenera.
Tworzenie obrazu kontenera
Zanim zaczniesz przechowywać obrazy kontenerów w Artifact Registry, musisz utworzyć repozytorium.
Uruchom to polecenie, aby utworzyć obraz kontenera i odpowiednio go otagować, tak aby w następnym kroku można było go przenieść do repozytorium:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Przesyłanie obrazu kontenera do Artifact Registry
Uruchom to polecenie, aby przesłać obraz kontenera do utworzonego wcześniej repozytorium:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Sprawdzanie obrazu w Artifact Registry
Otwórz konsolę Google Cloud – Artifact Registry – Repozytoria. kliknij container-dev-repo i sprawdź, czy jest tam obraz java-hello-world. Kliknij obraz i zwróć uwagę na obraz oznaczony tagiem tag1. Możesz sprawdzić, czy skanowanie pod kątem luk w zabezpieczeniach jest w toku lub zostało już zakończone, a także zobaczyć liczbę wykrytych luk w zabezpieczeniach.

Kliknij liczbę luk w zabezpieczeniach, aby wyświetlić listę luk wykrytych na obrazie wraz z nazwą biuletynu CVE i poziomem ważności. Aby uzyskać więcej informacji, kliknij WYŚWIETL przy każdej z nich:

4. Praca z pakietami językowymi
W tej sekcji dowiesz się, jak skonfigurować repozytorium Java w Artifact Registry i przesłać do niego pakiety, aby wykorzystywać je w różnych aplikacjach.
Tworzenie repozytorium pakietów Javy
Aby utworzyć repozytorium artefaktów Javy, uruchom w Cloud Shell to polecenie:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Jeśli pojawi się prośba o autoryzację Cloud Shell, kliknij Autoryzuj.
Otwórz konsolę Google Cloud – Artifact Registry – Repozytoria. Zobaczysz nowo utworzone repozytorium Maven o nazwie container-dev-java-repo. Jeśli je klikniesz, zobaczysz, że jest ono obecnie puste.
Konfigurowanie uwierzytelniania w Artifact Repository
Aby zaktualizować znaną lokalizację domyślnego uwierzytelniania aplikacji (ADC) za pomocą danych logowania konta użytkownika, tak aby pomocnik danych logowania Artifact Registry mógł ich używać do uwierzytelniania podczas łączenia się z repozytoriami, użyj tego polecenia:
gcloud auth login --update-adc
Konfigurowanie Mavena na potrzeby Artifact Registry
Uruchom to polecenie z folderu java-hello-world, aby otworzyć edytor Cloud Shell i dodać folder aplikacji do obszaru roboczego:
cloudshell workspace .
Włącz pliki cookie innych firm, klikając „Czy witryna działa już prawidłowo?” i „Zezwól na pliki cookie”.
Po ponownym załadowaniu przeglądarki otwórz Cloud Shell i jeszcze raz uruchom powyższe polecenie, aby załadować folder aplikacji.


Otwórz plik pom.xml w edytorze Cloud Shell, kliknij „Otwórz edytor”.

Otwórz terminal w edytorze Cloud Shell i uruchom to polecenie, aby wydrukować konfigurację repozytorium do dodania do projektu Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
i dodaj zwrócone ustawienia do odpowiednich sekcji w pliku pom.xml.
Widok edytora Cloud z wbudowanym terminalem:

Zaktualizuj sekcję distributionManagement.
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
Zaktualizuj sekcję repozytoria.
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Zaktualizuj rozszerzenia.
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Oto przykład pełnego pliku. Pamiętaj, aby zastąpić <PROJECT> identyfikatorem projektu.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>hello-world</artifactId>
<packaging>jar</packaging>
<name>Cloud Code Hello World</name>
<description>Getting started with Cloud Code</description>
<version>1.0.0</version>
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<properties>
<java.version>1.8</java.version>
<checkstyle.config.location>./checkstyle.xml</checkstyle.config.location>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
</build>
<!-- The Spring Cloud GCP BOM will manage spring-cloud-gcp version numbers for you. -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.2.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
</dependencies>
</project>
Przesyłanie pakietu Java do Artifact Registry
Po skonfigurowaniu Artifact Registry w Maven możesz używać Artifact Registry do przechowywania plików JAR w języku Java, które będą wykorzystywane przez inne projekty w Twojej organizacji.
Aby przesłać pakiet Java do Artifact Registry, uruchom to polecenie:
mvn deploy
Sprawdzanie pakietu Java w Artifact Registry
Otwórz konsolę Cloud – Artifact Registry – Repozytoria. Kliknij container-dev-java-repo i sprawdź, czy jest tam artefakt binarny hello-world:

5. Gratulacje!
Gratulacje! Codelab został ukończony.
Omówione zagadnienia
- Utworzone repozytoria kontenerów i pakietów językowych
- Zarządzanie obrazami kontenerów za pomocą Artifact Registry
- Skonfigurowano Mavena do używania Artifact Registry w przypadku zależności Javy
Czyszczenie
Aby usunąć projekt, uruchom to polecenie:
gcloud projects delete $PROJECT_ID