全部产品
Search
文档中心

Function Compute:Optimasi Pipeline: Gunakan plugin cache OSS untuk mempercepat pembuatan dependensi

更新时间:Jul 02, 2025

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}