0Pricing
DevOps Bootcamp · 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.

Eksekusi Kondisional dan Dependensi Tugas adalah pelajaran DevOps Bootcamp 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 DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp 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.

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 DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp?

Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp 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 DevOps Bootcamp ini?

Ya. Setiap pelajaran DevOps Bootcamp 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 DevOps Bootcamp