1. Genel Bakış
Artifact Registry, farklı yapı türü depolamanızı, tek bir projede birden fazla depo oluşturmanızı ve her depoyla belirli bir bölgeyi veya çoklu bölgeyi ilişkilendirmenizi sağlar. Birkaç depolama alanı modu vardır. Her mod farklı bir amaca hizmet eder. Aşağıdaki şemada, farklı modlarda birlikte kullanabileceğiniz birçok yöntemden biri gösterilmektedir. Şemada, iki Google Cloud projesindeki bir iş akışı gösterilmektedir. Geliştiriciler, geliştirme projesinde bir Java uygulaması oluşturur. Ayrı bir çalışma zamanı projesinde, başka bir derleme Google Kubernetes Engine'e dağıtılacak uygulamayı içeren bir kapsayıcı resmi oluşturur.
Bu laboratuvarda, aşağıdaki görevleri nasıl gerçekleştireceğinizi öğreneceksiniz.
- Özel paketlerinizi dağıtmak için standart depoları kullanma
- Maven Central paketlerini önbelleğe almak için uzak depoları kullanma
- Birden fazla yayın öncesi deposunu tek bir yapılandırmada birleştirmek için sanal depolar kullanma
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcılarının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman bunu güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğine (genellikle
PROJECT_ID
olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu üç değer hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı olmayacaktır. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerindeki ücretsiz deneme programına uygundur.
Workspace Kurulumu
gcloud'u ayarlama
Cloud Shell'de proje kimliğinizi ve proje numaranızı ayarlayın. Bunları PROJECT_ID
ve PROJECT_NUMBER
değişkenleri olarak kaydedin.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
API'leri etkinleştir
gcloud services enable artifactregistry.googleapis.com
Depoyu klonlama
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
2. Standart depolar
Standart depolar, gizli paketlerinizi depolamanızı ve diğer uygulamalarınızda paylaşmanızı sağlar.
Standart bir maven deposu oluşturma
Java yapıları için bir depo oluşturmak üzere Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Cloud Shell yetkilendirme istemi görünürse Yetkilendir'i tıklayın.
Google Cloud Console - Artifact Registry - Depolama Alanları'na gidin ve container-dev-java-repo
adlı yeni oluşturduğunuz Maven deposuna dikkat edin. Bu depoyu tıkladığınızda şu anda boş olduğunu görebilirsiniz.
gcloud artifacts repositories describe container-dev-java-repo \
--location=us-central1
Aşağıdakine benzer bir yanıt döndürmelidir
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'
Maven'i Artifact Registry için yapılandırma
Java projenize eklemek için depo yapılandırmasını yazdırmak üzere aşağıdaki komutu çalıştırın:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
Önceki komut, projelerinizin pom.xml dosyasına eklenecek xml'i döndürür.
- Depo bölümü, Maven'in geçerli proje tarafından kullanılmak üzere uzak yapıları indirebileceği yerleri belirtir.
- distributionManagement bölümü, projenin dağıtıldığında hangi uzak depoya itileceğini belirtir.
- Uzantılar bölümüne, Artifact Registry'ye bağlanmak için gereken kimlik doğrulama ve aktarım katmanını etkinleştiren artifactregistry-maven-wagon eklenir.
- Not: Uzantıların pom.xml veya extensions.xml dosyalarında bulunabileceği unutulmamalıdır. Projenin bir üst projeye bağımlı olduğu durumlarda, pom.xml'deki girişlerin geri kalanı yüklenmeden önce bu bağımlılıklara erişilir. Üst öğenin uzantıya erişebilmesi için uzantı, pom.xml dosyasından önce yüklenen bir extensions.xml dosyasına yerleştirilebilir. Böylece üst öğe bağımlılıkları için kullanılabilir hale gelir.
Üç bölümü kopyalayın, ardından Cloud Shell Düzenleyici'de pom.xml
dosyasını açın ve döndürülen ayarları, dosyanın en altına, kapatıcı project
etiketinin hemen içine ekleyin.
İpucu: Düzenleyiciyi mevcut dizinde açmak için Cloud Shell'de terminalde aşağıdaki komutu çalıştırın.
cloudshell workspace .
Örnek: (URL'lerinizdeki proje adlarınız farklı olacaktır.)
...
<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>
Java paketinizi Artifact Registry'ye yükleme
Maven'de yapılandırılmış Artifact Registry ile artık kuruluşunuzdaki diğer projeler tarafından kullanılmak üzere Java jar'larını depolamak için Artifact Registry'yi kullanabilirsiniz.
Java paketinizi Artifact Registry'ye yüklemek için aşağıdaki komutu çalıştırın:
mvn deploy -DskipTests
Bu komutu tekrar çalıştırmak isterseniz pom.xml dosyasında sürümü artırdığınızdan emin olun.
Artifact Registry'de Java paketini kontrol etme
Cloud Console - Artifact Registry - Repositories (Cloud Console - Artifact Registry - Depolar) bölümüne gidin. container-dev-java-repo
'yi tıklayın ve hello-world
ikili yapının orada olup olmadığını kontrol edin:
3. Uzak depolar
Uzak Depolar, daha fazla güvenilirlik ve güvenlik için üçüncü taraf paketlerini önbelleğe alma olanağı sunar.
Uzak depo oluşturma
Not: Kimlik doğrulama ve yapılandırma hakkında ayrıntılı bilgi için ürün dokümanlarını inceleyin.
Maven Central yapıları için uzak bir depo oluşturmak üzere Cloud Shell'de aşağıdaki komutu çalıştırın:
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
Konsolda deposu inceleme
Cloud Console - Artifact Registry - Repositories (Cloud Console - Artifact Registry - Depolar) bölümüne gidin. maven-central-cache
öğesini tıklayın ve oluşturulduğunu ve şu anda boş olduğunu fark edin.
Terminalde deposu inceleme
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
Depoyu projenize entegre etme
Java projenize eklemek için depo yapılandırmasını yazdırmak üzere aşağıdaki komutu çalıştırın:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
Depo bölümünü pom.xml dosyanıza ekleyin. Çıktıda dış <repositories> etiketini kopyalamadığınızdan emin olun.
Her depo girişinin benzersiz bir kimliğe sahip olmasını sağlamak için yeni eklenen deponun kimliğini "central" olarak değiştirin.
Örnek: (URL'lerinizdeki proje adlarınız farklı olacaktır.)
...
<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>
Maven'in Artifact Registry'den üst öğe veya eklenti bağımlılıklarını çözebilmesini sağlayan temel uzantılar mekanizmasını kullanmak için projeniz için bir extensions.xml
oluşturmak üzere terminalinizde aşağıdaki komutları çalıştırın.
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
Uzak depodan bağımlılıkları alma
Uygulamanızı uzak deposu kullanarak derlemek için aşağıdaki komutu çalıştırın:
rm -rf ~/.m2/repository
mvn compile
Konsoldaki paketleri inceleme
Cloud Console - Artifact Registry - Repositories (Cloud Console - Artifact Registry - Depolar) bölümüne gidin. maven-central-cache
simgesini tıklayın ve buradaki ikili yapıların önbelleğe alınmış olup olmadığını kontrol edin:
4. Sanal depolar
Sanal Depolar, birden fazla depoya tek bir yapılandırma üzerinden erişilebilmesi için bir arayüz görevi görür. Bu, yapılarınızı kullananlar için istemci yapılandırmasını basitleştirir ve bağımlılığı karıştırma saldırılarını azaltarak güvenliği artırır.
Politika dosyası oluşturma
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
Sanal deposu oluşturma
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
Depoyu projenize entegre etme
Java projenize eklemek için depo yapılandırmasını yazdırmak üzere aşağıdaki komutu çalıştırın:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
pom dosyanızdaki repositories bölümünün tamamını, çıktıdaki tek bir sanal repositories bölümüyle değiştirin.
Örnek: (URL'lerinizdeki proje adlarınız farklı olacaktır.)
...
<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>
Bağımlılıkları sanal depodan alma
Sanal depo geçişli olduğundan ve gerçek paketler depolamaz. Bu nedenle, süreci net bir şekilde göstermek için daha önce oluşturduğunuz maven-central-cache deposunu silip yeniden oluşturarak boş bir depoyla tekrar başlayacaksınız.
Önbellek deposunu yeniden oluşturmak için aşağıdaki komutları çalıştırın
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
Boş deposu konsolda inceleyebilirsiniz. Cloud Console - Artifact Registry - Repositories (Cloud Console - Artifact Registry - Depolar) bölümüne gidin.
Artık aşağıdaki komutla projenizi oluşturarak sanal deposu kullanabilirsiniz.
rm -rf ~/.m2/repository
mvn compile
Konsoldaki paketleri inceleme
Cloud Console - Artifact Registry - Repositories (Cloud Console - Artifact Registry - Repositories) sayfasına gidin. maven-central-cache
'yi tıklayın ve ikili yapıların sanal depodan çekilecek şekilde yapılandırıldığını ancak nihayetinde maven-central-cache
'den çekildiğini kontrol edin:
5. Tebrikler!
Tebrikler, kod laboratuvarını tamamladınız.
Kapsamınız
- Özel paketlerinizi dağıtmak için Standart Depolar'ı kullandıysanız
- Maven Central paketlerini önbelleğe almak için uzak depolar kullanıldı
- Birden fazla yayın öncesi deposunu tek bir yapılandırmada birleştirmek için sanal depolar kullanıldı
Temizleme
Projeyi silmek için aşağıdaki komutu çalıştırın
gcloud projects delete ${PROJECT_ID}
—
Son güncelleme: 22.3.23