0Pricing
DevOps Bootcamp · บทเรียน

การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน

ควบคุมเวลาที่ขั้นตอนและงานจะทำงานด้วยเงื่อนไข if คีย์เวิร์ด needs นิพจน์ และฟังก์ชันตรวจสอบสถานะในเวิร์กโฟลว์ของ GitHub Actions

การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดเงื่อนไขจึงสำคัญ

ไม่ใช่ทุกขั้นตอนที่ควรทำงานทุกครั้ง คุณอาจต้องการให้ขั้นตอนปรับใช้ทำงานเฉพาะบนสาขา main หรือให้ขั้นตอนแจ้งเตือนทำงานเฉพาะเมื่อมีบางอย่างล้มเหลว

ระบบการทำงานของ GitHub ช่วยให้คุณเพิ่มเงื่อนไขให้กับขั้นตอนหรืองานใด ๆ เพื่อควบคุมว่าจะให้ทำงานหรือไม่

คีย์เงื่อนไข

เพิ่มคีย์ if: ให้กับขั้นตอน ขั้นตอนนั้นจะทำงานก็ต่อเมื่อนิพจน์ประเมินค่าได้เป็น จริง

นิพจน์ภายใน if ไม่จำเป็นต้องมีตัวครอบ ${{ }} แต่จะใช้ตัวครอบดังกล่าวก็ได้

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

ออบเจ็กต์บริบท

เงื่อนไขอ่านค่าจาก ออบเจ็กต์บริบท ที่อธิบายการทำงาน:

  • github — เหตุการณ์ รีเฟอเรนซ์ ผู้กระทำ และค่าแฮช
  • env — ตัวแปรสภาพแวดล้อม
  • job และ steps — สถานะของงานก่อนหน้า
  • runner — OS และสถาปัตยกรรม

ตัวอย่างเช่น github.event_name จะบอกว่าการส่งหรือคำขอดึงเป็นตัวกระตุ้นการทำงานหรือไม่

ฟังก์ชันตรวจสอบสถานะ

โดยค่าเริ่มต้น ขั้นตอนจะถูกข้ามหากขั้นตอนก่อนหน้าล้มเหลว หากต้องการเปลี่ยนพฤติกรรมนี้ ให้ใช้ฟังก์ชันสถานะ:

  • success() — เป็นจริงหากไม่มีขั้นตอนก่อนหน้าใดล้มเหลว (ค่าเริ่มต้น)
  • failure() — เป็นจริงหากมีขั้นตอนก่อนหน้าใดล้มเหลว
  • always() — ทำงานไม่ว่าจะเกิดอะไรขึ้น
  • cancelled() — เป็นจริงหากการทำงานถูกยกเลิก
  - name: Notify on failure
    if: failure()
    run: echo 'Build failed, sending alert'

เรียกใช้การล้างข้อมูลเสมอ

รูปแบบที่ใช้กันทั่วไปคือการมีขั้นตอนล้างข้อมูลที่ต้องทำงานแม้ว่าขั้นตอนก่อนหน้าจะล้มเหลว ให้ใช้ if: always()

วิธีนี้รับประกันว่าทรัพยากรชั่วคราว คอนเทนเนอร์ หรือรายงานการทดสอบจะได้รับการจัดการไม่ว่าผลลัพธ์จะเป็นอย่างไร

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

การพึ่งพางานด้วย needs

คีย์เวิร์ด needs ทำให้งานหนึ่งรอให้งานอื่นเสร็จสิ้น หากไม่มีคีย์นี้ งานจะทำงานแบบขนานกัน

งานที่ระบุไว้ใน needs ต้องเสร็จสิ้นสำเร็จก่อนที่งานที่พึ่งพางานนั้นจะเริ่มทำงาน

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

การพึ่งพาหลายงาน

งานหนึ่งสามารถพึ่งพาหลายงานได้โดยส่งรายการให้กับ needs งานนั้นจะรอให้งานทั้งหมดเสร็จสิ้น

วิธีนี้ใช้สร้างรูปแบบการรวมผลลัพธ์ ซึ่งงานสุดท้ายจะทำงานก็ต่อเมื่องานแบบขนานทั้งหมดเสร็จสิ้นสำเร็จ

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

งานแบบมีเงื่อนไข

คีย์ if ใช้กับงานได้เช่นเดียวกับขั้นตอน ไม่ได้จำกัดเฉพาะขั้นตอนเท่านั้น เงื่อนไขระดับงานจะตัดสินใจว่างานทั้งหมดจะทำงานหรือไม่

ในตัวอย่างนี้ งานปรับใช้จะทำงานเฉพาะเมื่อมีการส่งไปยัง main แต่ยังคงพึ่งพาการทดสอบ

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

การใช้ผลลัพธ์ของงาน

งานสามารถส่งข้อมูลต่อไปยังงานถัดไปผ่าน outputs งานที่พึ่งพาจะอ่านข้อมูลเหล่านี้ผ่านบริบท needs

วิธีนี้ทำให้เงื่อนไขขึ้นอยู่กับค่าที่คำนวณไว้ก่อนหน้าได้ เช่น เวอร์ชันมีการเปลี่ยนแปลงหรือไม่

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

การรวมเงื่อนไข

คุณสามารถรวม นิพจน์ด้วย && (และ) || (หรือ) และ ! (ไม่)

ตัวอย่างนี้จะทำงานเฉพาะเมื่อเป็นการส่งไปยัง main ที่สำเร็จและไม่ได้มาจากคลังที่แยกออกมา

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

if always พร้อม needs

โปรดระวัง: งานที่มี needs จะถูกข้ามหากการพึ่งพางานใดงานหนึ่งล้มเหลว หากต้องการให้งานรายงานสุดท้ายทำงานไม่ว่าผลลัพธ์จะเป็นอย่างไร ให้ใช้ needs ร่วมกับ if: always()

ภายในงานนี้ คุณสามารถตรวจสอบ needs.<job>.result เพื่อกำหนดว่าจะรายงานอะไร

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

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับการทำงานแบบมีเงื่อนไข

ทบทวน

คุณได้เรียนรู้การควบคุมลำดับการทำงานของเวิร์กโฟลว์ด้วย เงื่อนไขและการพึ่งพา

  • if ใช้กำหนดเงื่อนไขให้งานและขั้นตอนผ่านนิพจน์
  • ฟังก์ชันสถานะอย่าง failure() และ always() ใช้เปลี่ยนพฤติกรรมการข้ามเมื่อเกิดความล้มเหลว
  • needs ใช้สร้างลำดับการทำงานและรูปแบบการรวมผลลัพธ์
  • outputs ของงานส่งค่าต่อให้กับเงื่อนไขในภายหลัง

องค์ประกอบพื้นฐานเหล่านี้ช่วยให้คุณสร้างไปป์ไลน์ที่แม่นยำและมีประสิทธิภาพ

คำถามที่พบบ่อย

บทเรียน “การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน”

ควบคุมเวลาที่ขั้นตอนและงานจะทำงานด้วยเงื่อนไข if คีย์เวิร์ด needs นิพจน์ และฟังก์ชันตรวจสอบสถานะในเวิร์กโฟลว์ของ GitHub Actions คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างแบบเมทริกซ์สำหรับหลายสภาพแวดล้อม
  2. การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว
  3. เวิร์กโฟลว์และแอ็กชันที่นำกลับมาใช้ซ้ำได้
  4. การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน
← กลับไปที่ DevOps Bootcamp