Membuat pipeline DevOps serverless untuk Salesforce dengan Cloud Build

Last reviewed 2021-02-22 UTC

Tutorial ini menunjukkan cara mem-build integrasi berkelanjutan/deployment berkelanjutan pipeline (CI/CD) serverless untuk Salesforce menggunakan Salesforce Developer Experience (SFDX) dan Cloud Build. Pipeline Cloud Build menggunakan containerization. Pipeline menjalankan build sebagai serangkaian langkah build, dengan setiap langkah build dijalankan dalam container Docker. Pipeline dapat meningkatkan dan menurunkan skala sebagai respons terhadap beban tanpa perlu menyediakan server sebelumnya, dan menawarkan build otomatis yang cepat, konsisten.

Tutorial ini ditujukan bagi siapa saja yang bertanggung jawab untuk mendesain, mengembangkan, dan memelihara alur kerja DevOps di organisasi. Peran ini dapat mencakup arsitek, tim DevOps, dan engineer. Berbagai bagian dari dokumen ini menggambarkan bagian pipeline untuk peran yang berbeda. Misalnya, satu bagian untuk administrator dan pimpinan DevOps, dan bagian lainnya untuk developer Salesforce.

Dokumen ini mengasumsikan bahwa Anda sudah memahami produk Salesforce DX, Salesforce CLI, Git, GitHub, Docker, Google Cloud products such as Cloud Build, dan konsep containerization. Tutorial ini juga mengasumsikan bahwa Anda memiliki akun GitHub.

Siklus hidup pengembangan perangkat lunak; tutorial ini mengasumsikan bahwa Anda mengikuti metodologi rilis yang tangkas.

Tujuan

  • Siapkan Pengalaman Developer Salesforce.
  • Siapkan strategi percabangan Git.
  • Mengonfigurasi Cloud Build.
  • Jalankan pipeline CI/CD untuk Salesforce menggunakan alat build Google Cloud dan GitHub.

Biaya

Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih berikut:

Gunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

Anda mungkin juga dikenai biaya Salesforce. Dalam tutorial tersebut, Anda menggunakan org Salesforce Edisi Developer, yang mungkin gratis. Untuk mengetahui informasi selengkapnya, lihat halaman Salesforce tentang Edisi Developer.

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  3. Enable the Cloud Build API.

    Enable the API

  4. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

  5. Pastikan Anda memiliki akun Salesforce yang dapat mengambil peran dari Dev Hub org. Jika tidak memiliki org, Anda dapat membuat akun Edisi Developer di situs developer Salesforce.

Setelah menyelesaikan tutorial ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk informasi selengkapnya, lihat Pembersihan

Arsitektur

Diagram berikut menggambarkan arsitektur alur kerja CI/CD yang Anda buat dalam tutorial ini. Dalam arsitektur ini, project diatur sebagai rilis. Developer yang ingin mengerjakan fitur membuat branch fitur baru dari branch rilis.

Arsitektur pipeline yang menunjukkan alur pembuatan branch, membuat permintaan pull, dan penggabungan perubahan ke branch utama. Beberapa langkah pemicu tugas Cloud Build.

Diagram menggambarkan alur berikut:

  1. Developer membuat branch fitur di GitHub untuk fitur yang sedang mereka kembangkan.
  2. Developer menyelesaikan pekerjaan pengembangan dan menjalankan pengujian unit di org scratch Salesforce.
  3. Developer melakukan commit dan mengirim pekerjaan pengembangan mereka ke repositori kode sumber (dalam tutorial ini GitHub).
  4. Developer membuat permintaan pull untuk menggabungkan pekerjaan mereka ke dalam branch rilis.
  5. Pembuatan permintaan pull otomatis memicu tugas Cloud Build untuk menjalankan pengujian.
  6. Staf yang bertanggung jawab (biasanya pemimpin tim) meninjau dan menyetujui permintaan pull untuk menggabungkan pekerjaan pengembangan ke branch rilis.
  7. Penggabungan ke branch rilis akan otomatis memicu tugas Cloud Build untuk men-deploy codebase ke QA atau ke lingkungan Salesforce lainnya.
  8. Secara opsional, pengujian dan peninjauan manual dilakukan di lingkungan UM (Uji Mutu).
  9. Staf yang bertanggung jawab membuat permintaan pull untuk menggabungkan kode ke dalam branch main.
  10. Permintaan pull ke branch main memicu tugas Cloud Build untuk men-deploy kode ke produksi.

Developer yang ingin mengerjakan project mulai dengan meng-clone repositori project dari alat source kontrol perusahaan (GitHub dalam tutorial ini). Diagram berikut mewakili strategi ini sebagai grafik.

Strategi branch ditampilkan sebagai sekumpulan versi, dengan satu branch yang terpisah menjadi beberapa branch fitur yang kemudian digabungkan kembali secara terpisah ke branch rilis, dan dari sana menuju branch utama.

Seperti yang ditunjukkan dalam diagram, strategi untuk melakukan branch terdiri dari hal berikut:

  1. branch utama. Kode di branch utama mencerminkan versi kode saat ini yang sedang berjalan dalam produksi.
  2. branch rilis. branch rilis adalah branch yang berumur relatif lebih lama (dibandingkan dengan branch fitur) yang mengoordinasikan semua perubahan dan kode yang terkait dengan rilis. Organisasi membuat branch rilis baru untuk setiap rilis baru.
  3. Satu atau beberapa branch fitur. branch fitur membantu mengisolasi pekerjaan yang sedang berlangsung dari versi kode terbaru di branch utama. Biasanya, beberapa branch fitur membentuk branch rilis. Ini adalah praktik yang baik bagi developer untuk membuat branch fitur untuk perbaikan bug.

Setelah meng-clone repositori project, developer akan mengembangkannya di komputer lokal atau di org scratch Salesforce. Mereka dapat menggunakan org scratch untuk menjalankan pengujian unit pada perubahan yang dibuat. Jika pengujian unit lulus, pengujian tersebut akan melakukan commit dan mengirim kode mereka ke repositori kode sumber. Selanjutnya, alat ini membuat permintaan pull untuk kodenya yang akan digabungkan ke branch rilis induk.

Permintaan pull secara otomatis memicu tugas Cloud Build yang melakukan hal berikut:

  • Membuat org scratch baru untuk menjalankan pengujian unit.
  • Memperbarui permintaan pull dengan hasil pengujian.

Pada tahap ini, pimpinan tim dan pemilik produk dapat meninjau permintaan pull tersebut. Jika permintaan disetujui, perubahan akan digabungkan ke branch rilis.

Bergantung pada siklus proses pengembangan software, Anda dapat memiliki langkah-langkah otomatis tambahan yang dipicu berdasarkan penggabungan ke branch rilis. Contoh langkah otomatis adalah men-deploy kode yang divalidasi ke sandbox, yang lebih tinggi, seperti sandbox pengujian integrasi sistem atau uji mutu.

Anda juga dapat mengonfigurasi Cloud Build untuk mengirim notifikasi build dan melakukan tindakan tambahan menggunakan Cloud Functions, Cloud Run, atau alat Google Cloud lainnya. (Tindakan tambahan ini tidak tercakup dalam tutorial ini.) Pendekatan ini memberikan fleksibilitas untuk menyesuaikan pipeline agar sesuai dengan framework DevOps perusahaan Anda.

Untuk mempermudah, dalam tutorial ini, Anda akan men-deploy codebase contoh ke satu org Salesforce (Dev Hub). Ketika mem-build pipeline CI/CD untuk produksi, Anda menggunakan arsitektur yang diilustrasikan sebelumnya dan mengotomatiskan deployment ke sandbox yang merupakan bagian dari siklus proses pengembangan software Anda.

Persona yang biasanya terlibat dalam pengembangan perangkat lunak

Setiap organisasi berbeda dan masing-masing memiliki susunan peran dan timnya sendiri. Tabel berikut mencantumkan persona utama (peran) yang biasanya berinteraksi dengan pipeline DevOps Salesforce seperti yang dijelaskan dalam tutorial ini.

Karyawan dengan peran yang berbeda memiliki tanggung jawab yang berbeda dalam menyiapkan pipeline Salesforce. Oleh karena itu, tutorial ini memiliki dua jalur. Satu jalur ditujukan untuk administrator dan pimpinan DevOps, sedangkan jalur lainnya ditujukan untuk developer.

Persona Tanggung Jawab
Administrator atau Pemimpin DevOps
  • Menyiapkan org Dev Hub.
  • Menghasilkan sertifikat yang memungkinkan pengguna terhubung ke org Dev Hub dari Salesforce CLI.
  • Membuat aplikasi yang terhubung di semua lingkungan Salesforce tempat kode di-deploy dengan menggunakan pipeline DevOps.
  • Menyiapkan akun developer di org Dev Hub.
  • Menyiapkan pipeline DevOps dan pemicu yang diperlukan.
  • Menginisialisasi repositori kode sumber.
  • Menyiapkan pemicu Cloud Build.
Developer Salesforce
  • Meng-clone repositori kode sumber.
  • Menyiapkan Salesforce CLI untuk pengembangan.
  • Mengembangkan dan menguji unit fitur dalam rilis.
  • Setelah fitur selesai, buat permintaan pull untuk menggabungkan fitur ke dalam branch rilis.
Prospek UM (Uji Mutu)
  • Meninjau dan menyetujui permintaan pull untuk menggabungkan pekerjaan developer pada fitur ke dalam branch rilis.
Prospek rilis
  • Mengelola dan menyetujui permintaan pull untuk penggabungan ke branch utama, yang mempromosikan kode ke produksi.

Menyiapkan pipeline untuk administrator Salesforce dan prospek DevOps

Bagian ini menjelaskan tugas-tugas yang diikuti oleh administrator dan tim DevOps untuk menyiapkan alur kerja CI/CD.

Mengaktifkan org Dev Hub

  1. Login ke org produksi Salesforce.
  2. Di tab Setup, di kotak Quick Find, masukkan Dev Hub, lalu pilih Dev Hub.

    Halaman Salesforce Dev Hub.

  3. Aktifkan Dev Hub.

    Langkah ini memungkinkan Anda menyiapkan org scratch. Anda menggunakan org scratch untuk men-deploy kode contoh dalam tutorial ke org Salesforce Edisi Developer.

Membuat sertifikat dan pasangan kunci

Setelah mengaktifkan Dev Hub org, Anda harus membuat sertifikat dan pasangan kunci yang dapat digunakan untuk melakukan autentikasi ke org Salesforce Dev Hub. Anda akan menggunakan pasangan sertifikat dan kunci ini saat mengonfigurasi Cloud Build di langkah berikutnya.

Untuk pipeline CI/CD produksi, Anda perlu membuat sertifikat tambahan untuk melakukan autentikasi ke sandbox Salesforce. (Anda tidak membuat sertifikat tambahan ini sebagai bagian dari tutorial ini.) Saat membuat sertifikat dan pasangan kunci untuk setiap lingkungan, pastikan Anda memberi nama yang dapat diidentifikasi ,seperti pada contoh berikut:

  • Produksi (org Dev Hub): salesforce.key dan salesforce.crt. Anda menggunakan nama-nama ini dalam prosedur berikutnya.
  • Sandbox UM (Uji Mutu): salesforce_qa.key dan salesforce_qa.crt.
  • Sandbox Pengembangan Terintegrasi (IDEV): salesforce_dev.key dan salesforce_dev.crt.

Untuk membuat sertifikat dan pasangan kunci, ikuti langkah-langkah berikut:

  1. Di Cloud Shell, buat pasangan sertifikat dan kunci agar Cloud Build dapat melakukan autentikasi ke org Salesforce Dev Hub Anda dari the Salesforce CLI:

    openssl req -x509 -sha256 -nodes -days 36500 -newkey \
    rsa:2048 -keyout salesforce.key -out \
    salesforce.crt
    

    Anda akan diminta memasukkan detail untuk mengidentifikasi sertifikat: Untuk tutorial ini, nilai-nilai ini tidak penting. Jadi, tekan Enter untuk menerima default.

    erhatikan bahwa dalam perintah ini, Anda menggunakan nama salesforce.key dan salesforce.crt, karena Anda membuat sertifikat dan pasangan kunci untuk org Dev Hub.

  2. Klik Lainnya dan pilih Download File.

  3. Di kotak Jalur file yang sepenuhnya memenuhi syarat, masukkan nama file berikut, lalu klik Download:

    salesforce.crt
    

    Langkah ini akan mendownload sertifikat yang Anda buat ke komputer lokal. Anda mengupload sertifikat ke org Salesforce di bagian berikutnya.

Membuat aplikasi yang terhubung di Salesforce

Di bagian ini, Anda akan membuat aplikasi terhubung yang dapat digunakan Cloud Build untuk men-deploy kode Salesforce. Untuk tutorial ini, Anda hanya perlu men-deploy kode ke org Dev Hub. Dalam lingkungan produksi, Anda men-deploy kode untuk setiap sandbox dan untuk org produksi tempat Anda ingin Cloud Build men-deploy kode Salesforce untuk pipeline DevOps.

Sebagai bagian dari proses ini, Anda akan menggunakan sertifikat dan pasangan kunci yang dihasilkan di bagian sebelumnya. Sertifikat adalah kunci publik untuk mengautentikasi klien Salesforce dalam sesi Cloud Shell ke org Salesforce Dev Hub (sandbox Salesforce). Sertifikat tersebut juga digunakan mengautentikasi Cloud Build untuk deployment otomatis.

Detail beberapa langkah dalam prosedur berikut bergantung pada edisi Salesforce yang Anda gunakan. Pastikan Anda menggunakan sertifikat dan pasangan kunci yang benar untuk lingkungan yang dipilih.

  1. Jika Anda menggunakan Salesforce Lightning Experience, gunakan App Manager untuk membuat aplikasi yang terhubung. Dari bagian Penyiapan di org Salesforce, lakukan tindakan berikut:

    1. Di kotak Quick Find, masukkan App.
    2. Pilih App Manager.
    3. Klik Aplikasi Terhubung Baru.

    Jika Anda menggunakan Salesforce Klasik, dari bagian Penyiapan di org Salesforce, lakukan tindakan berikut:

    1. Di kotak Quick Find, masukkan Apps.
    2. Di bagian Build > Create, pilih Aplikasi.
    3. Di bagian Aplikasi Terhubung, klik Baru.
  2. Untuk nama aplikasi, masukkan Google Cloud DevOps.

    Ini akan mengisi Google_Cloud_DevOps ke kotak Nama API.

  3. Masukkan informasi email kontak dan informasi lainnya yang sesuai untuk aplikasi Anda.

  4. Pilih Aktifkan Setelan OAuth.

  5. Untuk nilai URL Callback, masukkan URL berikut:

    http://localhost:1717/OauthRedirect
    
  6. Guna mengaktifkan opsi untuk menggunakan tanda tangan digital, klik Choose File, lalu pilih file salesforce.crt yang Anda download sebelumnya.

  7. Tambahkan cakupan OAuth berikut ke Cakupan OAuth yang Dipilih:

    • Mengakses dan mengelola data (api) Anda
    • Menjalankan permintaan atas nama Anda kapan saja (refresh_token, offline_access)
    • Memberikan akses ke data Anda melalui web (web)

    Selektor kotak dialog untuk memilih cakupan OAuth.

  8. Klik Simpan, lalu klik Lanjutkan.

  9. Catat nilai Kunci Konsumen yang ditampilkan di bagian API; Anda akan membutuhkannya nanti saat menyiapkan manifes Cloud Build.

    Jika bekerja di lingkungan produksi, Anda memiliki kunci untuk setiap lingkungan deployment.

  10. Click Manage, and then to change OAuth policies, click Edit Kebijakan.

  11. Tetapkan Pengguna yang diizinkan ke Pengguna yang Disetujui Admin telah Diotorisasi lalu konfirmasi pilihannya.

  12. Setel pelonggaran IP ke Pelonggaran Pembatasan IP.

  13. Klik Simpan.

  14. Klik Kelola Profil lalu pilih opsi Administrator Sistem.

    Setelah langkah ini, pengguna yang mengasumsikan profil ini dapat login ke Salesforce CLI.

  15. Klik Simpan.

Melakukan inisialisasi lingkungan Google Cloud

  1. Di Cloud Shell, tetapkan project yang Anda buat atau pilih sebagai project default:

    gcloud config set project PROJECT_ID
    

    Ganti PROJECT_ID dengan ID project Google Cloud Anda.

  2. Tetapkan setelan untuk region dan zona:

    gcloud config set compute/region us-central1
    gcloud config set compute/zone us-central1-a
    

    Dalam tutorial ini, Anda menggunakan us-central1 sebagai region dan us-central1-a sebagai zona.

  3. Ekspor project ID Google saat ini ke variabel lingkungan bernama GCP_PROJECT_NUMBER:

    export GCP_PROJECT_NUMBER=$(gcloud projects describe $DEVSHELL_PROJECT_ID --format='value(projectNumber)')
    

Mengupload kunci Salesforce ke Cloud Storage

  1. Di Cloud Shell, buat bucket Cloud Storage di project build Anda untuk menyimpan file kunci pribadi Salesforce:

    gsutil mb -p ${DEVSHELL_PROJECT_ID} -l us-central1 \
        gs://salesforce-ref-${DEVSHELL_PROJECT_ID}
    

    Nama bucket harus unik secara global. Perintah ini akan membuat nama bucket yang berisi ID project Google Cloud Anda.

  2. Salin kunci pribadi Salesforce yang Anda buat di bagian Mengaktifkan org Dev Hub ke bucket Cloud Storage baru:

    gsutil cp salesforce.key gs://salesforce-ref-${DEVSHELL_PROJECT_ID}
    

Membuat repositori GitHub Anda

  1. Di Cloud Shell, clone repositori yang terkait dengan tutorial ini:

    git clone https://github.com/GoogleCloudPlatform/salesforce-serverless-cicd-cloudbuild
    
  2. Buat repositori GitHub baru bernama DEV_REPO_NAME.

    Ganti DEV_REPO_NAME dengan nama yang ingin Anda tetapkan ke repositori secara lokal.

    Ini adalah repositori tempat developer mengambil kode atau mengirim kode. Untuk keperluan tutorial ini, Anda membuat repositori ini di akun GitHub Anda sendiri.

  3. Buka repositori yang di-clone:

    cd salesforce-serverless-cicd-cloudbuild
    
  4. Tambahkan repositori GitHub developer Anda sebagai repositori jarak jauh:

    git remote add github DEV_REPO_NAME
    

Mengonfigurasi Cloud Build

Di bagian ini, Anda akan menyelesaikan langkah-langkah penyiapan yang diperlukan untuk memicu tugas Cloud Build saat developer membuat permintaan pull untuk penggabungan tugas mereka menjadi branch rilis.

Anda dapat menyiapkan dua pemicu untuk pipeline CI/CD yang Anda buat dalam tutorial ini:

  • Pemicu yang menjalankan tugas Cloud Build saat developer membuat permintaan pull untuk menggabungkan kode ke dalam branch rilis. Penggunaan standar untuk pemicu ini adalah menjalankan pengujian unit.
  • Pemicu yang menjalankan tugas Cloud Build saat permintaan pull digabungkan ke branch rilis. Penggunaan umum untuk pemicu ini adalah untuk men-deploy perubahan pada sandbox tujuan (dalam tutorial ini Dev Hub).

Membuat image dasar yang menyertakan Salesforce DX

Cloud Build menjalankan build Anda sebagai serangkaian langkah, dan setiap langkah dijalankan dalam container Docker. Anda akan mem-build image container Docker dasar yang menyertakan Salesforce CLI, dan Cloud Build menggunakan perintah Salesforce CLI untuk menjalankan tugas tersebut.

  1. Di Cloud Shell, buat Dockerfile untuk image yang perlu Anda build:

    cat <<EOF > Dockerfile
    FROM debian:buster
    RUN apt-get update && \
    apt-get install -y wget xz-utils
    RUN wget https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz && \
    mkdir sfdx && \
    tar xJf sfdx-linux-amd64.tar.xz -C sfdx --strip-components 1 && \
    ./sfdx/install
    ENTRYPOINT [ "sfdx" ]
    EOF
    
  2. Ekspor nama image Docker ke variabel lingkungan bernama SFDX_BASE_IMAGE:

    export SFDX_BASE_IMAGE="gcr.io/${DEVSHELL_PROJECT_ID}/salesforcedx-base-image:1"
    
  3. Bangun container Anda dengan Cloud Build dan publikasikan image ke Container Registry:

    gcloud builds submit --tag ${SFDX_BASE_IMAGE}
    

Mengonfigurasi tugas Cloud Build

Anda menentukan tugas Cloud Build dengan mengedit file cloudbuild.yaml.

  1. Di Cloud Shell, buat file cloudbuild.yaml untuk menentukan langkah-langkah tugas yang harus dijalankan saat Cloud Build men-deploy kode ke org Salesforce Dev Hub Anda:

    cat <<EOF > cloudbuild.yaml
    steps:
    - name: gcr.io/cloud-builders/gsutil
      args: ['cp', 'gs://\${_BUCKET_NAME}/salesforce.key', 'salesforce.key']
    - name: "${SFDX_BASE_IMAGE}"
      args:
      - force:auth:jwt:grant
      - --setdefaultusername
      - -u
      - \${_SF_USERNAME}
      - -f
      - ./salesforce.key
      - -i
      - \${_CONSUMER_KEY}
    - name: "${SFDX_BASE_IMAGE}"
      args: ['force:source:deploy', '-p', './force-app/']
    substitutions:
      _BUCKET_NAME: __BUCKET_NAME__
      _SF_USERNAME: __USERNAME__
      _CONSUMER_KEY: __CONSUMER_KEY__
    EOF
    

    File ini mengonfigurasi Cloud Build untuk melakukan hal berikut:

    1. Download file salesforce.key yang digunakan Cloud Build untuk melakukan autentikasi ke org Dev Hub.
    2. Mulai container Docker yang telah memiliki Salesforce CLI, lalu hubungkan ke org Dev Hub menggunakan hibah JWT. Cloud Build menggunakan parameter konfigurasi seperti kunci konsumen dan nama pengguna Salesforce yang ada dalam definisi pemicu Cloud Build.
    3. Deploy kode yang dikirim oleh developer ke org Dev Hub atau ke sandbox tujuan lain di pipeline CI/CD produksi.
  2. Buat file lain bernama cloudbuild_pr.yaml untuk menentukan langkah-langkah tugas yang akan dijalankan saat Cloud Build men-deploy kode dari permintaan pull ke sandbox atau org scratch Salesforce sementara untuk pengujian:

    cat <<EOF > cloudbuild_pr.yaml
    steps:
    - name: gcr.io/cloud-builders/gsutil
      args: ['cp', 'gs://\${_BUCKET_NAME}/salesforce.key', 'salesforce.key']
    - name: "${SFDX_BASE_IMAGE}"
      args:
      - force:auth:jwt:grant
      - -u
      - \${_SF_USERNAME}
      - -f
      - ./salesforce.key
      - -i
      - \${_CONSUMER_KEY}
    - name: "${SFDX_BASE_IMAGE}"
      args:
      - force:org:create
      - --setdefaultusername
      - --definitionfile
      - config/project-scratch-def.json
      - --targetdevhubusername
      - \${_SF_USERNAME}
      - --setalias
      - testing org
    - name: "${SFDX_BASE_IMAGE}"
      args: ['force:source:push']
    - name: "${SFDX_BASE_IMAGE}"
      args: ['force:apex:test:run', '--resultformat', 'tap', '--codecoverage']
    - name: "${SFDX_BASE_IMAGE}"
      args: ['force:org:delete', '--noprompt']
    substitutions:
      _BUCKET_NAME: __BUCKET_NAME__
      _SF_USERNAME: __USERNAME__
      _CONSUMER_KEY: __CONSUMER_KEY__
    EOF
    

    File ini mengonfigurasi Cloud Build untuk melakukan hal berikut:

    1. Download file salesforce.key yang digunakan Cloud Build untuk melakukan autentikasi ke org Dev Hub.
    2. Mulai container Docker yang telah menginstal Salesforce DX CLI, lalu hubungkan ke org Dev Hub menggunakan hibah JWT. Cloud Build menggunakan parameter konfigurasi seperti kunci konsumen dan nama pengguna Salesforce pada definisi pemicu Cloud Build.
    3. Buat org scracth baru guna men-deploy kode developer untuk pengujian otomatis.
    4. Jalankan teks Apex di org scratch.
    5. Lakukan output hasil teks Apex, yang tersedia di ringkasan permintaan pull GitHub.
    6. Hapus org scratch sementara.

Mengirim repositori Anda ke GitHub

  1. Di Cloud Shell, tambahkan file cloudbuild yaml baru dan Dockerfile ke repositori, lalu kirim file ke branch utama repositori DEV_REPO_NAME. Saat diminta, login ke GitHub.

    git add .
    git commit -m "Added cloud build configuration"
    git push github main
    
  2. Buat branch rilis tempat developer dapat mengambil kode atau mengirim kode. Untuk tutorial ini, beri nama branch release-sample.

    git checkout -b release-sample
    
  3. Kirim branch ke GitHub:

    git push github release-sample
    

Menghubungkan repositori GitHub Anda ke Cloud Build

  1. Buka halaman Aplikasi Cloud Build di marketplace GitHub.
  2. Scroll ke bawah, lalu klik Setup dengan Google Cloud Build. Jika diminta, masuk ke GitHub.
  3. Menghubungkan repositori Anda ke Cloud Build:
    1. Pilih Hanya pilih repositori.
    2. Di daftar Pilih repositori, pilih repositori.
  4. Klik Install (Instal).
  5. Login ke Google Cloud

    Halaman Otorisasi akan ditampilkan, dan tempat Anda diminta untuk mengizinkan aplikasi Google Cloud Build terhubung ke Google Cloud.

  6. Klik otorisasikan Google Cloud Build dengan GoogleCloudBuild.

    Anda akan dialihkan ke Konsol Google Cloud.

  7. Pilih project Google Cloud Anda.

  8. Jika Anda setuju, terima persyaratannya, lalu klik Berikutnya.

  9. Di halaman Pilih repositori, pilih repositori GitHub DEV_REPO_NAME.

  10. Klik Connect repository.

  11. Klik Create Push Trigger.

Perbarui definisi pemicu Cloud Build

Anda dapat menentukan detail untuk pemicu baru yang dibuat saat mengklik Buat Pemicu Push di bagian sebelumnya.

  1. Di Konsol Google Cloud, buka halaman Pemicu Cloud Build

    Buka halaman pemicu Cloud Build

  2. Klik Menu untuk pemicu baru, lalu klik Edit.

  3. Tetapkan Nama ke pull-request-to-release-branch.

  4. Ubah deskripsi menjadi Run unit tests when a pull request is created from a feature branch.

  5. Ubah Acara menjadi Permintaan Pull (hanya Aplikasi GitHub).

  6. Untuk Source, di kotak teks Base branch, masukkan ekspresi berikut:

    ^release.*
    
  7. Untuk Konfigurasi, pilih file konfigurasi Cloud Build (yaml atau json) dan masukkan cloudbuild_pr.yaml dalam kotak teks.

  8. Di bagian Variabel substitusi, buat tiga variabel. Untuk setiap variabel, lakukan hal berikut:

    1. Klik Tambahkan Item.
    2. Tetapkan Variabel dan kolomNilai seperti yang tercantum dalam tabel berikut.

      Variabel Nilai
      _BUCKET_NAME Nama bucket Cloud Storage untuk file kunci Salesforce, dalam format berikut:

      salesforce-ref-PROJECT_ID

      Ganti PROJECT_ID dengan ID project Google Cloud Anda.
      _CONSUMER_KEY Kunci konsumen dalam aplikasi terhubung yang Anda buat di org Salesforce Dev Hub.
      _SF_USERNAME Nama pengguna Salesforce untuk org Dev Hub.
  9. Klik Simpan.

    Jangan tutup halaman ini. Anda akan melakukan pekerjaan lebih lanjut di halaman ini di prosedur berikutnya.

Membuat pemicu Cloud Build kedua

Langkah berikutnya adalah membuat pemicu lain untuk memulai tugas Cloud Build saat commit dilakukan ke branch rilis. Pemicu ini memanggil tugas Cloud Build untuk mengirim perubahan ke org Dev Hub Anda. Di pipeline DevOps, Anda harus memastikan bahwa hanya personel dan proses yang memiliki otorisasi yang dapat melakukan perubahan pada branch rilis.

  1. Di halaman Pemicu Cloud Build page, klik Create Trigger untuk membuat pemicu baru.
  2. Tetapkan Nama ke commits-to-release-branch.
  3. Untuk Trigger Type, pilih Kirim ke Branch.
  4. Dalam daftar Repositori, pilih repositori Salesforce GitHub Anda.
  5. Di kotak teks Branch (regex), masukkan ekspresi berikut:

    ^release.*
    
  6. Untuk Konfigurasi Build, pilih file konfigurasi Cloud Build dan masukkan cloudbuild.yaml.

  7. Di bagian Variabel substitusi, buat tiga variabel. Untuk setiap variabel, lakukan hal berikut:

    1. Klik Tambahkan Item.
    2. Tetapkan Variabel dan kolomNilai seperti yang tercantum dalam tabel berikut.

      Variabel Nilai
      _BUCKET_NAME Masukkan nama bucket untuk file kunci Salesforce, dalam format berikut:

      salesforce-ref-PROJECT_ID

      Ganti PROJECT_ID dengan ID project Google Cloud anda.
      _CONSUMER_KEY Kunci konsumen dalam aplikasi terhubung yang Anda buat di org Salesforce Dev Hub.
      _SF_USERNAME Nama pengguna Salesforce untuk org Dev Hub.
  8. Klik Simpan.

Menambahkan izin untuk mengizinkan Cloud Build membaca kunci Salesforce

  • Di Cloud Shell, tambahkan izin ke akun layanan Cloud Build Anda agar akun dapat membaca kunci Salesforce dari bucket Cloud Storage yang Anda buat:

    gsutil iam ch serviceAccount:$GCP_PROJECT_NUMBER@cloudbuild.gserviceaccount.com:objectViewer \
        gs://salesforce-ref-${DEVSHELL_PROJECT_ID}
    

Menyiapkan pipeline untuk developer Salesforce

Tugas yang dijelaskan di bagian ini adalah untuk developer Salesforce.

Jika pada tutorial ini Anda telah melakukan langkah-langkah di bagian sebelumnya yang ada di bagian untuk administrator dan prospek, pastikan Anda menggunakan kumpulan kredensial yang berbeda untuk menjalankan langkah-langkah di bagian ini.

Langkah-langkah penginstalan Salesforce DX CLI dapat bervariasi berdasarkan OS yang Anda gunakan. Langkah-langkah di bagian ini menjelaskan langkah-luntuk Linux Debian. Untuk mengetahui petunjuk untuk macOS dan Windows, lihat Instal Salesforce CLI dalam dokumentasi Salesforce.

Menyiapkan Salesforce DX CLI

Di bagian ini, Anda akan menginstal Salesforce CLI dan menyiapkan otorisasi untuknya.

  1. Di komputer lokal Anda (bukan di Cloud Shell), buka direktori utama:

    cd $HOME
    
  2. Instal alat xz-utils dan wget:

    sudo apt-get install --assume-yes xz-utils wget
    
  3. Instal Salesforce CLI:

    wget https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz
    
  4. Buat direktori sfdx:

    mkdir sfdx
    
  5. Ekstrak file tar yang telah didownload:

    tar xJf sfdx-linux-amd64.tar.xz -C sfdx --strip-components 1
    
  6. Instal CLI:

    ./sfdx/install
    

    Salesforce CLI diinstal di /usr/local/bin/sfdx.

  7. Pastikan CLI telah disiapkan dengan benar:

    sfdx
    

    Outputnya mirip dengan yang berikut ini:

    VERSION
    sfdx-cli/7.8.1-8f830784cc linux-x64 node-v10.15.3
    
    USAGE
    $ sfdx [COMMAND]
    
    COMMANDS
    commands  list all the commands
    force     tools for the Salesforce developer
    help      display help for sfdx
    plugins   add/remove/create CLI plug-ins
    update    update the sfdx CLI
    which     show which plugin a command is in
    
    TOPICS
    Run help for each topic below to view subcommands
    
    commands  list all the commands
    force     tools for the Salesforce developer
    plugins   add/remove/create CLI plug-ins
    

Menghubungkan lingkungan pengembangan lokal ke org Salesforce Dev Hub

  1. Dari komputer lokal, login ke org Salesforce menggunakan kredensial untuk peran developer:

    sfdx force:auth:web:login --setalias YOUR_HUB_ORG
    

    Ganti YOUR_HUB_ORG dengan alias yang sesuai untuk org Dev Hub Anda.

    Perintah ini membuka browser web di komputer lokal Anda, sehingga Anda tidak dapat menjalankannya di VM yang terhubung dengan Anda.

Meng-clone repositori GitHub

  1. Clone repositori GitHub yang dibuat oleh administrator Salesforce Anda:

    git clone DEV_REPO_NAME -o github
    
  2. Buka direktori repositori yang di-clone:

    cd DEV_REPO_NAME
    

Mengirim codebase dan metadata Salesforce ke org scratch

Di bagian ini, Anda akan mengirim codebase dan metadata ke org scratch agar dapat diuji unitnya.

  1. Di komputer lokal, ekspor nama pengguna Dev Hub Anda ke variabel lingkungan bernama SALESFORCE_USERNAME:

    export SALESFORCE_USERNAME=YOUR_DEVHUB_USERNAME
    

    Ganti YOUR_DEVHUB_USERNAME dengan nama pengguna yang Anda siapkan sebelumnya.

  2. Buat org scratch untuk menguji repositori yang Anda clone untuk tutorial ini:

    sfdx force:org:create \
        --setdefaultusername \
        --definitionfile config/project-scratch-def.json \
        --targetdevhubusername ${SALESFORCE_USERNAME} \
        --setalias feature-test-scratch-org
    
  3. Kirim metadata dan kode ke org scratch:

    sfdx force:source:push
    
  4. Buat URL untuk org scratch tersebut dan buka URL tersebut di jendela browser:

    sfdx force:org:open
    

Biasanya, langkah berikutnya dalam siklus proses project adalah menjalankan pengujian unit dan melakukan validasi fitur yang telah Anda kembangkan. Anda tidak akan melakukannya dalam tutorial ini karena Anda menangani sampel kode yang telah divalidasi sebelumnya.

Mengirim kode Anda ke repositori kode sumber

  1. Di komputer lokal, buat branch baru bernama feature-1:

    git checkout -b feature-1
    
  2. Kirim perubahan ke repositori kode sumber:

    git add .
    git commit -m "Feature 1 changes"
    git push github feature-1
    

    Untuk tutorial ini, Anda akan menggunakan GitHub sebagai alat kode sumber.

Melakukan pengujian deployment

Bagian ini menjelaskan pengujian yang dapat Anda jalankan untuk melakukan verifikasi bahwa pemicu yang Anda buat berfungsi. Repositori yang dibuat oleh administrator Salesforce Anda berisi kelas sampel pengujian.

  1. Di mesin lokal Anda (bukan di Cloud Shell), buat branch Git baru:

    git checkout -b feature-1
    
  2. Dengan menggunakan editor teks, buka file berikut:

    ./force-app/main/default/classes/SampleTest.cls
    
  3. Agar pengujian gagal, dalam pernyataan System.assertEquals, ubah nilai 101 menjadi 102. Setelah Anda melakukan perubahan, simpan file, tetapi tetaplah buka karena Anda mengubahnya lagi nanti dalam prosedur ini.

    @isTest
    public class SampleTest {
    static testmethod void testAddOne() {
        Test.startTest();
        System.assertEquals(Sample.addOne(100), 102); // Change to 102 from 101
        Test.stopTest();
      }
    }
    
  4. Tambahkan dan commit perubahan ke branch fitur:

    git add .
    git commit -m "Changed test case"
    git push github feature-1
    
  5. Buat permintaan pull untuk menggabungkan kode Anda ke release-sample branch.

    Tugas Cloud Build baru dipicu. Namun, tugas gagal karena pengujian unit gagal.

  6. Untuk melihat status build, buka halaman Cloud Build.

    Buka halaman Cloud Build

  7. Buka bagian Histori di halaman Cloud Build.

    Anda akan melihat log build berikut untuk tugas tersebut, yang menunjukkan bahwa pernyataan pengujian gagal.

    Step #4: not ok 1 SampleTest.testAddOne
    Step #4: # System.AssertException: Assertion Failed: Expected: 101, Actual: 102
    Step #4: # Class.SampleTest.testAddOne: line 24, column 1
    Step #4: # Run "sfdx force:apex:test:report -i 7076300001gEzne --resultformat <format>" to retrieve test results in a different format.
    [. . .]
    Finished Step #4
    ERROR
    ERROR: build step 4 "gcr.io/serverless-devops-sf/salesforcedx-base-image:1" failed: step exited with non-zero status: 100
    
  8. Agar pengujian lulus, dalam file ./force-app/main/default/classes/SampleTest.cls, ubah nilai 102 kembali ke 101:

    @isTest
    public class SampleTest {
    static testmethod void testAddOne() {
        Test.startTest();
        System.assertEquals(Sample.addOne(100), 101); //Change back to 101 from 102
        Test.stopTest();
      }
    }
    
  9. Tambahkan dan commit perubahan ke branch fitur:

    git add .
    git commit -m "Changed test case to make it pass"
    git push github feature-1
    

    Operasi commit memicu tugas Cloud Build.

  10. Setelah tugas selesai, tinjau permintaan pull di GitHub dan gabungkan ke branch release-sample.

    Dalam alur kerja produksi, otoritas untuk menggabungkan permintaan pull biasanya terbatas pada pimpinan dan administrator DevOps. Untuk mengetahui informasi selengkapnya tentang cara menyiapkannya, lihat Menetapkan kemampuan penggabungan permintaan pull di situs GitHub.

  11. Di konsol Google Cloud, tinjau tugas Cloud Build yang otomatis dipicu saat Anda menggabungkan permintaan pull ke branch sampel rilis.

  12. Setelah tugas selesai, login ke org Dev Hub Anda. Anda dapat masuk baik sebagai developer atau sebagai administrator.

    Modifikasi kode developer tersedia di org Salesforce ini. Untuk melihatnya, buka halaman Penyiapan dan lihat di bagian Kode Kustom/Kelas Apex.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource Salesforce

Anda juga dapat menghapus org Edisi Developer dan scratch org terkait yang Anda buat untuk tutorial ini.

Menonaktifkan org Edisi Developer Anda

  1. Buka org Salesforce Dev Hub.
  2. Dari Penyiapan, di kotak Quick Find, masukkan Company, lalu pilih Informasi Perusahaan.
  3. Klik Informasi Perusahaan.
  4. Klik tombol Nonaktifkan Org.

    Halaman Salesforce untuk menonaktifkan org.

Menghapus org scratch

  • Di Cloud Shell, jalankan perintah berikut untuk menghapus org scratch Salesforce:

    sfdx force:org:delete -u feature-test-scratch-org
    

Menghapus repositori GitHub

Buka GitHub dan hapus repositori yang Anda buat di akun pribadi untuk tutorial ini.

Langkah selanjutnya

Untuk arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Cloud Architecture Center.