Dalam konfigurasi pipeline, Anda dapat menggunakan file .yaml untuk menentukan cara sebuah pipeline berjalan di Serverless Application Center guna membangun dan menerbitkan aplikasi serverless. Topik ini menjelaskan cara mengonfigurasi file .yaml serta makna bidang-bidang yang telah ditentukan sebelumnya dalam file tersebut.
Latar Belakang
File .yaml mendeskripsikan objek pipeline dan struktur data dari template pipeline yang digunakan untuk menjalankan pipeline. Ketika terjadi perubahan pada repositori kode, perubahan tersebut memicu Serverless Application Center melalui webhook untuk menjalankan pipeline berdasarkan file .yaml.
Kami merekomendasikan agar Anda menjalankan pipeline berdasarkan file .yaml karena ini merupakan praktik DevOps umum di Serverless Application Center. Anda dapat menentukan file .yaml yang sudah ada atau membuat file .yaml saat membuat aplikasi atau di lingkungan tertentu. Untuk informasi lebih lanjut tentang cara menentukan file .yaml, lihat Kelola Pipeline.
Prasyarat
Anda sudah familiar dengan pipeline dan template pipeline. Untuk informasi lebih lanjut, lihat Pipeline dan Template Pipeline.
Repositori Git yang didukung oleh Serverless Application Center telah dibuat, dan izin pengelolaan pada repositori Git telah diberikan. Anda juga dapat menggunakan repositori Git yang dibuat dan diinisialisasi ketika membuat aplikasi di Serverless Application Center.
File .yaml telah dibuat di direktori root repositori Git. Dalam contoh ini, file cicd.yaml digunakan.
Konfigurasikan file .yaml
Anda dapat menambahkan deskripsi pipeline, template pipeline yang dirujuk, atau metode eksekusi pipeline dalam file .yaml. Contoh kode berikut menunjukkan sebuah contoh.
---
# Kirim pipeline untuk dieksekusi.
kind: Pipeline
# Nama pipeline harus unik secara global. Kami merekomendasikan Anda menggunakan ID commit dan timestamp untuk membentuk nama.
name: "p-<% .git.shortCommitId %>-<% .currentTimestampMs %>"
# Konfigurasikan deskripsi pipeline.
description: 'demo pipeline'
spec:
context:
data:
## Konfigurasikan notifikasi DingTalk global. Konfigurasi ini akan menimpa pengaturan notifikasi di template.
#dingdingNotification:
# # Nonaktifkan notifikasi DingTalk global. Anda dapat mengaktifkan notifikasi DingTalk di tugas-tugas berikutnya.
# enable: false
# # Lewati notifikasi ketika tugas berhasil dieksekusi.
# skipOnSuccess: false
# # Konfigurasikan pengaturan webhook untuk notifikasi DingTalk.
# webhook: https://oapi.dingtalk.com/robot/send?access_token=xxx
# # Kunci tanda tangan untuk notifikasi DingTalk.
# secret: xxx
# # Isi notifikasi DingTalk. Jangan tentukan teks tetap kecuali Anda ingin mengirim hanya konten tetap.
# message:
# at:
# isAtAll: false
# atUserIds: ["admin"]
# atMobiles: ["188xxxx8888"]
# msgtype: text
# # Sintaks template dapat digunakan dalam teks. Template dapat memperoleh status eksekusi saat ini dan pengecualian.
# text: |
# tugas selesai.
# TaskName: {{ .currentTask.name }}
# Success: {{ .success }}
# Status: {{ .currentTask.status.phase }}
# Gunakan Serverless Devs untuk menerapkan pipeline. Tentukan lokasi file s.yaml. Kontennya akan diisi otomatis ketika pipeline dipicu.
# deployFile: s.yaml
# Tentukan nama aplikasi yang ingin Anda buat di Serverless Application Center. Nama tersebut akan disediakan secara otomatis ketika pipeline dipicu.
appName: <% .appName %>
# Lokasi file s.yaml di repositori. File s.yaml ini adalah yang disimpan di jalur root.
deployFile: s.yaml
# Deskripsi template pipeline yang digunakan untuk eksekusi. Serverless Application Center mendukung deskripsi template bawaan dalam pipeline.
templateSpec:
tasks:
- name: pre-check
context:
data:
displayName: "Pemeriksaan awal"
enable: true
steps:
- plugin: "@serverless-cd/checkout"
- plugin: "@serverless-cd/s-setup"
- run: s plan -t "${{ ctx.data.deployFile }}"
taskTemplate: serverless-runner-task
runAfters: []
- name: pre-check-approval
context:
data:
displayName: "Tinjauan manual"
enable: true
taskTemplate: need-approval
runAfters:
- name: pre-check
- name: build-and-deploy
context:
data:
displayName: "Pembuatan dan penerapan"
enable: true
steps:
- plugin: "@serverless-cd/checkout"
- plugin: "@serverless-cd/s-setup"
- run: s deploy -t "${{ ctx.data.deployFile }}" --use-local --assume-yes --skip-push
taskTemplate: serverless-runner-task
runAfters:
- name: pre-check-approval
---
Dalam contoh sebelumnya, ketika suatu peristiwa Git yang memenuhi kondisi tertentu terjadi, sebuah pipeline bernama dalam format p-<% .git.shortCommitId %>-<% .currentTimestampMs %> dihasilkan, dan tiga tugas berikut dijalankan secara berurutan: pemeriksaan awal, tinjauan manual, pembuatan dan penerapan tugas. Di setiap tugas, plugin pipeline dan perintah shell digunakan untuk mendeskripsikan langkah-langkah eksekusi spesifik.
Variabel yang telah ditentukan sebelumnya dalam file .yaml
Tabel berikut mencantumkan variabel yang telah ditentukan sebelumnya yang disediakan oleh Serverless Application Center. Ketika pipeline dipicu, placeholder di file .yaml diganti dengan nilai-nilai variabel yang sesuai. Kemudian, objek pipeline dan tugas yang dijelaskan dalam file dikomit.
Variabel | Deskripsi | Deskripsi |
<% .appName %> | Nama aplikasi. | headless-ffmpeg-wcha |
<% .accountId %> | ID akun Alibaba Cloud. | 143199913651**** |
<% .releaseVersion %> | Versi penerapan pipeline. | 1676913428**** |
<% .envName %> | Lingkungan tempat pipeline berada. | staging |
<% .git.branch %> | Cabang tempat pipeline berada. | test |
<% .git.commitId %> | ID commit dari HEAD commit dalam operasi Git ini. | 3b6b823cea88c356b10442580da5a02cde4**** |
<% .git.shortCommitId %> | Enam digit pertama dari ID commit HEAD dalam operasi Git. | 3b6b823 |
<% .git.commitMessage %> | Pesan dari HEAD commit dalam operasi Git. | update .s file |
<% .git.tag %> | Nama tag dalam operasi Git. Ini hanya berlaku jika tag tersebut ada. | dev |
<% .git.author %> | Penulis operasi Git. | developer |
<% .git.action %> | Nama aksi dari operasi Git. | push |
<% .currentTimestampMs %> | Waktu mulai kueri. Satuan: milidetik. | 1676971965781 |
<% .currentTimestampS %> | Waktu eksekusi penerapan. Satuan: detik. | 1676971891 |
<% .randomString6 %> | String acak 6 digit. | abcdef |