Halaman ini menjelaskan cara menghubungkan host GitLab Enterprise Edition ke Cloud Build.
Sebelum memulai
-
Enable the Cloud Build and Secret Manager APIs.
Persyaratan host
Jika Anda belum menginstal instance Server GitLab Enterprise Edition, lihat panduan penginstalan dari GitLab Enterprise Edition untuk mengetahui petunjuknya.
Saat mengikuti petunjuk untuk menginstal instance Server GitLab Enterprise Edition, perhatikan hal berikut:
Anda harus mengonfigurasi host untuk menangani protokol
HTTPS
. Host yang dikonfigurasi dengan protokolHTTP
tidak didukung.Anda harus mengonfigurasi host dengan URL yang sama yang digunakan untuk menjangkau host Anda dari Google Cloud. Untuk mempelajari lebih lanjut, lihat dokumentasi GitLab tentang mengonfigurasi URL eksternal.
Izin IAM yang diperlukan
Untuk menghubungkan host GitLab Enterprise Edition, berikan peran Cloud Build Connection Admin (roles/cloudbuild.connectionAdmin
) ke akun pengguna Anda.
Untuk menambahkan peran yang diperlukan ke akun pengguna Anda, lihat Mengonfigurasi akses ke resource Cloud Build. Untuk mempelajari lebih lanjut peran IAM yang terkait dengan Cloud Build, lihat Peran dan izin IAM.
Jika instance GitLab Enterprise Edition Anda dihosting di jaringan pribadi, lihat Membangun repositori dari GitLab Enterprise Edition di jaringan pribadi untuk mempelajari peran IAM tambahan yang diperlukan sebelum koneksi host.
Menghubungkan ke host GitLab Enterprise Edition
Sebelum membuat koneksi host untuk instance GitLab Enterprise Edition, Anda harus membuat token akses pribadi di GitLab Enterprise Edition dengan menyelesaikan langkah-langkah berikut:
Login ke instance GitLab Enterprise Edition Anda.
Di halaman GitLab Enterprise Edition untuk instance Anda, klik avatar Anda di pojok kanan atas.
Klik Edit profil.
Di sidebar kiri, pilih Token akses.
Anda akan melihat halaman Personal Access Tokens.
Buat token akses dengan cakupan
api
untuk digunakan dalam menghubungkan dan memutuskan hubungan repositori.Buat token akses dengan cakupan
read_api
untuk memastikan repositori Cloud Build dapat mengakses kode sumber di repositori.
Konsol
Untuk menghubungkan host GitLab Enterprise Edition Anda ke Cloud Build:
Buka halaman Repositories di konsol Google Cloud .
Anda akan melihat halaman Repositories.
Di bagian atas halaman, pilih tab Generasi ke-2.
Di pemilih project di panel atas, pilih Google Cloud project Anda.
Klik Buat koneksi host untuk menghubungkan host baru ke Cloud Build.
Di panel kiri, pilih GitLab sebagai penyedia sumber Anda.
Di bagian Configure Connection, masukkan informasi berikut:
Region: Pilih region untuk koneksi Anda.
Name: Masukkan nama untuk koneksi Anda.
Di bagian Host details, pilih atau masukkan informasi berikut:
Penyedia GitLab: Pilih GitLab Enterprise Edition yang dikelola sendiri sebagai penyedia Anda.
URL Host: Masukkan URL host untuk koneksi Anda. Contoh,
https://my-gle-server.net
.CA Certificate: Klik Jelajahi untuk mengupload sertifikat yang ditandatangani sendiri.
Di bagian Jenis koneksi, pilih salah satu opsi berikut:
Internet publik: Pilih opsi ini jika instance Anda dapat diakses menggunakan internet publik.
Akses jaringan pribadi: Pilih opsi ini jika instance Anda dihosting di jaringan pribadi.
Di bagian Layanan Direktori Layanan, pilih lokasi untuk layanan Anda:
- Dalam project
your-project
- Dalam project lain
- Masukkan secara manual
Jika Anda memilih Dalam project lain atau Masukkan secara manual, masukkan informasi berikut:
Project: Masukkan atau pilih Google Cloud project ID Anda dari menu drop-down.
Region: Kolom ini telah memilih region koneksi Anda. Region yang ditentukan untuk layanan Anda harus cocok dengan region yang terkait dengan koneksi Anda.
Namespace: Pilih namespace layanan Anda.
Layanan: Pilih nama layanan di namespace Anda.
- Dalam project
Di bagian Personal access tokens, masukkan informasi berikut:
Token akses API: Masukkan token dengan akses cakupan
api
. Token ini digunakan untuk menghubungkan dan memutuskan hubungan repositori.Token akses API baca: Masukkan token dengan cakupan
read_api
akses. Pemicu Cloud Build menggunakan token ini untuk mengakses kode sumber di repositori.
Klik Connect.
Setelah mengklik tombol Connect, token akses pribadi Anda akan disimpan dengan aman di Secret Manager. Setelah koneksi host, Cloud Build juga membuat rahasia webhook atas nama Anda. Anda dapat melihat dan mengelola secret di halaman Secret Manager. Anda dapat melihat dan mengelola secret di halaman Secret Manager.
Anda kini telah berhasil membuat koneksi GitLab Enterprise Edition.
gcloud
Sebelum menghubungkan host GitLab Enterprise Edition ke Cloud Build, selesaikan langkah-langkah berikut untuk menyimpan kredensial Anda:
Buat secret webhook di Secret Manager dengan menjalankan perintah berikut:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-webhook-secret --data-file=-
Jika Anda menyimpan rahasia di project Google Cloud lain daripada project yang akan digunakan untuk membuat koneksi host, masukkan perintah berikut untuk memberikan akses project Anda ke agen layanan Cloud Build:
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT} \ --role="roles/secretmanager.admin"
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
Sekarang Anda dapat melanjutkan untuk menghubungkan host GitLab Enterprise Edition ke Cloud Build.
Selesaikan langkah-langkah berikut:
Masukkan perintah berikut untuk membuat koneksi GitLab Enterprise Edition:
gcloud builds connections create gitlab CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/API_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSION
Dengan:
- CONNECTION_NAME adalah nama koneksi Anda di Cloud Build.
- HOST_URI adalah URI instance GitLab Enterprise Edition Anda. Contoh,
https://my-gle-server.net
. - PROJECT_ID adalah Google Cloud project ID Anda.
- REGION adalah region untuk koneksi Anda.
- API_TOKEN adalah nama token Anda dengan cakupan
api
. - READ_TOKEN adalah nama token Anda dengan cakupan
read_api
. - SECRET_VERSION adalah versi secret Anda.
- WEBHOOK_SECRET adalah rahasia webhook Anda.
Anda kini telah berhasil membuat koneksi GitLab Enterprise Edition.
Terraform
Anda dapat menghubungkan host GitLab Enterprise Edition ke Cloud Build menggunakan Terraform.
Dalam contoh berikut, cuplikan kode melakukan hal berikut:
- Mengonfigurasi penyedia Google Terraform
- Membuat secret untuk menyimpan token akses pribadi GitLab Enterprise Edition Anda
- Memberikan izin yang diperlukan kepada agen layanan Cloud Build untuk mengakses rahasia
Membuat koneksi GitLab Enterprise Edition
// Configure the Terraform Google provider terraform { required_providers { google = {} } } // Create secrets and grant permissions to the Cloud Build service agent resource "google_secret_manager_secret" "api-pat-secret" { project = "PROJECT_ID" secret_id = "GITLAB_PAT_API" replication { auto {} } } resource "google_secret_manager_secret_version" "api-pat-secret-version" { secret = google_secret_manager_secret.api-pat-secret.id secret_data = "GITLAB_API_TOKEN" } resource "google_secret_manager_secret" "read-pat-secret" { project = "PROJECT_ID" secret_id = "GITLAB_PAT_READ" replication { auto {} } } resource "google_secret_manager_secret_version" "read-pat-secret-version" { secret = google_secret_manager_secret.pat-secret.id secret_data = "GITLAB_API_TOKEN" } resource "google_secret_manager_secret" "webhook-secret-secret" { project = "PROJECT_ID" secret_id = "WEBHOOK_SECRET" replication { auto {} } } resource "google_secret_manager_secret_version" "webhook-secret-secret-version" { secret = google_secret_manager_secret.webhook-secret-secret.id secret_data = "WEBHOOK_SECRET_VALUE" } data "google_iam_policy" "serviceagent-secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"] } } resource "google_secret_manager_secret_iam_policy" "policy-pak" { project = google_secret_manager_secret.private-key-secret.project secret_id = google_secret_manager_secret.private-key-secret.secret_id policy_data = data.google_iam_policy.serviceagent-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-rpak" { project = google_secret_manager_secret.webhook-secret-secret.project secret_id = google_secret_manager_secret.webhook-secret-secret.secret_id policy_data = data.google_iam_policy.serviceagent-secretAccessor.policy_data } resource "google_secret_manager_secret_iam_policy" "policy-whs" { project = google_secret_manager_secret.webhook-secret-secret.project secret_id = google_secret_manager_secret.webhook-secret-secret.secret_id policy_data = data.google_iam_policy.serviceagent-secretAccessor.policy_data } // Create the connection and add the repository resource resource "google_cloudbuildv2_connection" "my-connection" { project = "PROJECT_ID" location = "REGION" name = "CONNECTION_NAME" gitlab_config { authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.pat-secret-version.id } read_authorizer_credential { user_token_secret_version = google_secret_manager_secret_version.pat-secret-version.id } webhook_secret_secret_version = google_secret_manager_secret_version.webhook-secret-secret-version.id } depends_on = [ google_secret_manager_secret_iam_policy.policy-pak, google_secret_manager_secret_iam_policy.policy-rpak, google_secret_manager_secret_iam_policy.policy-whs ] }
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
- GITLAB_PAT_API adalah token akses pribadi Anda dengan akses
api
. - GITLAB_API_TOKEN adalah token akses pribadi Anda.
- GITLAB_PAT_READ adalah token akses pribadi Anda dengan akses
read_api
. - WEBHOOK_SECRET adalah nama secret yang berisi nilai secret webhook Anda.
- WEBHOOK_SECRET_VALUE adalah nilai rahasia webhook Anda.
- REGION adalah region untuk koneksi Anda.
- CONNECTION_NAME adalah nama untuk koneksi host GitLab Enterprise Edition Anda di Cloud Build.
- URI adalah URI koneksi Anda. Contoh,
https://my-gitlab-enterprise-server.net
. Anda kini telah berhasil membuat koneksi GitLab Enterprise Edition.
Langkah berikutnya
- Pelajari cara menghubungkan repositori GitLab Enterprise Edition.
- Pelajari cara membangun dan men-deploy workload Anda ke Google Cloud menggunakan komponen CI/CD yang dikelola Google di pipeline GitLab Anda. Lihat GitLab di Google Cloud.