Apa itu Alur Kerja (Workflow)
Alur kerja (workflow) adalah cara untuk mengatur dan mengkoordinasikan beberapa pekerjaan dalam sebuah pipa garis (pipeline) CircleCI. Alur kerja menyediakan struktur yang fleksibel dan dapat dikonfigurasi untuk menentukan urutan dan ketergantungan pekerjaan, memungkinkan pengembang membuat pipa garis yang lebih canggih dengan eksekusi paralel, langkah-langkah bersyarat, dan pola fan-in/fan-out.
Komponen Utama
Ada tiga komponen utama dari alur kerja CircleCI:
- Pekerjaan (Jobs): Tugas independen yang melakukan operasi tertentu, seperti membangun, menguji, atau mendeploy kode.
- Alur Kerja (Workflow): Sekumpulan aturan yang menentukan urutan dan ketergantungan pekerjaan dalam pipa garis.
- Konfigurasi (Configuration): File YAML (
.circleci/config.yml
) yang berisi konfigurasi pipa garis, termasuk definisi pekerjaan dan alur kerja.
Membuat Alur Kerja Sederhana
Untuk memulai, mari buat alur kerja sederhana yang terdiri dari tiga pekerjaan: build, test, dan deploy.
Mengkonfigurasi Proyek CircleCI Anda
- Daftar untuk akun CircleCI atau masuk jika Anda sudah memiliki satu.
- Hubungkan sistem kontrol versi Anda (GitHub atau Bitbucket) ke CircleCI.
- Tambahkan proyek Anda ke CircleCI dengan memilihnya dari daftar repositori.
Mendefinisikan Alur Kerja Dasar
Di dalam repositori proyek Anda, buat direktori .circleci
dan file config.yml
di dalamnya. File ini akan berisi konfigurasi untuk pipa garis Anda, termasuk definisi pekerjaan dan alur kerja.
version: 2.1
jobs:
build:
# Job configuration for the "build" job
test:
# Job configuration for the "test" job
deploy:
# Job configuration for the "deploy" job
workflows:
version: 2
my_workflow:
jobs:
- build
- test:
requires:
- build
- deploy:
requires:
- test
Menjalankan dan Memantau Alur Kerja Anda
- Dorong perubahan Anda ke repositori Anda.
- CircleCI akan secara otomatis mendeteksi konfigurasi baru dan mulai menjalankan alur kerja Anda.
Untuk memantau kemajuan alur kerja Anda, arahkan ke Dasbor CircleCI dan pilih proyek Anda. Anda akan melihat gambaran eksekusi pipa garis Anda, termasuk status setiap pekerjaan.
Paralelisme dan Pola Fan-in/Fan-out
Alur kerja di CircleCI memungkinkan Anda untuk memanfaatkan paralelisme dan pola fan-in/fan-out untuk mengoptimalkan waktu eksekusi pipa garis CI/CD Anda.
Mempercepat Build Anda dengan Paralelisme
Paralelisme di CircleCI menggunakan beberapa instance pekerjaan secara bersamaan untuk memproses tugas lebih cepat. Anda dapat mengkonfigurasi level paralelisme untuk setiap pekerjaan dalam alur kerja Anda menggunakan kunci parallelism
.
Sebagai contoh, jika Anda memiliki pekerjaan yang menjalankan pengujian dan ingin membagi rangkaian pengujian menjadi empat tugas paralel, Anda dapat melakukannya dengan mengatur kunci parallelism
menjadi 4
:
jobs:
test:
parallelism: 4
# Job configuration for the "test" job
Memahami Fan-in dan Fan-out
Fan-out adalah pola di mana satu pekerjaan memicu beberapa pekerjaan downstream. Sebaliknya, fan-in adalah ketika beberapa pekerjaan konvergen ke satu pekerjaan downstream. Pola-pola ini memungkinkan Anda untuk mengoptimalkan pipa garis CI/CD Anda dengan menjalankan pekerjaan secara paralel ketika memungkinkan dan menggabungkan hasilnya ketika diperlukan.
Mengimplementasikan Paralelisme, Fan-in, dan Fan-out di dalam Alur Kerja
Untuk mengimplementasikan paralelisme, fan-in, dan fan-out di dalam alur kerja CircleCI Anda, Anda dapat menggunakan kunci requires
untuk menentukan ketergantungan pekerjaan. Dengan menentukan pekerjaan yang harus selesai sebelum pekerjaan tertentu dapat dijalankan, Anda dapat membuat alur kerja yang kompleks yang mengoptimalkan eksekusi pipa garis Anda.
Sebagai contoh, pertimbangkan alur kerja dengan pekerjaan berikut:
build
test_a
,test_b
, dantest_c
(dijalankan secara paralel)deploy
Anda dapat mendefinisikan alur kerja ini sebagai berikut:
workflows:
version: 2
my_workflow:
jobs:
- build
- test_a:
requires:
- build
- test_b:
requires:
- build
- test_c:
requires:
- build
- deploy:
requires:
- test_a
- test_b
- test_c
Alur Kerja Bersyarat dan Persetujuan
Alur kerja CircleCI mendukung eksekusi bersyarat dan persetujuan manual, memungkinkan Anda untuk memiliki lebih banyak kontrol atas pipa garis Anda.
Mendefinisikan Alur Kerja Bersyarat
Anda dapat membuat alur kerja bersyarat menggunakan kunci when
dan unless
bersama dengan kumpulan kondisi yang telah ditentukan atau logika kustom. Sebagai contoh, Anda dapat menjalankan pekerjaan tertentu hanya ketika cabang tertentu dipush:
workflows:
version: 2
my_workflow:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: /^release-.*/
Mengimplementasikan Langkah Persetujuan
Langkah persetujuan manual di CircleCI memungkinkan Anda untuk menghentikan alur kerja dan menunggu perset ujuan pengguna sebelum melanjutkan. Untuk menambahkan langkah persetujuan ke alur kerja Anda, gunakan kunci type: approval
:
workflows:
version: 2
my_workflow:
jobs:
- build
- test
- hold_for_approval:
type: approval
requires:
- test
- deploy:
requires:
- hold_for_approval
Alur Kerja Bersyarat Lanjutan
Anda juga dapat membuat alur kerja bersyarat yang lebih kompleks menggunakan parameter pipa garis dan logika kustom CircleCI. Parameter pipa garis adalah pasangan kunci-nilai yang dapat Anda lewatkan ke dalam file konfigurasi Anda dan digunakan untuk menentukan logika bersyarat untuk alur kerja Anda. Untuk membuat parameter pipa garis, tambahkan kunci parameters
di bawah kunci version
di dalam file config.yml
Anda:
version: 2.1
parameters:
deploy_production:
type: boolean
default: false
jobs:
# Job definitions
workflows:
version: 2
my_workflow:
jobs:
- build
- test
- deploy_staging
- hold_for_approval:
type: approval
requires:
- deploy_staging
- deploy_production:
requires:
- hold_for_approval
when: << pipeline.parameters.deploy_production >>
Dalam contoh ini, pekerjaan deploy_production
hanya akan dijalankan jika parameter pipa garis deploy_production
diatur ke true
. Anda dapat melewati parameter ini saat memicu pipa garis melalui API CircleCI.
Referensi