1. Tổng quan
Artifact Registry cho phép bạn lưu trữ nhiều loại cấu phần phần mềm, tạo nhiều kho lưu trữ trong một dự án và liên kết một khu vực hoặc nhiều khu vực cụ thể với từng kho lưu trữ. Có một số chế độ kho lưu trữ. Mỗi chế độ phục vụ một mục đích khác nhau. Sơ đồ dưới đây cho thấy một trong nhiều cách mà bạn có thể sử dụng cùng lúc các kho lưu trữ ở nhiều chế độ. Sơ đồ này cho thấy một quy trình làm việc giữa 2 dự án trên Google Cloud. Trong một dự án phát triển, nhà phát triển sẽ xây dựng một ứng dụng Java. Trong một dự án thời gian chạy riêng biệt, một bản dựng khác sẽ tạo hình ảnh vùng chứa bằng ứng dụng để triển khai cho Google Kubernetes Engine.
Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách thực hiện các thao tác sau.
- Sử dụng Kho lưu trữ chuẩn để triển khai các gói riêng tư
- Sử dụng Kho lưu trữ từ xa để lưu các gói trung tâm maven vào bộ nhớ đệm
- Sử dụng Kho lưu trữ ảo để kết hợp nhiều kho lưu trữ ngược dòng trong một cấu hình
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
- Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (mã này thường được xác định là
PROJECT_ID
). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử phương pháp của riêng mình và xem có được cung cấp hay không. Bạn không thể thay đổi thông tin này sau bước này và thông báo đó sẽ vẫn tồn tại trong thời gian của dự án. - Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án) mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
- Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá toàn bộ dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Thiết lập Workspace
Thiết lập gcloud
Trong Cloud Shell, hãy đặt mã dự án và số dự án. Hãy lưu các biến này dưới dạng biến PROJECT_ID
và PROJECT_NUMBER
.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Bật API
gcloud services enable artifactregistry.googleapis.com
Sao chép kho lưu trữ
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
2. Kho lưu trữ chuẩn
Kho lưu trữ chuẩn cung cấp cách thức lưu trữ các gói riêng tư và chia sẻ chúng trên các ứng dụng khác của bạn
Tạo kho lưu trữ maven chuẩn
Trên Cloud Shell, hãy chạy lệnh sau để tạo kho lưu trữ cho các cấu phần phần mềm Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Nhấp vào Cho phép nếu lời nhắc uỷ quyền Cloud Shell xuất hiện
Truy cập vào Google Cloud Console - Artifact Registry - Kho lưu trữ và lưu ý rằng kho lưu trữ Maven mới tạo có tên container-dev-java-repo
. Nếu nhấp vào kho lưu trữ này, bạn có thể thấy kho lưu trữ này hiện đang trống.
gcloud artifacts repositories describe container-dev-java-repo \
--location=us-central1
Phải trả về phản hồi tương tự như sau
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'
Định cấu hình Maven cho Sổ đăng ký cấu phần phần mềm
Chạy lệnh sau để in cấu hình kho lưu trữ cần thêm vào dự án Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
Lệnh trước đó trả về tệp xml để thêm vào tệp pom.xml của dự án.
- Phần Repository (kho lưu trữ) chỉ định nơi Maven có thể tải các cấu phần phần mềm từ xa xuống để dự án hiện tại sử dụng.
- Phần distributionManagement chỉ định kho lưu trữ từ xa mà dự án sẽ đẩy đến khi triển khai.
- Phần extensions (phần mở rộng) thêm vào coroutineregistry-maven-wagon để bật lớp Xác thực và truyền tải cần thiết để kết nối với Artifact Registry
- Lưu ý: Các tiện ích có thể tồn tại trong pom.xml hoặc extensions.xml. Trong trường hợp dự án phụ thuộc vào một dự án mẹ, các phần phụ thuộc đó sẽ được truy cập trước khi tải phần còn lại của các mục nhập trong tệp pom.xml. Để đảm bảo phần tử mẹ có quyền truy cập vào tiện ích này, bạn có thể đặt tiện ích này trong tệp extensions.xml được tải trước pom.xml, nhờ đó có thể sử dụng được các phần phụ thuộc mẹ.
Sao chép 3 phần, sau đó mở pom.xml
trong Cloud Shell Editor và thêm các chế độ cài đặt được trả về vào cuối tệp ngay trong thẻ đóng project
.
Mẹo: Trong Cloudshell, hãy chạy lệnh sau trong cửa sổ dòng lệnh để mở trình chỉnh sửa trong thư mục hiện tại.
cloudshell workspace .
Ví dụ: (tên dự án sẽ khác trong các 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>
Tải gói Java của bạn lên Artifact Registry
Khi Artifact Registry được định cấu hình trong Maven, giờ đây bạn có thể sử dụng Artifact Registry để lưu trữ các jar Java cho các dự án khác trong tổ chức của bạn.
Chạy lệnh sau để tải gói Java của bạn lên Artifact Registry:
mvn deploy -DskipTests
Nếu bạn muốn chạy lại lệnh này, hãy nhớ tăng phiên bản trong tệp pom.xml.
Kiểm tra gói Java trong Artifact Registry
Truy cập Cloud Console – Artifact Registry - Repositories Nhấp vào container-dev-java-repo
và kiểm tra để đảm bảo cấu phần phần mềm nhị phân hello-world
có:
3. Kho lưu trữ từ xa
Kho lưu trữ từ xa cung cấp khả năng lưu các gói của bên thứ ba vào bộ nhớ đệm để tăng độ tin cậy và bảo mật.
Tạo kho lưu trữ từ xa
Lưu ý: Để biết thông tin chi tiết về việc xác thực và cấu hình, hãy xem tài liệu về sản phẩm.
Trên Cloud Shell, hãy chạy lệnh sau để tạo kho lưu trữ từ xa cho các cấu phần phần mềm 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
Xem lại kho lưu trữ trong bảng điều khiển
Truy cập vào Cloud Console – Artifact Registry - Repositories Hãy nhấp vào maven-central-cache
. Bạn sẽ thấy thư này đã được tạo và hiện đang trống
Xem xét kho lưu trữ trong thiết bị đầu cuối
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
Tích hợp repo vào dự án của bạn
Chạy lệnh sau để in cấu hình kho lưu trữ cần thêm vào dự án Java:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
Thêm phần kho lưu trữ vào tệp pom.xml. Đảm bảo không sao chép <Repository> bên ngoài thẻ khỏi dữ liệu đầu ra.
Thay đổi mã của kho lưu trữ mới được thêm thành "trung tâm" để đảm bảo mỗi mục nhập kho lưu trữ đều có một mã nhận dạng duy nhất.
Ví dụ: (tên dự án sẽ khác trong các 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>
Chạy các lệnh sau trong dòng lệnh để tạo extensions.xml
cho dự án của bạn. Để sử dụng cơ chế tiện ích cốt lõi, đảm bảo Maven có thể phân giải các phần phụ thuộc mẹ hoặc trình bổ trợ từ 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
Lấy phần phụ thuộc từ Kho lưu trữ từ xa
Chạy lệnh sau để biên dịch ứng dụng bằng Kho lưu trữ từ xa:
rm -rf ~/.m2/repository
mvn compile
Xem lại các gói trong bảng điều khiển
Truy cập Cloud Console – Artifact Registry - Repositories Nhấp vào maven-central-cache
rồi kiểm tra để đảm bảo các cấu phần phần mềm nhị phân đã được lưu vào bộ nhớ đệm ở đó:
4. Kho lưu trữ ảo
Kho lưu trữ ảo đóng vai trò như một giao diện để truy cập vào nhiều kho lưu trữ thông qua một cấu hình duy nhất. Việc này giúp đơn giản hoá cấu hình ứng dụng cho người sử dụng cấu phần phần mềm, đồng thời tăng tính bảo mật bằng cách giảm thiểu các cuộc tấn công gây nhầm lẫn phần phụ thuộc.
Tạo tệp chính sách
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
Tạo kho lưu trữ ảo
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
Tích hợp repo vào dự án của bạn
Chạy lệnh sau để in cấu hình kho lưu trữ cần thêm vào dự án Java:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
Thay thế toàn bộ phần kho lưu trữ trong pom bằng một phần kho lưu trữ ảo trong kết quả.
Ví dụ: (tên dự án sẽ khác trong các 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>
Lấy các phần phụ thuộc từ Kho lưu trữ ảo
Vì Kho lưu trữ ảo là một phương thức truyền qua và sẽ không lưu trữ bất kỳ gói thực tế nào, để minh hoạ rõ ràng quy trình bạn sẽ xoá kho lưu trữ maven-central-cache mà bạn đã tạo trước đó và tạo lại nó, để bắt đầu lại với một kho lưu trữ trống
Chạy các lệnh sau để tạo lại kho lưu trữ bộ nhớ đệm
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
Bạn có thể kiểm tra kho lưu trữ trống trong bảng điều khiển. Truy cập vào Cloud Console - Artifact Registry - Repositories
Bây giờ, hãy vận dụng kho lưu trữ ảo bằng cách xây dựng dự án bằng lệnh sau
rm -rf ~/.m2/repository
mvn compile
Xem lại các gói trong bảng điều khiển
Truy cập Cloud Console – Artifact Registry - Repositories Nhấp vào maven-central-cache
rồi kiểm tra để đảm bảo các cấu phần phần mềm nhị phân đã được định cấu hình để lấy từ kho lưu trữ ảo nhưng cuối cùng cũng được lấy từ maven-central-cache
:
5. Xin chúc mừng!
Xin chúc mừng, bạn đã hoàn thành lớp học lập trình!
Nội dung bạn đã đề cập
- Dùng kho lưu trữ chuẩn để triển khai các gói riêng tư của bạn
- Sử dụng Kho lưu trữ từ xa để lưu các gói trung tâm maven vào bộ nhớ đệm
- Đã sử dụng kho lưu trữ ảo để kết hợp nhiều kho lưu trữ ngược dòng trong một cấu hình
Dọn dẹp
Chạy lệnh sau để xoá dự án
gcloud projects delete ${PROJECT_ID}
—
Lần cập nhật gần đây nhất: 22/3/2023