1. ওভারভিউ
আর্টিফ্যাক্ট রেজিস্ট্রি আপনাকে বিভিন্ন ধরণের আর্টিফ্যাক্ট সংরক্ষণ করতে, একটি একক প্রকল্পে একাধিক সংগ্রহস্থল তৈরি করতে এবং প্রতিটি সংগ্রহস্থলের সাথে একটি নির্দিষ্ট অঞ্চল বা বহু-অঞ্চল যুক্ত করতে সক্ষম করে। বিভিন্ন রিপোজিটরি মোড আছে। প্রতিটি মোড একটি ভিন্ন উদ্দেশ্য পরিবেশন করে। নিম্নলিখিত চিত্রটি দেখায় অনেক সম্ভাব্য উপায়গুলির মধ্যে একটি যে আপনি একসাথে বিভিন্ন মোডে সংগ্রহস্থল ব্যবহার করতে পারেন। চিত্রটি দুটি Google ক্লাউড প্রকল্প জুড়ে একটি কর্মপ্রবাহ দেখায়। একটি উন্নয়ন প্রকল্পে, বিকাশকারীরা একটি জাভা অ্যাপ্লিকেশন তৈরি করে। একটি পৃথক রানটাইম প্রকল্পে, অন্য একটি বিল্ড Google Kubernetes ইঞ্জিনে স্থাপনার জন্য অ্যাপ্লিকেশন সহ একটি ধারক চিত্র তৈরি করে।
এই ল্যাবে, আপনি কীভাবে নিম্নলিখিত কাজগুলি সম্পাদন করবেন তা শিখবেন।
- আপনার ব্যক্তিগত প্যাকেজ স্থাপনের জন্য স্ট্যান্ডার্ড সংগ্রহস্থল ব্যবহার করুন
- ম্যাভেন কেন্দ্রীয় প্যাকেজ ক্যাশে করতে দূরবর্তী সংগ্রহস্থল ব্যবহার করুন
- এক কনফিগারে একাধিক আপস্ট্রিম রিপোজ একত্রিত করতে ভার্চুয়াল রিপোজিটরি ব্যবহার করুন
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি যে কোনো সময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত করা হয়)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন এবং এটি উপলব্ধ কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান রয়েছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে এই টিউটোরিয়ালের বাইরে আপনার বিলিং খরচ না হয়, আপনি আপনার তৈরি করা রিসোর্স মুছে ফেলতে পারেন বা পুরো প্রোজেক্ট মুছে ফেলতে পারেন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ওয়ার্কস্পেস সেটআপ
gCloud সেট আপ করুন
ক্লাউড শেলে, আপনার প্রকল্প আইডি এবং প্রকল্প নম্বর সেট করুন। সেগুলিকে PROJECT_ID
এবং PROJECT_NUMBER
ভেরিয়েবল হিসাবে সংরক্ষণ করুন৷
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
এপিআই সক্ষম করুন
gcloud services enable artifactregistry.googleapis.com
রেপো ক্লোন করুন
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
2. স্ট্যান্ডার্ড সংগ্রহস্থল
স্ট্যান্ডার্ড রিপোজিটরিগুলি আপনার ব্যক্তিগত প্যাকেজগুলি সংরক্ষণ করার এবং আপনার অন্যান্য অ্যাপ্লিকেশনগুলিতে সেগুলি ভাগ করার একটি উপায় সরবরাহ করে
একটি স্ট্যান্ডার্ড ম্যাভেন সংগ্রহস্থল তৈরি করুন
ক্লাউড শেল থেকে জাভা আর্টিফ্যাক্টগুলির জন্য একটি সংগ্রহস্থল তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
ক্লাউড শেল অনুমোদন প্রম্পট প্রদর্শিত হলে অনুমোদন ক্লিক করুন
Google ক্লাউড কনসোলে যান - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি এবং আপনার সদ্য নির্মিত 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
পূর্ববর্তী কমান্ড আপনার প্রকল্প pom.xml যোগ করার জন্য xml প্রদান করে।
- রিপোজিটরি বিভাগটি নির্দিষ্ট করে যেখানে ম্যাভেন বর্তমান প্রকল্পের দ্বারা ব্যবহারের জন্য দূরবর্তী শিল্পকর্ম ডাউনলোড করতে পারে।
- ডিস্ট্রিবিউশন ম্যানেজমেন্ট বিভাগটি নির্দিষ্ট করে যে প্রকল্পটি যখন স্থাপন করা হবে তখন কোন রিমোট রিপোজিটরিতে ধাক্কা দেবে।
- এক্সটেনশন বিভাগটি artifactregistry-maven-wagon-এ যোগ করে যা আর্টিফ্যাক্ট রেজিস্ট্রির সাথে সংযোগের জন্য প্রয়োজনীয় প্রমাণীকরণ এবং পরিবহন স্তর সক্ষম করে
- দ্রষ্টব্য: এক্সটেনশনগুলি pom.xml বা extensions.xml-এ থাকতে পারে। যে ক্ষেত্রে প্রকল্পটি একটি অভিভাবক প্রকল্পের উপর নির্ভর করে, সেই সমস্ত নির্ভরতাগুলি pom.xml-এর বাকি এন্ট্রিগুলি লোড হওয়ার আগে অ্যাক্সেস করা হয়। অভিভাবকের এক্সটেনশনে অ্যাক্সেস আছে তা নিশ্চিত করার জন্য, এটি একটি extensions.xml ফাইলে স্থাপন করা যেতে পারে যা pom.xml এর আগে লোড করা হয় এইভাবে এটি অভিভাবক নির্ভরতার জন্য উপলব্ধ করে।
তিনটি বিভাগ অনুলিপি করুন তারপর ক্লাউড শেল এডিটরে pom.xml
খুলুন এবং ফাইলের নীচের অংশে ক্লোজিং project
ট্যাগের ভিতরে রিটার্ন করা সেটিংস যোগ করুন।
টিপ: ক্লাউডশেলে, বর্তমান ডিরেক্টরিতে সম্পাদক খুলতে টার্মিনালে নিম্নলিখিত কমান্ডটি চালান।
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>
আপনার জাভা প্যাকেজটি আর্টিফ্যাক্ট রেজিস্ট্রিতে আপলোড করুন
ম্যাভেনে কনফিগার করা আর্টিফ্যাক্ট রেজিস্ট্রি সহ, আপনি এখন আপনার প্রতিষ্ঠানের অন্যান্য প্রকল্পগুলির দ্বারা ব্যবহারের জন্য জাভা জার সংরক্ষণ করতে আর্টিফ্যাক্ট রেজিস্ট্রি ব্যবহার করতে পারেন।
আর্টিফ্যাক্ট রেজিস্ট্রিতে আপনার জাভা প্যাকেজ আপলোড করতে নিম্নলিখিত কমান্ডটি চালান:
mvn deploy -DskipTests
আপনি যদি এই কমান্ডটি আবার চালাতে চান, তাহলে pom.xml-এ সংস্করণ বাড়াতে ভুলবেন না।
আর্টিফ্যাক্ট রেজিস্ট্রিতে জাভা প্যাকেজটি পরীক্ষা করুন
ক্লাউড কনসোলে যান - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি container-dev-java-repo
ক্লিক করুন এবং hello-world
বাইনারি আর্টিফ্যাক্ট আছে কিনা তা পরীক্ষা করুন:
3. দূরবর্তী সংগ্রহস্থল
রিমোট রিপোজিটরি বর্ধিত নির্ভরযোগ্যতা এবং নিরাপত্তার জন্য তৃতীয় পক্ষের প্যাকেজ ক্যাশে করার ক্ষমতা প্রদান করে।
একটি দূরবর্তী সংগ্রহস্থল তৈরি করুন
দ্রষ্টব্য: প্রমাণীকরণ এবং কনফিগারেশনের বিস্তারিত জানার জন্য, পণ্যের ডকুমেন্টেশন পর্যালোচনা করুন।
ক্লাউড শেল থেকে মাভেন সেন্ট্রাল আর্টিফ্যাক্টগুলির জন্য একটি দূরবর্তী সংগ্রহস্থল তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
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
কনসোলে রেপো পর্যালোচনা করুন
ক্লাউড কনসোলে যান - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি 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
তৈরি করতে আপনার টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালান, Maven আর্টিফ্যাক্ট রেজিস্ট্রি থেকে অভিভাবক বা প্লাগইন নির্ভরতা সমাধান করতে পারে তা নিশ্চিত করার জন্য মূল এক্সটেনশন প্রক্রিয়া ব্যবহার করুন৷
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
রিমোট রিপোজিটরি থেকে নির্ভরতা টানুন
রিমোট রিপোজিটরি ব্যবহার করে আপনার অ্যাপ্লিকেশন কম্পাইল করতে নিম্নলিখিত কমান্ডটি চালান:
rm -rf ~/.m2/repository
mvn compile
কনসোলে প্যাকেজগুলি পর্যালোচনা করুন
ক্লাউড কনসোলে যান - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি 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>
ভার্চুয়াল রিপোজিটরি থেকে নির্ভরতা টানুন
যেহেতু ভার্চুয়াল রিপোজিটরি একটি পাস এবং কোনো প্রকৃত প্যাকেজ সংরক্ষণ করবে না, প্রক্রিয়াটি পরিষ্কারভাবে প্রদর্শন করার জন্য আপনি আগে তৈরি করা ম্যাভেন-সেন্ট্রাল-ক্যাশে রেপো মুছে ফেলবেন এবং এটি পুনরায় তৈরি করবেন, একটি খালি সংগ্রহস্থল দিয়ে আবার শুরু করতে
ক্যাশে রিপোজিটরি পুনরায় তৈরি করতে নিম্নলিখিত কমান্ডগুলি চালান
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
আপনি কনসোলে খালি রেপো পর্যালোচনা করতে পারেন। ক্লাউড কনসোলে যান - আর্টিফ্যাক্ট রেজিস্ট্রি - সংগ্রহস্থল
এখন নিম্নলিখিত কমান্ড দিয়ে আপনার প্রকল্প তৈরি করে ভার্চুয়াল সংগ্রহস্থল অনুশীলন করুন
rm -rf ~/.m2/repository
mvn compile
কনসোলে প্যাকেজগুলি পর্যালোচনা করুন
ক্লাউড কনসোলে যান - আর্টিফ্যাক্ট রেজিস্ট্রি - রিপোজিটরি maven-central-cache
ক্লিক করুন এবং চেক করুন যে বাইনারি আর্টিফ্যাক্টগুলি ভার্চুয়াল রেপো থেকে টানতে কনফিগার করা হয়েছিল কিন্তু শেষ পর্যন্ত maven-central-cache
থেকে টানা হয়েছিল:
5. অভিনন্দন!
অভিনন্দন, আপনি কোডল্যাব শেষ করেছেন!
আপনি কভার করেছেন কি
- আপনার ব্যক্তিগত প্যাকেজ স্থাপনের জন্য ব্যবহৃত স্ট্যান্ডার্ড সংগ্রহস্থল
- ম্যাভেন সেন্ট্রাল প্যাকেজ ক্যাশে রিমোট রিপোজিটরি ব্যবহার করা হয়
- একটি কনফিগারেশনে একাধিক আপস্ট্রিম রিপোজ একত্রিত করতে ভার্চুয়াল রিপোজিটরি ব্যবহার করা হয়েছে
ক্লিনআপ
প্রকল্পটি মুছে ফেলার জন্য নিম্নলিখিত কমান্ডটি চালান
gcloud projects delete ${PROJECT_ID}
-
শেষ আপডেট: 3/22/23