1. بررسی اجمالی
Artifact Registry شما را قادر میسازد تا انواع مختلفی از مصنوعات را ذخیره کنید، چندین مخزن را در یک پروژه واحد ایجاد کنید و یک منطقه یا چند منطقه خاص را با هر مخزن مرتبط کنید. چندین حالت مخزن وجود دارد. هر حالت هدف متفاوتی را دنبال می کند. نمودار زیر یکی از راه های ممکن را نشان می دهد که می توانید از مخازن در حالت های مختلف با هم استفاده کنید. این نمودار یک گردش کار را در دو پروژه Google Cloud نشان می دهد. در یک پروژه توسعه، توسعه دهندگان یک برنامه جاوا می سازند. در یک پروژه زمان اجرا جداگانه، ساخت دیگری یک تصویر ظرف با برنامه برای استقرار در Google Kubernetes Engine ایجاد می کند.
در این آزمایشگاه یاد می گیرید که چگونه کارهای زیر را انجام دهید.
- برای استقرار بسته های خصوصی خود از مخازن استاندارد استفاده کنید
- برای کش کردن بسته های مرکزی maven از Remote Repositories استفاده کنید
- از مخازن مجازی برای ترکیب چند مخزن بالادستی در یک پیکربندی استفاده کنید
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما می توانید آن را در هر زمان به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (معمولاً به عنوان
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، می توانید منابعی را که ایجاد کرده اید حذف کنید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
راه اندازی فضای کاری
gcloud را راه اندازی کنید
در Cloud Shell، شناسه پروژه و شماره پروژه خود را تنظیم کنید. آنها را به عنوان متغیرهای PROJECT_ID
و PROJECT_NUMBER
ذخیره کنید.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
API ها را فعال کنید
gcloud services enable artifactregistry.googleapis.com
مخزن را شبیه سازی کنید
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
2. مخازن استاندارد
مخازن استاندارد راهی برای ذخیره بسته های خصوصی شما و به اشتراک گذاری آنها در سایر برنامه های کاربردی شما ارائه می دهند
یک مخزن استاندارد maven ایجاد کنید
از Cloud Shell دستور زیر را برای ایجاد یک مخزن برای مصنوعات جاوا اجرا کنید:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
اگر اعلان مجوز Cloud Shell ظاهر شد روی Authorize کلیک کنید
به Google Cloud Console - Artifact Registry - Repositories بروید و به مخزن Maven جدید ایجاد شده خود با نام container-dev-java-repo
توجه کنید، اگر روی آن کلیک کنید می توانید ببینید که در حال حاضر خالی است.
gcloud artifacts repositories describe container-dev-java-repo \
--location=us-central1
باید پاسخی شبیه به زیر برگرداند
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 را برای رجیستری مصنوع پیکربندی کنید
دستور زیر را برای چاپ پیکربندی مخزن برای افزودن به پروژه جاوا خود اجرا کنید:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
دستور قبلی xml را برمی گرداند تا به پروژه های شما pom.xml اضافه شود.
- بخش مخازن مشخص می کند که Maven می تواند مصنوعات از راه دور را برای استفاده در پروژه فعلی از کجا دانلود کند.
- بخش DistributionManagement مشخص می کند که پروژه در هنگام استقرار به کدام مخزن راه دور فشار می آورد.
- بخش افزونه ها در artifactregistry-maven-wagon اضافه می کند که لایه تأیید هویت و انتقال مورد نیاز برای اتصال به Artifact Registry را فعال می کند.
- توجه: برنامههای افزودنی میتوانند در pom.xml یا extensions.xml وجود داشته باشند. در مواردی که پروژه به پروژه والد بستگی دارد، قبل از بارگیری بقیه ورودیهای pom.xml به آن وابستگیها دسترسی پیدا میشود. برای اطمینان از دسترسی والدین به پسوند، میتوان آن را در یک فایل extensions.xml قرار داد که قبل از pom.xml بارگذاری میشود و بنابراین آن را برای وابستگیهای والد در دسترس قرار میدهد.
سه بخش را کپی کنید سپس pom.xml
در Cloud Shell Editor باز کنید و تنظیمات بازگشتی را به پایین فایل درست در داخل تگ بسته شدن project
اضافه کنید.
نکته: در cloudshell، دستور زیر را در ترمینال اجرا کنید تا ویرایشگر در فهرست فعلی باز شود.
cloudshell workspace .
مثال: (نام پروژه شما در 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>
بسته جاوا خود را در Artifact Registry آپلود کنید
با پیکربندی Artifact Registry در Maven، اکنون می توانید از Artifact Registry برای ذخیره شیشه های جاوا برای استفاده توسط پروژه های دیگر در سازمان خود استفاده کنید.
دستور زیر را برای آپلود بسته جاوا در Artifact Registry اجرا کنید:
mvn deploy -DskipTests
اگر می خواهید دوباره این دستور را اجرا کنید، حتما نسخه را در pom.xml افزایش دهید.
بسته جاوا را در Artifact Registry بررسی کنید
به Cloud Console بروید - Artifact Registry - Repositories روی container-dev-java-repo
کلیک کنید و بررسی کنید که مصنوع باینری hello-world
در آنجا وجود دارد:
3. مخازن از راه دور
Remote Repositories امکان ذخیره بسته های شخص ثالث را برای افزایش قابلیت اطمینان و امنیت فراهم می کند.
یک مخزن از راه دور ایجاد کنید
توجه: برای جزئیات در مورد احراز هویت و پیکربندی، مستندات محصول را بررسی کنید.
از Cloud Shell دستور زیر را برای ایجاد یک مخزن از راه دور برای مصنوعات 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
مخزن موجود در کنسول را مرور کنید
به Cloud Console بروید - Artifact Registry - Repositories روی maven-central-cache
کلیک کنید و متوجه شوید که ایجاد شده است و در حال حاضر خالی است.
مخزن را در ترمینال بررسی کنید
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
مخزن را در پروژه خود ادغام کنید
دستور زیر را برای چاپ پیکربندی مخزن برای افزودن به پروژه جاوا خود اجرا کنید:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
بخش مخزن را به pom.xml خود اضافه کنید. مطمئن شوید که تگ <repositories> خارجی را از خروجی کپی نکنید.
شناسه مخزن جدید اضافه شده را به "مرکزی" تغییر دهید تا مطمئن شوید که هر ورودی مخزن یک شناسه منحصر به فرد دارد.
مثال: (نام پروژه شما در 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>
دستورات زیر را در ترمینال خود اجرا کنید تا یک extensions.xml
برای پروژه خود ایجاد کنید.
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
وابستگی ها را از Remote Repository خارج کنید
دستور زیر را برای کامپایل برنامه خود با استفاده از Remote Repository اجرا کنید:
rm -rf ~/.m2/repository
mvn compile
بسته های موجود در کنسول را بررسی کنید
به Cloud Console بروید - Artifact Registry - Repositories روی maven-central-cache
کلیک کنید و بررسی کنید که مصنوعات باینری در آنجا ذخیره شده اند:
4. مخازن مجازی
مخازن مجازی به عنوان یک رابط برای چندین مخزن عمل می کنند تا از طریق یک پیکربندی واحد به آنها دسترسی داشته باشید. این کار پیکربندی مشتری را برای مصرف کنندگان مصنوعات شما ساده می کند و با کاهش حملات سردرگمی وابستگی، امنیت را افزایش می دهد.
یک فایل سیاست ایجاد کنید
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
مخزن مجازی ایجاد کنید
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
مخزن را در پروژه خود ادغام کنید
دستور زیر را برای چاپ پیکربندی مخزن برای افزودن به پروژه جاوا خود اجرا کنید:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
کل بخش مخازن را در pom خود با بخش یک مخازن مجازی از خروجی جایگزین کنید.
مثال: (نام پروژه شما در 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>
وابستگی ها را از مخزن مجازی بکشید
از آنجایی که مخزن مجازی یک گذرگاه است و هیچ بسته واقعی را ذخیره نمیکند، برای نشان دادن واضح این فرآیند، مخزن maven-central-cache را که قبلا ایجاد کردهاید حذف کرده و دوباره ایجاد میکنید تا دوباره با یک مخزن خالی شروع کنید.
دستورات زیر را برای ایجاد مجدد مخزن کش اجرا کنید
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
می توانید مخزن خالی را در کنسول بررسی کنید. به Cloud Console - Artifact Registry - Repositories بروید
حال با ساختن پروژه خود با دستور زیر مخزن مجازی را تمرین کنید
rm -rf ~/.m2/repository
mvn compile
بسته های موجود در کنسول را بررسی کنید
به Cloud Console بروید - Artifact Registry - Repositories روی maven-central-cache
کلیک کنید و بررسی کنید که مصنوعات باینری برای استخراج از مخزن مجازی پیکربندی شده اند اما در نهایت از maven-central-cache
خارج شده اند:
5. تبریک می گویم!
تبریک می گویم، شما نرم افزار کد را تمام کردید!
آنچه شما پوشش داده اید
- از مخازن استاندارد برای استقرار بسته های خصوصی خود استفاده کرد
- از مخازن راه دور برای کش کردن بسته های مرکزی maven استفاده کرد
- از مخازن مجازی برای ترکیب چندین مخزن بالادستی در یک پیکربندی استفاده کرد
پاکسازی
دستور زیر را برای حذف پروژه اجرا کنید
gcloud projects delete ${PROJECT_ID}
-
آخرین به روز رسانی: 3/22/23