1. Omówienie
Umożliwia ona przechowywanie różnych typów artefaktów, tworzenie wielu repozytoriów w ramach jednego projektu oraz łączenie każdego repozytorium z konkretnym regionem lub wieloma regionami. Istnieje kilka trybów repozytorium. Każdy tryb służy do innego celu. Na diagramie poniżej przedstawiono jeden z wielu możliwych sposobów łącznego używania repozytoriów w różnych trybach. Diagram przedstawia przepływ pracy w 2 projektach Google Cloud. W projekcie programistycznym deweloperzy tworzą aplikację w Javie. W osobnym projekcie środowiska uruchomieniowego inna kompilacja tworzy obraz kontenera z aplikacją, który ma zostać wdrożony w Google Kubernetes Engine.
Z tego modułu dowiesz się, jak wykonać te czynności.
- Wdrażanie prywatnych pakietów za pomocą standardowych repozytoriów
- Używanie repozytoriów zdalnych do buforowania pakietów Maven Central
- Korzystanie z repozytoriów wirtualnych do łączenia wielu repozytoriów nadrzędnych w jednej konfiguracji
Konfigurowanie środowiska we własnym tempie
- 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órego nie używają interfejsy API Google. Możesz ją zaktualizować w dowolnym momencie.
- Identyfikator projektu jest niepowtarzalny w ramach wszystkich projektów Google Cloud i nie można go zmienić (po ustawieniu). Cloud Console automatycznie generuje unikalny ciąg znaków. Zwykle nie ma znaczenia, jaki to ciąg. W większości laboratoriów z kodem musisz odwoływać się do identyfikatora projektu (zazwyczaj jest to
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować inny losowy. Możesz też spróbować użyć własnego adresu i sprawdzić, czy jest on dostępny. Po tym kroku nie można go zmienić. Pozostanie ona niezmieniona przez cały czas trwania projektu. - Informacyjnie: istnieje jeszcze 3 wartość, numer projektu, którego używają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Cloud. Przejście przez ten Codelab nie powinno wiązać się z wielkimi kosztami, jeśli w ogóle będą jakieś. Aby wyłączyć zasoby, aby nie generować opłat po zakończeniu 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.
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
Repozytoria standardowe umożliwiają przechowywanie prywatnych pakietów i udostępnianie ich w innych aplikacjach.
Tworzenie standardowego repozytorium Maven
Aby utworzyć repozytorium dla artefaktów Java, 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ę monit o autoryzację Cloud Shell, kliknij Autoryzuj.
Otwórz konsolę Google Cloud – Rejestr artefaktów – Repozytoria i zwróć uwagę na nowo utworzone repozytorium Maven o nazwie container-dev-java-repo
. Jeśli klikniesz je, zobaczysz, że jest ono obecnie 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 Mavena w Artifact Registry
Aby wydrukować konfigurację repozytorium, którą chcesz dodać do projektu w Javie, uruchom to polecenie:
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.
- W sekcji repozytoria określa się, gdzie Maven może pobierać artefakty zdalne na potrzeby bieżącego projektu.
- Sekcja distributionManagement określa, do którego repozytorium zdalnego projekt będzie przesyłać dane podczas wdrażania.
- Sekcja extensions dodaje artifactregistry-maven-wagon, który umożliwia warstwę uwierzytelniania i transportu potrzebną do połączenia z Artifact Registry.
- Uwaga: rozszerzenia mogą znajdować się w pliku pom.xml lub extensions.xml. W przypadku, gdy projekt jest zależny od projektu nadrzędnego, dostęp do tych zależności jest uzyskiwany przed załadowaniem pozostałych wpisów w pliku pom.xml. Aby mieć pewność, że element nadrzędny ma dostęp do rozszerzenia, możesz umieścić je w pliku extensions.xml, który jest wczytywany przed plikiem pom.xml, dzięki czemu staje się ono dostępne dla elementów nadrzędnych.
Skopiuj te 3 sekcje, otwórz plik pom.xml
w edytorze Cloud Shell i dodaj zwrócone ustawienia na dole pliku tuż przed tagiem zamykającym project
.
Wskazówka: w Cloud Shell uruchom to polecenie w terminalu, aby otworzyć edytor w bieżącym katalogu.
cloudshell workspace .
Przykład: (nazwy projektów będą się różnić 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 Java do Artifact Registry
Po skonfigurowaniu repozytorium Artifact Registry w Maven możesz używać tego repozytorium do przechowywania plików JAR w języku Java, aby były dostępne dla innych projektów w Twojej organizacji.
Aby przesłać pakiet Java do Artifact Registry, uruchom to polecenie:
mvn deploy -DskipTests
Jeśli chcesz uruchomić to polecenie ponownie, zwiększ wersję w pliku pom.xml.
Sprawdzanie pakietu Javy w Artifact Registry
Otwórz Cloud Console – Artifact Registry – Repositories (Konsola Cloud – Artifact Registry – Repozytoria). Kliknij container-dev-java-repo
i sprawdź, czy znajduje się tam binarny element hello-world
:
3. Repozytoria zdalne
Repozytoria zdalne 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.
Aby utworzyć zdalne repozytorium dla artefaktów Maven Central, uruchom w Cloud Shell to polecenie:
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
Sprawdzanie repozytorium w konsoli
Kliknij Cloud Console – Artifact Registry – Repositories (Cloud Console – Artifact Registry – Repozytoria). Kliknij maven-central-cache
i zauważ, że repozytorium zostało utworzone i jest obecnie puste.
Sprawdzanie repozytorium w terminalu
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
Integracja repozytorium z projektem
Aby wydrukować konfigurację repozytorium, którą chcesz dodać do projektu w Javie, uruchom to polecenie:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
Dodaj sekcję repozytorium do pliku pom.xml. Nie kopiuj zewnętrznego tagu <repositories> z wyjścia.
Zmień identyfikator nowo dodanego repozytorium na „central”, aby każdy wpis repozytorium miał unikalny identyfikator.
Przykład: (nazwy projektów będą się różnić 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>
Uruchom w terminalu te polecenia, aby utworzyć extensions.xml
dla projektu. Aby użyć mechanizmu rozszerzeń podstawowych, który zapewnia, że Maven może rozwiązywać zależności nadrzędne lub zależność wtyczki 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
Aby skompilować aplikację za pomocą repozytorium zdalnego, uruchom to polecenie:
rm -rf ~/.m2/repository
mvn compile
Sprawdzanie pakietów w konsoli
Otwórz Cloud Console – Artifact Registry – Repositories (Konsola Google Cloud – Artifact Registry – Repozytoria). Kliknij maven-central-cache
i sprawdź, czy zapisane w nich artefakty binarne są w pamięci podręcznej:
4. Wirtualne repozytoria
Wirtualne repozytoria działają jako interfejs dla wielu repozytoriów, do których można uzyskać dostęp za pomocą jednej konfiguracji. Upraszcza to konfigurację klienta dla użytkowników Twoich artefaktów i zwiększa bezpieczeństwo, ponieważ ogranicza ataki polegające na wprowadzaniu zamieszania w zależnościach.
Tworzenie pliku 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 wirtualnego repozytorium
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
Integracja repozytorium z projektem
Aby wydrukować konfigurację repozytorium, którą chcesz dodać do projektu w Javie, uruchom to polecenie:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
Zastąp w pliku pom całą sekcję repozytoriów sekcją repozytoriów wirtualnych z pliku wyjściowego.
Przykład: (nazwy projektów będą się różnić 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
Ponieważ repozytorium wirtualne jest repozytorium przelotnym i nie będzie przechowywać żadnych rzeczywistych pakietów, aby wyraźnie zademonstrować proces, usuń utworzone wcześniej repozytorium maven-central-cache i utwórz je ponownie, aby rozpocząć od pustego repozytorium.
Aby ponownie utworzyć repozytorium pamięci podręcznej, uruchom te polecenia
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 konsolę Cloud – Artifact Registry – Repozytoria.
Teraz użyj repozytorium wirtualnego, kompilując projekt za pomocą tego polecenia:
rm -rf ~/.m2/repository
mvn compile
Sprawdzanie pakietów w konsoli
Otwórz Cloud Console – Artifact Registry – Repositories (Konsola Cloud – Artifact Registry – Repozytoria). Kliknij maven-central-cache
i sprawdź, czy binarne artefakty zostały skonfigurowane do pobrania z repozytorium wirtualnego, ale zostały ostatecznie pobrane z repozytorium maven-central-cache
:
5. Gratulacje!
Gratulacje! Masz ukończoną tę lekcję.
Omówione zagadnienia
- Używanie standardowych repozytoriów do wdrażania prywatnych pakietów
- Używanie repozytoriów zdalnych do buforowania pakietów Maven Central
- Używanie wirtualnych repozytoriów do łą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.23