CI/CD with GitHub Actions & DevOps Pipelines · Pelajaran

Eksekusi Kondisional dan Dependensi Tugas

Kendalikan kapan langkah dan tugas dijalankan menggunakan kondisi if, kata kunci needs, ekspresi, dan fungsi pemeriksaan status dalam alur kerja GitHub Actions.

Pelajaran 4 dari 413 langkah

Eksekusi Kondisional dan Dependensi Tugas adalah pelajaran CI/CD with GitHub Actions & DevOps Pipelines gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar CI/CD with GitHub Actions & DevOps Pipelines, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus CI/CD with GitHub Actions & DevOps Pipelines mencakup 4 pelajaran total.

Mengapa Kondisi Penting

Tidak setiap langkah harus berjalan setiap kali. Anda mungkin ingin langkah penerapan berjalan hanya pada cabang main, atau langkah pemberitahuan berjalan hanya ketika terjadi kegagalan.

GitHub Actions memungkinkan Anda melampirkan kondisi bersyarat ke langkah atau tugas apa pun untuk mengatur apakah langkah atau tugas tersebut dijalankan.

Kunci Kondisi

Tambahkan kunci if: ke suatu langkah. Langkah tersebut hanya berjalan ketika ekspresinya menghasilkan nilai benar.

Ekspresi di dalam if tidak memerlukan pembungkus ${{ }}, meskipun pembungkus tersebut tetap diperbolehkan.

steps:
  - name: Deploy
    if: github.ref == 'refs/heads/main'
    run: ./deploy.sh

Objek Konteks

Kondisi dibaca dari objek konteks yang menjelaskan eksekusi:

  • github — peristiwa, ref, aktor, sha
  • env — variabel lingkungan
  • job dan steps — status pekerjaan sebelumnya
  • runner — OS dan arsitektur

Misalnya, github.event_name memberi tahu Anda apakah pengiriman perubahan atau pull_request memicu eksekusi tersebut.

Fungsi Pemeriksaan Status

Secara bawaan, suatu langkah dilewati jika langkah sebelumnya gagal. Untuk mengganti perilaku ini, gunakan fungsi status:

  • success() — bernilai benar jika tidak ada langkah sebelumnya yang gagal (bawaan)
  • failure() — bernilai benar jika ada langkah sebelumnya yang gagal
  • always() — dijalankan apa pun kondisinya
  • cancelled() — bernilai benar jika eksekusi dibatalkan
  - name: Notify on failure
    if: failure()
    run: echo 'Build failed, sending alert'

Selalu Jalankan Pembersihan

Pola yang umum adalah langkah pembersihan yang harus dijalankan meskipun langkah sebelumnya gagal. Gunakan if: always().

Dengan demikian, sumber daya sementara, kontainer, atau laporan pengujian akan ditangani apa pun hasilnya.

  - name: Upload logs
    if: always()
    uses: actions/upload-artifact@v4
    with:
      name: logs
      path: ./logs

Dependensi Tugas dengan needs

Kata kunci needs membuat satu tugas menunggu tugas lainnya. Tanpanya, tugas berjalan secara paralel.

Tugas yang tercantum dalam needs harus selesai dengan sukses sebelum tugas yang bergantung padanya dimulai.

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - run: npm test
  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Beberapa Dependensi

Satu tugas dapat bergantung pada beberapa tugas dengan memberikan daftar ke needs. Tugas tersebut menunggu semuanya selesai.

Dengan cara ini, Anda dapat membangun pola penggabungan, yaitu tugas akhir hanya berjalan setelah semua tugas paralel berhasil.

  release:
    needs: [lint, test, build]
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all checks passed'

Tugas Bersyarat

Kunci if juga berlaku untuk tugas, bukan hanya langkah. Kondisi pada tingkat tugas menentukan apakah seluruh tugas dijalankan.

Di sini, tugas penerapan hanya berjalan untuk pengiriman perubahan ke main, tetapi tetap bergantung pada pengujian.

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Menggunakan Keluaran Tugas

Tugas dapat meneruskan data ke tugas berikutnya melalui outputs. Tugas yang bergantung padanya membaca data tersebut melalui konteks needs.

Dengan demikian, kondisi dapat bergantung pada nilai yang dihitung sebelumnya, misalnya apakah suatu versi berubah.

  check:
    runs-on: ubuntu-latest
    outputs:
      changed: ${{ steps.diff.outputs.changed }}
    steps:
      - id: diff
        run: echo 'changed=true' >> $GITHUB_OUTPUT

Menggabungkan Kondisi

Anda dapat menggabungkan ekspresi dengan && (dan), || (atau), serta ! (bukan).

Contoh ini hanya berjalan pada pengiriman perubahan yang berhasil ke main dan bukan berasal dari repositori bercabang.

    if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'

if Always dengan needs

Hati-hati: tugas dengan needs akan dilewati jika dependensinya gagal. Untuk selalu menjalankan tugas pelaporan akhir, gabungkan needs dengan if: always().

Di dalamnya, Anda dapat memeriksa needs.<job>.result untuk menentukan hal yang akan dilaporkan.

  report:
    needs: [test, build]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo ${{ needs.test.result }}

Pemeriksaan Cepat

Uji pemahaman Anda tentang eksekusi bersyarat.

Ringkasan

Anda telah mempelajari cara mengendalikan alur kerja dengan kondisi dan dependensi.

  • if mengatur langkah dan tugas berdasarkan ekspresi
  • Fungsi status seperti failure() dan always() mengganti perilaku dilewati saat gagal
  • needs membuat pola pengurutan dan penggabungan
  • outputs tugas memasukkan nilai ke dalam kondisi berikutnya

Primitif ini memungkinkan Anda membangun alur kerja yang tepat dan efisien.

Gratis untuk memulai

Belajar CI/CD with GitHub Actions & DevOps Pipelines dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
12
Pelajaran
48

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Eksekusi Kondisional dan Dependensi Tugas” gratis?

Ya — teks lengkap “Eksekusi Kondisional dan Dependensi Tugas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus CI/CD with GitHub Actions & DevOps Pipelines, upgrade ke CoddyKit PRO. Kursus CI/CD with GitHub Actions & DevOps Pipelines mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Eksekusi Kondisional dan Dependensi Tugas”?

Kendalikan kapan langkah dan tugas dijalankan menggunakan kondisi if, kata kunci needs, ekspresi, dan fungsi pemeriksaan status dalam alur kerja GitHub Actions. Kamu berlatih CI/CD with GitHub Actions & DevOps Pipelines dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai CI/CD with GitHub Actions & DevOps Pipelines?

Tidak diperlukan pengalaman sebelumnya. CI/CD with GitHub Actions & DevOps Pipelines di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Eksekusi Kondisional dan Dependensi Tugas” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran CI/CD with GitHub Actions & DevOps Pipelines ini?

Ya. Setiap pelajaran CI/CD with GitHub Actions & DevOps Pipelines menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Build Matriks untuk Berbagai Lingkungan
  2. Menyimpan Dependensi dalam Tembolok demi Kecepatan
  3. Alur Kerja dan Actions yang Dapat Digunakan Kembali
  4. Eksekusi Kondisional dan Dependensi Tugas
← Kembali ke CI/CD with GitHub Actions & DevOps Pipelines