Setiap kali tugas pipeline dijalankan, instance baru akan dijadwalkan. Anda perlu menarik kode untuk dibangun dan membuat dependensi yang diperlukan. Jika waktu yang lama diperlukan untuk menarik dependensi, eksekusi tugas pipeline mungkin lambat atau habis waktu. Komunitas Serverless-cd menyediakan plugin cache berbasis Object Storage Service (OSS) untuk mengatasi masalah seperti penarikan dependensi yang lambat dan waktu habis saat pembuatan. Topik ini menjelaskan cara menggunakan plugin cache OSS untuk mempercepat pembuatan dependensi.
Cara menggunakan plugin cache
Komunitas Serverless-cd menyediakan plugin cache, yang dioptimalkan berdasarkan fitur Serverless Application Center. Anda hanya perlu menentukan Bucket OSS yang digunakan untuk caching saat menggunakan plugin cache. Plugin cache mengambil, membaca, dan memperbarui data cache di Bucket OSS yang ditentukan atau default berdasarkan kunci tertentu.
Jika kunci cache cocok setelah Anda menjalankan plugin, file yang sesuai dengan kunci cache diunduh ke direktori lokal yang ditentukan.
Setelah Anda menjalankan engine, file di direktori lokal diunggah ke Bucket OSS.
Tentukan cache OSS dalam konteks eksekusi
Anda dapat menentukan konfigurasi cache OSS dalam konteks eksekusi di pipeline, template pipeline, atau template tugas. Contoh kode:
---
# Kirim pipeline untuk dieksekusi.
kind: Pipeline
name: "p-<% .git.shortCommitId %>-<% .currentTimestampMs %>"
# Deskripsi.
description: pipeline ter-cache
spec:
context:
data:
# Konfigurasi cache Serverless Application Center. Jika bagian ini kosong, engine secara otomatis diinisialisasi di wilayah tempat node tugas dijadwalkan.
# Nama bucket default adalah serverless-cd-cache-${region-id}-<% .accountId %>.
cacheConfig:
# Tentukan untuk menggunakan OSS untuk caching. Jika bagian ini kosong, platform secara otomatis melakukan inisialisasi.
# Kami merekomendasikan agar Anda menggunakan platform untuk secara otomatis melakukan inisialisasi, karena node pekerja mungkin dijadwalkan ke wilayah yang berbeda dari wilayah tempat Bucket OSS yang ditentukan berada.
# Untuk repositori kode di GitHub, node pekerja dan Bucket OSS yang sesuai berada di wilayah Singapura (ap-southeast-1).
# Untuk repositori kode di GitLab, Codeup, dan Gitee, node pekerja dan Bucket OSS yang sesuai berada di wilayah Tiongkok (Hangzhou) (cn-hangzhou).
oss:
# Nama bucket yang digunakan untuk caching. Jika bucket tidak ada, engine tidak secara otomatis melakukan inisialisasi.
bucketName: serverless-cd-cache-ap-southeast-1-<% .accountId %>
# Wilayah tempat bucket berada. Kami merekomendasikan agar Anda tidak menarik data dari cache yang berada di wilayah lain.
regionId: ap-southeast-1
templateName: mytemplate-<% .git.branch %>
---Gunakan plugin cache dalam langkah-langkah
Anda dapat menggunakan plugin cache dengan menjalankan langkah-langkah konteks di template pipeline atau template tugas. Anda tidak perlu menentukan credentials. Plugin secara otomatis menggunakan izin peran yang Anda berikan untuk Serverless Application Center. Contoh kode:
---
kind: PipelineTemplate
name: mytemplate-<% .git.branch %>
description: template pipeline ter-cache
spec:
context:
data:
envName: test
deployFile: s.yaml
tasks:
# Lakukan pemeriksaan pra-pembuatan.
- name: pre-check
context:
data:
displayName: "Pemeriksaan pra-pembuatan"
enable: true
steps:
- plugin: "@serverless-cd/checkout"
- plugin: "@serverless-cd/s-setup"
- run: s plan --local -o json
taskTemplate: serverless-runner-task
runAfters: []
- name: pre-check-approval
context:
data:
dingdingNotification:
enable: false
enable: true
taskTemplate: need-approval
runAfters:
- name: pre-check
# Bangun dan sebarkan
- name: build-and-deploy
context:
data:
enable: true
steps:
- plugin: "@serverless-cd/checkout"
- plugin: "@serverless-cd/s-setup"
- plugin: "@serverless-cd/cache"
inputs:
# Tentukan pengenal unik untuk cache, yang dapat dikaitkan dengan informasi terkait, seperti informasi aplikasi atau informasi versi Git.
# Anda juga dapat menggunakan "cache-${{hashFile('./package.json')}}".
# Hitung pengenal unik cache berdasarkan nilai hash file lokal.
# Jalur objek cache di bucket adalah cache-home/${key}.
# Dalam contoh ini, jalur cache di bucket adalah cache-home/cache-<% .appName %>.
key: "cache-<% .appName %>"
# Konfigurasikan jalur cache sesuai kebutuhan alat pembuatan saat ini.
# Misalnya, untuk runtime Node.js, Anda dapat menggunakan nilai default ~/.npm sebagai jalur cache aplikasi pipeline.
path: ~/.npm
# Jalankan s-deploy.
- run: |
set -e
s deploy -t --use-local --assume-yes --skip-push
echo "Deploy by Serverless Devs success."
taskTemplate: serverless-runner-task
runAfters:
- name: pre-check-approval
---Jalur cache
Jalur cache aktual bervariasi berdasarkan alat pembuatan. Tabel berikut menjelaskan jalur cache untuk alat pembuatan umum. Anda juga dapat merujuk dokumentasi alat pembuatan untuk mendapatkan jalur cache.
Alat | Jalur cache |
Maven | ~/.m2 |
Gradle | ~/.gradle |
NPM | ~/.npm |
Yarn | ~/.yarn |
gomod | $GOPATH/pkg/mod |
Cache lainnya (seperti pip3) | ~/.cache |
Cache lokal
Anda dapat menggunakan ossutils untuk membuat cache lokal jika performa layanan yang digunakan untuk membangun dependensi buruk atau dependensi tidak dapat ditarik dari cloud karena alasan keamanan. Dalam hal ini, Anda harus menyimpan data cache menggunakan perangkat pengembangan lokal dan mengunggah cache ke OSS. Cache yang diunggah dapat digunakan dalam pipeline.
Anda juga dapat masuk ke Konsol OSS dan mengunggah cache lokal, seperti ~/.npm, ke Bucket OSS.
Contoh kode:
# Gunakan ossutils untuk membuat cache untuk pembuatan berbasis cloud. Salin cache npm lokal ke Bucket OSS.
# Bucket yang dibuat secara otomatis, URL-nya adalah serverless-cd-${region-id}-cache-${uid}.oss-${region-id}.aliyuncs.com.
# Untuk repositori kode di GitHub, node pekerja dan Bucket OSS yang sesuai harus ditempatkan di wilayah Singapura (ap-southeast-1).
# Untuk repositori kode di GitLab, Codeup, dan Gitee, node pekerja dan Bucket OSS yang sesuai harus ditempatkan di wilayah Tiongkok (Hangzhou) (cn-hangzhou).
./ossutil64 cp -r ~/.npm oss://${bucket_url}/cache-home/${cache_key}