Traffine I/O

Bahasa Indonesia

2023-03-04

CircleCI Workflows

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

  1. Daftar untuk akun CircleCI atau masuk jika Anda sudah memiliki satu.
  2. Hubungkan sistem kontrol versi Anda (GitHub atau Bitbucket) ke CircleCI.
  3. 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.

.circleci/config.yaml
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

  1. Dorong perubahan Anda ke repositori Anda.
  2. 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:

.circleci/config.yaml
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, dan test_c (dijalankan secara paralel)
  • deploy

Anda dapat mendefinisikan alur kerja ini sebagai berikut:

.circleci/config.yaml
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:

.circleci/config.yaml
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:

.circleci/config.yaml
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:

.circleci/config.yaml
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

https://circleci.com/docs/workflows/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!