1. Omówienie
Artifact Registry umożliwia przechowywanie różnych typów artefaktów, tworzenie wielu repozytoriów w jednym projekcie oraz powiązanie określonego regionu lub wielu regionów z każdym repozytorium. Istnieje kilka trybów repozytorium. Każdy tryb służy do innych celów. Poniższy diagram przedstawia jeden z wielu możliwych sposobów jednoczesnego korzystania z repozytoriów w różnych trybach. Diagram przedstawia przepływ pracy w 2 projektach Google Cloud. W projekcie programistycznym programiści tworzą aplikację w Javie. W osobnym projekcie środowiska wykonawczego inna kompilacja tworzy obraz kontenera z aplikacją w celu wdrożenia w Google Kubernetes Engine.
W tym module nauczysz się wykonywać poniższe zadania.
- Użyj standardowych repozytoriów do wdrażania pakietów prywatnych
- Używaj zdalnych repozytoriów do buforowania centralnych pakietów Maven
- Użyj wirtualnych repozytoriów, aby połączyć kilka repozytoriów nadrzędnych w jednej konfiguracji
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zmienić.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń z programowania konieczne jest odwołanie się do identyfikatora projektu (zwykle nazywa się on
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Potem nie będzie można go zmienić. Pozostanie ono przez czas trwania projektu. - Dostępna jest trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub cały projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Konfiguracja Workspace
Konfigurowanie gcloud
W Cloud Shell ustaw identyfikator 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łącz interfejsy API
gcloud services enable artifactregistry.googleapis.com
Kopiowanie repozytorium
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
2. Standardowe repozytoria
Standardowe repozytoria umożliwiają przechowywanie prywatnych pakietów i udostępnianie ich w innych aplikacjach.
Utwórz standardowe repozytorium Maven
W Cloud Shell uruchom to polecenie, aby utworzyć repozytorium artefaktów Javy:
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 Google Cloud Console – Artifact Registry – Repozytoria i zwróć uwagę na nowo utworzone repozytorium Maven o nazwie container-dev-java-repo
. Jeśli je klikniesz, zobaczysz, że w tej chwili jest puste.
gcloud artifacts repositories describe container-dev-java-repo \
--location=us-central1
Powinna zwrócić odpowiedź podobną do tej
Encryption: Google-managed key Repository Size: 0.000MB createTime: '2023-03-21T19:01:45.461589Z' description: Java package repository for Container Dev Workshop format: MAVEN mavenConfig: {} mode: STANDARD_REPOSITORY name: projects/qwiklabs-gcp-03-4304110dc461/locations/us-central1/repositories/container-dev-java-repo updateTime: '2023-03-21T19:01:45.461589Z'
Konfigurowanie Maven dla Artifact Registry
Uruchom to polecenie, aby wyświetlić konfigurację repozytorium w celu dodania jej do projektu Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
Poprzednie polecenie zwraca plik XML, który należy dodać do pliku pom.xml projektu.
- Sekcja repozytoriów określa, gdzie Maven może pobrać zdalne artefakty do wykorzystania w bieżącym projekcie.
- Sekcja distributionManagement określa, do którego repozytorium zdalnego projekt zostanie wypchnięty po wdrożeniu.
- Sekcja Rozszerzenia umożliwia dodanie elementu Artifact Registry-maven-wagon, który włącza warstwę uwierzytelniania i transportu niezbędną do łączenia się z Artifact Registry.
- Uwaga: rozszerzenia mogą występować w plikach pom.xml lub extensions.xml. W sytuacjach, gdy projekt zależy od projektu nadrzędnego, dostęp do tych zależności uzyskuje się przed wczytaniem pozostałych wpisów w pliku pom.xml. Aby zapewnić, że element nadrzędny ma dostęp do rozszerzenia, możesz go umieścić w pliku extensions.xml, który zostanie wczytany przed plikiem pom.xml, co zapewni jego dostępność dla zależności nadrzędnych.
Skopiuj te 3 sekcje, a następnie otwórz plik pom.xml
w edytorze Cloud Shell i dodaj zwrócone ustawienia u dołu pliku, bezpośrednio w zamykającym tagu project
.
Wskazówka: w Cloud Shell uruchom w terminalu poniższe polecenie, aby otworzyć edytor w bieżącym katalogu.
cloudshell workspace .
Przykład: (nazwy projektów będą inne w adresach URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
</project>
Przesyłanie pakietu Javy do Artifact Registry
Po skonfigurowaniu Artifact Registry w Maven możesz używać Artifact Registry do przechowywania plików jar w Javie na potrzeby innych projektów w organizacji.
Uruchom to polecenie, aby przesłać pakiet Javy do Artifact Registry:
mvn deploy -DskipTests
Jeśli chcesz uruchomić to polecenie jeszcze raz, zwiększ wersję w pliku pom.xml.
Sprawdzanie pakietu Javy w Artifact Registry
Otwórz Cloud Console – Artifact Registry – Repozytoria. Kliknij container-dev-java-repo
i sprawdź, czy znajduje się tam artefakt binarny hello-world
:
3. Zdalne repozytoria
Zdalne Repozytoria umożliwiają buforowanie pakietów innych firm w celu zwiększenia niezawodności i bezpieczeństwa.
Tworzenie repozytorium zdalnego
Uwaga: szczegółowe informacje o uwierzytelnianiu i konfigurowaniu znajdziesz w dokumentacji usługi.
W Cloud Shell uruchom to polecenie, aby utworzyć zdalne repozytorium artefaktów Maven Central:
gcloud artifacts repositories create maven-central-cache \
--project=$PROJECT_ID \
--repository-format=maven \
--location=us-central1 \
--description="Remote repository for Maven Central caching" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-mvn-repo=MAVEN-CENTRAL
Sprawdź repozytorium w konsoli
Otwórz Cloud Console – Artifact Registry – Repozytoria. Kliknij maven-central-cache
i zobacz, że zostało utworzone i obecnie jest puste.
Sprawdź repozytorium w terminalu
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
Zintegruj repozytorium z projektem
Uruchom to polecenie, aby wyświetlić konfigurację repozytorium w celu dodania jej do projektu Java:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
Dodaj sekcję repozytorium do pliku pom.xml. Nie kopiuj zewnętrznych <repositories> tagu wyjściowego.
Zmień identyfikator nowo dodanego repozytorium na „central” aby zapewnić, że każdy wpis repozytorium ma unikalny identyfikator.
Przykład: (nazwy projektów będą inne w adresach URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>central</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/maven-central-cache</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
</project>
Aby utworzyć extensions.xml
dla projektu, uruchom następujące polecenia w terminalu. Aby użyć mechanizmu rozszerzeń podstawowych, który pozwoli Maven rozpoznać zależności elementów nadrzędnych i wtyczek z Artifact Registry.
mkdir .mvn
cat > .mvn/extensions.xml << EOF
<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
EOF
Pobieranie zależności ze zdalnego repozytorium
Uruchom następujące polecenie, aby skompilować aplikację przy użyciu zdalnego repozytorium:
rm -rf ~/.m2/repository
mvn compile
Przejrzyj pakiety w konsoli
Otwórz Cloud Console – Artifact Registry – Repozytoria. Kliknij maven-central-cache
i sprawdź, czy artefakty binarne znajdują się w pamięci podręcznej:
4. Repozytoria wirtualne
Wirtualne repozytoria działają jak interfejs do wielu repozytoriów, do których można uzyskać dostęp w ramach jednej konfiguracji. Upraszcza to konfigurację klienta dla konsumentów artefaktów i zwiększa bezpieczeństwo przez łagodzenie ataków polegających na dezorientowaniu użytkowników w zależności.
Utwórz plik zasad
cat > ./policy.json << EOF
[
{
"id": "private",
"repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/container-dev-java-repo",
"priority": 100
},
{
"id": "central",
"repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/maven-central-cache",
"priority": 80
}
]
EOF
Tworzenie repozytorium wirtualnego
gcloud artifacts repositories create virtual-maven-repo \
--project=${PROJECT_ID} \
--repository-format=maven \
--mode=virtual-repository \
--location=us-central1 \
--description="Virtual Maven Repo" \
--upstream-policy-file=./policy.json
Zintegruj repozytorium z projektem
Uruchom to polecenie, aby wyświetlić konfigurację repozytorium w celu dodania jej do projektu Java:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
Zastąp całą sekcję repozytoriów w pomnie jedną sekcją repozytoriów wirtualnych z danych wyjściowych.
Przykład: (nazwy projektów będą inne w adresach URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/virtual-maven-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
</project>
Pobieranie zależności z wirtualnego repozytorium
Repozytorium wirtualne jest procesem przejściowym i nie będzie zawierać żadnych rzeczywistych pakietów, dlatego aby przedstawić dokładnie ten proces, usuń utworzone wcześniej repozytorium maven-central-cache i utwórz je ponownie, zaczynając od pustego repozytorium.
Uruchom następujące polecenia, aby odtworzyć repozytorium pamięci podręcznej
gcloud artifacts repositories delete maven-central-cache \
--project=$PROJECT_ID \
--location=us-central1 \
--quiet
gcloud artifacts repositories create maven-central-cache \
--project=$PROJECT_ID \
--repository-format=maven \
--location=us-central1 \
--description="Remote repository for Maven Central caching" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-mvn-repo=MAVEN-CENTRAL
Możesz sprawdzić puste repozytorium w konsoli. Otwórz Cloud Console – Artifact Registry – Repozytoria.
Teraz wykonaj ćwiczenia z wirtualnym repozytorium, tworząc swój projekt za pomocą tego polecenia
rm -rf ~/.m2/repository
mvn compile
Przejrzyj pakiety w konsoli
Otwórz Cloud Console – Artifact Registry – Repozytoria. Kliknij maven-central-cache
i sprawdź, czy artefakty binarne zostały skonfigurowane do pobierania z repozytorium wirtualnego, ale ostatecznie zostały pobrane z maven-central-cache
:
5. Gratulacje!
Gratulacje. Udało Ci się ukończyć ćwiczenia z programowania.
Co zostało omówione
- Użycie standardowych repozytoriów do wdrażania pakietów prywatnych
- Użycie zdalnych repozytoriów do buforowania centralnych pakietów Maven
- Wykorzystanie wirtualnych repozytoriów do połączenia wielu repozytoriów nadrzędnych w jednej konfiguracji
Czyszczenie
Aby usunąć projekt, uruchom to polecenie
gcloud projects delete ${PROJECT_ID}
–
Ostatnia aktualizacja: 22.03.2023 r.