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.shObjek Konteks
Kondisi dibaca dari objek konteks yang menjelaskan eksekusi:
github— peristiwa, ref, aktor, shaenv— variabel lingkunganjobdansteps— status pekerjaan sebelumnyarunner— 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 gagalalways()— dijalankan apa pun kondisinyacancelled()— 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: ./logsDependensi 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.shBeberapa 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.shMenggunakan 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_OUTPUTMenggabungkan 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.
ifmengatur langkah dan tugas berdasarkan ekspresi- Fungsi status seperti
failure()danalways()mengganti perilaku dilewati saat gagal needsmembuat pola pengurutan dan penggabunganoutputstugas 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
- Build Matriks untuk Berbagai Lingkungan
- Menyimpan Dependensi dalam Tembolok demi Kecepatan
- Alur Kerja dan Actions yang Dapat Digunakan Kembali
- Eksekusi Kondisional dan Dependensi Tugas