การดําเนินการ GitHub ทําให้งานการพัฒนาเป็นไปโดยอัตโนมัติได้อย่างไร

เสร็จสมบูรณ์เมื่อ

ที่นี่ เราแนะนําการดําเนินการและเวิร์กโฟลว์ของ GitHub คุณเรียนรู้ชนิดของการดําเนินการที่คุณสามารถใช้และตําแหน่งที่จะค้นหาได้ นอกจากนี้ คุณยังดูตัวอย่างของการดําเนินการประเภทเหล่านี้และความเหมาะสมของการดําเนินการในเวิร์กโฟลว์

GitHub ลดเวลาจากความคิดในการปรับใช้

GitHub ได้รับการออกแบบมาเพื่อช่วยให้ทีมของนักพัฒนาและวิศวกร DevOps สร้างและปรับใช้แอปพลิเคชันได้อย่างรวดเร็ว มีคุณลักษณะมากมายใน GitHub ที่เปิดใช้งานประสิทธิภาพเหล่านี้ แต่โดยทั่วไปแล้วจะอยู่ในหนึ่งในสองประเภท:

  • การสื่อสาร : พิจารณาวิธีการทั้งหมดที่ GitHub ทําให้ง่ายสําหรับทีมนักพัฒนาในการสื่อสารเกี่ยวกับโครงการพัฒนาซอฟต์แวร์: การตรวจสอบรหัสในคําขอดึงข้อมูลปัญหา GitHub กระดานโครงการ Wiki การแจ้งเตือน และอื่น ๆ
  • Automation: การดําเนินการ GitHub ช่วยให้ทีมของคุณสามารถทํางานเวิร์กโฟลว์โดยอัตโนมัติได้ทุกขั้นตอนในกระบวนการพัฒนาซอฟต์แวร์ ตั้งแต่การรวมไปจนถึงการส่งมอบไปยังการปรับใช้ นอกจากนี้ยังช่วยให้คุณสามารถเพิ่มป้ายชื่อโดยอัตโนมัติเพื่อดึงคําขอและตรวจสอบปัญหาเก่าและคําขอดึงข้อมูล

เมื่อรวมกัน คุณลักษณะเหล่านี้อนุญาตให้ทีมพัฒนาหลายพันคนลดระยะเวลาที่ใช้จากแนวคิดเริ่มต้นไปจนถึงการปรับใช้ได้อย่างมีประสิทธิภาพ

ใช้การทํางานอัตโนมัติของเวิร์กโฟลว์เพื่อลดเวลาการพัฒนา

ในโมดูลนี้ เรามุ่งเน้นไปที่ระบบอัตโนมัติ ลองใช้เวลาสักครู่เพื่อทําความเข้าใจว่าทีมสามารถใช้ระบบอัตโนมัติได้อย่างไร เพื่อลดระยะเวลาที่ใช้ในการดําเนินการเวิร์กโฟลว์การพัฒนาและการปรับใช้ทั่วไปให้เสร็จสมบูรณ์

พิจารณางานทั้งหมดที่ต้องเกิดขึ้น หลังจาก เขียนรหัสแล้ว แต่ก่อนที่คุณจะสามารถใช้รหัสตามวัตถุประสงค์ได้ ขึ้นอยู่กับเป้าหมายขององค์กรของคุณ คุณน่าจะต้องดําเนินงานต่อไปนี้อย่างน้อยหนึ่งงาน:

  • ตรวจสอบให้แน่ใจว่ารหัสผ่านการทดสอบหน่วยทั้งหมด
  • ดําเนินการตรวจสอบคุณภาพและการปฏิบัติตามรหัสเพื่อให้แน่ใจว่ารหัสต้นทางเป็นไปตามมาตรฐานขององค์กร
  • ตรวจสอบโค้ดและการขึ้นต่อกันของโค้ดสําหรับปัญหาด้านความปลอดภัยที่ทราบแล้ว
  • สร้างโค้ดโดยการรวมโค้ดต้นทางใหม่จากผู้สนับสนุนหลายราย (อาจ)
  • ตรวจสอบให้แน่ใจว่าซอฟต์แวร์ผ่านการทดสอบการรวม
  • ระบุเวอร์ชันของรุ่นใหม่
  • ส่งมอบไบนารีใหม่ไปยังตําแหน่งระบบไฟล์ที่เหมาะสม
  • ปรับใช้ไบนารีใหม่ไปยังหนึ่งหรือหลายเซิร์ฟเวอร์
  • ตรวจสอบว่างานเหล่านี้ไม่มีการส่งผ่านหรือไม่ และรายงานปัญหาไปยังบุคคลหรือทีมที่เหมาะสมเพื่อการแก้ปัญหา

ความท้าทายคือการทํางานเหล่านี้อย่างเชื่อถือได้สม่ําเสมอและในลักษณะที่ยั่งยืน กระบวนการนี้เป็นงานที่เหมาะสําหรับการทํางานอัตโนมัติของเวิร์กโฟลว์ ถ้าคุณพึ่งพา GitHub อยู่แล้ว คุณอาจต้องการตั้งค่าการทํางานอัตโนมัติของเวิร์กโฟลว์โดยใช้การดําเนินการ GitHub

การดําเนินการ GitHub คืออะไร

การดําเนินการ GitHub เป็นสคริปต์แบบแพคเกจเพื่อทํางานอัตโนมัติในเวิร์กโฟลว์การพัฒนาซอฟต์แวร์ใน GitHub คุณสามารถกําหนดค่าการดําเนินการ GitHub เพื่อทริกเกอร์เวิร์กโฟลว์ที่ซับซ้อนที่ตรงกับความต้องการขององค์กรของคุณ ทริกเกอร์สามารถเกิดขึ้นได้ในแต่ละครั้งที่นักพัฒนาตรวจสอบซอร์สโค้ดใหม่ในสาขาที่ระบุ ช่วงเวลาที่กําหนดเวลา หรือด้วยตนเอง ผลลัพธ์ที่ได้คือเวิร์กโฟลว์อัตโนมัติที่เชื่อถือได้และยั่งยืนซึ่งนําไปสู่การลดลงของเวลาการพัฒนาอย่างมีนัยสําคัญ

คุณสามารถค้นหาการดําเนินการ GitHub ได้จากที่ใด

การดําเนินการ GitHub คือสคริปต์ที่ยึดตามรูปแบบข้อมูล yml ที่เก็บแต่ละแห่งมี การดําเนินการ แท็บที่ให้วิธีง่าย ๆ และรวดเร็วในการเริ่มต้นการตั้งค่าสคริปต์แรกของคุณ ถ้าคุณเห็นเวิร์กโฟลว์ที่คุณคิดว่าเป็นจุดเริ่มต้นที่ยอดเยี่ยม เพียงเลือกปุ่ม กําหนดค่า เพื่อเพิ่มสคริปต์ และเริ่มแก้ไข yml ต้นทาง

สกรีนช็อตของแท็บ *การดําเนินการ* ในการดําเนินการ GitHub ที่แสดงเวิร์กโฟลว์อย่างง่ายและปุ่มเพื่อตั้งค่าเวิร์กโฟลว์นี้

อย่างไรก็ตาม นอกเหนือจากการดําเนินการ GitHub เหล่านั้นที่แสดงบนแท็บ การดําเนินการ คุณสามารถ:

  • ค้นหา การดําเนินการ GitHub ใน GitHub Marketplace GitHub Marketplace ช่วยให้คุณสามารถค้นหาและซื้อเครื่องมือที่ขยายเวิร์กโฟลว์ของคุณ
  • ค้นหาโครงการโอเพนซอร์ส ตัวอย่างเช่น การดําเนินการ GitHub องค์กรมีที่เก็บโอเพนซอร์สยอดนิยมมากมายที่มีการดําเนินการ GitHub ที่คุณสามารถใช้ได้
  • เขียนการดําเนินการ GitHub ของคุณเองตั้งแต่เริ่มต้น คุณสามารถสร้างให้เป็นโอเพนซอร์สหรือแม้แต่เผยแพร่ไปยัง GitHub Marketplace

การใช้การดําเนินการ GitHub แบบโอเพนซอร์ส

การดําเนินการ GitHub จํานวนมากเป็นโอเพนซอร์สและพร้อมใช้งานสําหรับทุกคนที่ต้องการใช้ อย่างไรก็ตามเช่นเดียวกับซอฟต์แวร์โอเพนซอร์สคุณต้องตรวจสอบอย่างรอบคอบก่อนที่จะใช้ในโครงการของคุณ คล้ายกับมาตรฐานชุมชนที่แนะนําด้วยซอฟต์แวร์โอเพนซอร์ส เช่น README หลักจรรยาบรรณ ไฟล์ร่วมสร้างและเทมเพลตปัญหา คุณสามารถทําตามคําแนะนําเหล่านี้เมื่อใช้การดําเนินการ GitHub:

  • ตรวจสอบไฟล์ action.yml ของการดําเนินการสําหรับอินพุต เอาต์พุต และเพื่อให้แน่ใจว่าโค้ดทํางานตามที่จะระบุว่าเป็นเช่นนั้น
  • ตรวจสอบว่าการดําเนินการอยู่ใน GitHub Marketplace หรือไม่ การตรวจสอบนี้คุ้มค่าแม้ว่าการดําเนินการไม่จําเป็นต้องอยู่ใน GitHub Marketplace ให้ถูกต้องก็ตาม
  • ตรวจสอบว่ามีการตรวจสอบการดําเนินการใน GitHub Marketplace หรือไม่ การตรวจสอบความถูกต้องหมายความว่า GitHub อนุมัติการใช้การดําเนินการนี้ อย่างไรก็ตาม คุณยังคงควรตรวจทานก่อนใช้งาน
  • รวมเวอร์ชันของการดําเนินการที่คุณกําลังใช้โดยระบุ Git ref, SHA หรือแท็ก

ชนิดของการดําเนินการ GitHub

การดําเนินการ GitHub มีสามประเภท: การดําเนินการคอนเทนเนอร์ การดําเนินการ JavaScript และการดําเนินการแบบรวม

ด้วย การดําเนินการคอนเทนเนอร์สภาพแวดล้อมเป็นส่วนหนึ่งของโค้ดของการดําเนินการ การดําเนินการเหล่านี้สามารถเรียกใช้ได้ในสภาพแวดล้อม Linux ที่โฮสต์ GitHub เท่านั้น การดําเนินการคอนเทนเนอร์รองรับหลายภาษา

การดําเนินการ JavaScript ไม่มีสภาพแวดล้อมในโค้ด คุณต้องระบุสภาพแวดล้อมเพื่อดําเนินการกระทําเหล่านี้ คุณสามารถเรียกใช้การดําเนินการเหล่านี้ใน VM (เครื่องเสมือน) ในระบบคลาวด์หรือภายในองค์กร การดําเนินการ JavaScript สนับสนุนสภาพแวดล้อม Linux, macOS และ Windows

การดําเนินการแบบรวม ช่วยให้คุณสามารถรวมหลายขั้นตอนเวิร์กโฟลว์ภายในการดําเนินการเดียวได้ ตัวอย่างเช่น คุณสามารถใช้คุณลักษณะนี้เพื่อรวมคําสั่งการเรียกใช้หลายคําสั่งเข้าด้วยกันเป็นการดําเนินการ แล้วจึงมีเวิร์กโฟลว์ที่ดําเนินการคําสั่งที่รวมเข้าด้วยกันเป็นขั้นตอนเดียวโดยใช้การดําเนินการนั้น

กายวิภาคของการดําเนินการ GitHub

นี่คือตัวอย่างของการดําเนินการที่ทําการชําระเงิน git ของที่เก็บ การดําเนินการนี้ การดําเนินการ/checkout@v1เป็นส่วนหนึ่งของขั้นตอนในเวิร์กโฟลว์ ขั้นตอนนี้สร้างโค้ด Node.js ที่ถูกเช็คเอาท์ เราจะพูดคุยเกี่ยวกับเวิร์กโฟลว์ งาน และขั้นตอนในส่วนถัดไป

steps:
  - uses: actions/checkout@v1
  - name: npm install and build webpack
    run: |
      npm install
      npm run build

สมมติว่าคุณต้องการใช้การดําเนินการคอนเทนเนอร์เพื่อเรียกใช้โค้ดแบบคอนเทนเนอร์ การดําเนินการของคุณอาจมีลักษณะดังนี้:

name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"

inputs:
    MY_NAME:
      description: "Who to greet"
      required: true
      default: "World"

runs:
    uses: "docker"
    image: "Dockerfile"

branding:
    icon: "mic"
    color: "purple"

โปรดสังเกตส่วน inputs ที่นี่ คุณจะได้รับค่าของตัวแปรที่เรียกว่า MY_NAME ตัวแปรนี้ได้รับการตั้งค่าในเวิร์กโฟลว์ที่เรียกใช้การดําเนินการนี้

ในส่วน runs ให้สังเกตว่าคุณระบุ docker ในแอตทริบิวต์ uses เมื่อคุณตั้งค่านี้ คุณจําเป็นต้องระบุเส้นทางไปยังไฟล์รูปภาพ Docker ในกรณีนี้ Dockerfile เราไม่ได้ครอบคลุมรายละเอียดของ Docker ที่นี่ แต่ถ้าคุณต้องการข้อมูลเพิ่มเติม โปรดดูบทนําสู่โมดูลคอนเทนเนอร์ Docker

ส่วนสุดท้าย การสร้างแบรนด์ปรับแต่งการดําเนินการของคุณใน GitHub Marketplace หากคุณตัดสินใจที่จะเผยแพร่

คุณสามารถค้นหารายการทั้งหมดของเมตาดาต้าการดําเนินการที่ไวยากรณ์เมตาดาต้า สําหรับ การดําเนินการ GitHub

เวิร์กโฟลว์การดําเนินการ GitHub คืออะไร

เวิร์กโฟลว์การดําเนินการ GitHub เป็นกระบวนการที่คุณตั้งค่าในที่เก็บของคุณเพื่อทํางานวงจรชีวิตการพัฒนาซอฟต์แวร์โดยอัตโนมัติ รวมถึงการดําเนินการ GitHub ด้วยเวิร์กโฟลว์ คุณสามารถสร้าง ทดสอบ จัดแพคเกจ เผยแพร่ และปรับใช้โครงการใด ๆ บน GitHub ได้

เมื่อต้องการสร้างเวิร์กโฟลว์ คุณเพิ่มการดําเนินการลงในไฟล์.yml ในไดเรกทอรี .github/workflows ในที่เก็บ GitHub ของคุณ

ในแบบฝึกหัดที่กําลังมาถึง ไฟล์เวิร์กโฟลว์ของคุณ main.yml มีลักษณะดังตัวอย่างนี้:

name: A workflow for my Hello World file
on: push
jobs:
  build:
    name: Hello world action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: ./action-a
      with:
        MY_NAME: "Mona"

on:โปรดสังเกตแอตทริบิวต์ ค่าของเป็นทริกเกอร์ที่จะระบุเมื่อเวิร์กโฟลว์นี้ทํางาน ที่นี่ จะทริกเกอร์การทํางานเมื่อมีเหตุการณ์การพุชไปยังที่เก็บของคุณ คุณสามารถระบุเหตุการณ์เดียว เช่น on: pushอาร์เรย์ของเหตุการณ์ เช่น on: [push, pull_request]หรือแผนที่การกําหนดค่าเหตุการณ์ที่กําหนดเวลาเวิร์กโฟลว์หรือจํากัดการดําเนินการของเวิร์กโฟลว์ไปยังไฟล์ แท็ก หรือการเปลี่ยนแปลงสาขาที่เฉพาะเจาะจง แผนที่อาจมีลักษณะดังนี้:

on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  # Also trigger on page_build, as well as release created events
  page_build:
  release:
    types: # This configuration doesn't affect the page_build event above
      - created

เหตุการณ์ทริกเกอร์บนชนิดกิจกรรมทั้งหมดสําหรับเหตุการณ์เว้นแต่ว่าคุณระบุชนิดหรือชนิด สําหรับรายการเหตุการณ์และประเภทกิจกรรมที่ครอบคลุม โปรดดูที่: เหตุการณ์ที่ทริกเกอร์เวิร์กโฟลว์ ในเอกสาร GitHub

เวิร์กโฟลว์ต้องมี อย่างน้อยหนึ่ง งาน งานคือส่วนของเวิร์กโฟลว์ที่เชื่อมโยงกับตัวเรียกใช้ นักวิ่งสามารถโฮสต์ GitHub หรือโฮสต์ด้วยตนเอง และงานสามารถเรียกใช้บนเครื่องหรือในคอนเทนเนอร์ได้ คุณระบุโปรแกรมรันพร้อม runs-on: แอตทริบิวต์ ที่นี่ คุณกําลังบอกให้เวิร์กโฟลว์เรียกใช้งานนี้บน ubuntu-latest

แต่ละงานมีขั้นตอนในการทําให้เสร็จสมบูรณ์ ในตัวอย่างของเรา ขั้นตอนใช้การดําเนินการ การดําเนินการ/checkout@v1 เพื่อตรวจสอบที่เก็บข้อมูล สิ่งที่น่าสนใจคือค่า uses: ./action-a ซึ่งเป็นเส้นทางไปยังการดําเนินการคอนเทนเนอร์ที่คุณสร้างในไฟล์ action.yml

ส่วนสุดท้ายของไฟล์เวิร์กโฟลว์นี้จะตั้งค่าตัวแปร MY_NAME สําหรับเวิร์กโฟลว์นี้ เรียกคืนการดําเนินการคอนเทนเนอร์ใช้อินพุตที่เรียกว่า MY_NAME

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์เวิร์กโฟลว์ ให้ดู ไวยากรณ์เวิร์กโฟลว์สําหรับการดําเนินการ GitHub

การอ้างอิงการดําเนินการในเวิร์กโฟลว์

เมื่อสร้างเวิร์กโฟลว์ใน GitHub Actions คุณสามารถอ้างอิงการดําเนินการจากแหล่งต่างๆ ได้ การดําเนินการเหล่านี้สามารถใช้เพื่อทําให้งานในเวิร์กโฟลว์ของคุณเป็นแบบอัตโนมัติ ด้านล่างนี้คือแหล่งข้อมูลหลักที่เวิร์กโฟลว์สามารถอ้างอิงการดําเนินการได้:

  1. อิมเมจคอนเทนเนอร์ Docker ที่เผยแพร่บน Docker Hub
    เวิร์กโฟลว์สามารถอ้างอิงการดําเนินการที่เผยแพร่เป็นอิมเมจคอนเทนเนอร์ Docker บน Docker Hub การดําเนินการเหล่านี้ถูกคอนเทนเนอร์และรวมถึงการขึ้นต่อกันทั้งหมดที่จําเป็นในการดําเนินการ หากต้องการใช้การดําเนินการดังกล่าว ให้ระบุอิมเมจ Docker ใน uses แอตทริบิวต์ของขั้นตอนเวิร์กโฟลว์ของคุณ เช่น:

    steps:
      - name: Run a Docker action
        uses: docker://<docker-image-name>:<tag>
    
  2. ที่เก็บสาธารณะใด ๆ
    การดําเนินการที่โฮสต์ในที่เก็บสาธารณะสามารถอ้างอิงได้โดยตรงในเวิร์กโฟลว์ของคุณ ทุกคนสามารถเข้าถึงการดําเนินการเหล่านี้ได้ และสามารถใช้งานได้โดยการระบุชื่อและเวอร์ชันที่เก็บ (Git ref, SHA หรือแท็ก) ใน uses แอตทริบิวต์ เช่น:

    steps:
      - name: Use a public action
        uses: actions/checkout@v3
    

[! สําคัญ]

เพื่อความปลอดภัยที่ดีขึ้นให้ใช้ SHA แบบเต็มเมื่ออ้างอิงการกระทํา ไม่ใช่แค่แท็กเช่น @v3.
วิธีนี้ทําให้แน่ใจว่าเวิร์กโฟลว์ของคุณใช้โค้ดเดียวกันเสมอ แม้ว่าการดําเนินการจะได้รับการอัปเดตหรือเปลี่ยนแปลงในภายหลังก็ตาม
ตัวอย่าง: uses: actions/checkout@c2c1744e079e0dd11c8e0af4a96064ca4f6a2e9e

  1. ที่เก็บเดียวกันกับไฟล์เวิร์กโฟลว์ของคุณ
    คุณสามารถอ้างอิงการดําเนินการที่จัดเก็บไว้ในที่เก็บเดียวกันกับไฟล์เวิร์กโฟลว์ของคุณได้ คุณลักษณะนี้มีประโยชน์สําหรับการดําเนินการแบบกําหนดเองที่เฉพาะเจาะจงสําหรับโครงการของคุณ หากต้องการอ้างอิงการดําเนินการดังกล่าว ให้ใช้เส้นทางสัมพัทธ์ไปยังไดเรกทอรีของการดําเนินการ ตัวอย่าง:
    steps:
      - name: Use a local action
        uses: ./path-to-action
    

สําหรับรายละเอียดเพิ่มเติม โปรดดูคําแนะนําการเสริมความแข็งแกร่งด้านความปลอดภัยสําหรับ GitHub Actions

  1. ตลาดองค์กร
    หากองค์กรของคุณใช้ GitHub Enterprise คุณสามารถอ้างอิงการดําเนินการจากตลาดส่วนตัวขององค์กรของคุณได้ การดําเนินการเหล่านี้ได้รับการดูแลและจัดการโดยองค์กรของคุณ เพื่อให้มั่นใจว่าเป็นไปตามมาตรฐานภายใน ตัวอย่าง:
    steps:
      - name: Use an enterprise marketplace action
        uses: enterprise-org/action-name@v1
    

หมายเหตุ

  • การดําเนินการในที่เก็บส่วนตัวยังสามารถอ้างอิงได้ แต่ต้องมีการรับรองความถูกต้องและสิทธิ์ที่เหมาะสม
  • เมื่ออ้างอิงการดําเนินการ ให้ระบุเวอร์ชัน (Git ref, SHA หรือแท็ก) เสมอเพื่อให้แน่ใจว่ามีความสอดคล้องกันและหลีกเลี่ยงการเปลี่ยนแปลงที่ไม่คาดคิด

สําหรับข้อมูลเพิ่มเติม โปรดดู การอ้างอิงการดําเนินการในเวิร์กโฟลว์

โฮสต์ GitHub เทียบกับรองชนะเลิศที่โฮสต์ตนเอง

เราได้กล่าวถึงนักวิ่งโดยย่อว่าเกี่ยวข้องกับงาน โปรแกรมเรียกใช้เป็นเพียงเซิร์ฟเวอร์ที่ติดตั้งแอปพลิเคชันตัวเรียกใช้การดําเนินการ GitHub ในตัวอย่างเวิร์กโฟลว์ก่อนหน้านี้ มี runs-on: ubuntu-latest แอตทริบิวต์ภายในบล็อกงาน ซึ่งบอกเวิร์กโฟลว์ว่างานกําลังจะทํางานโดยใช้ตัวเรียกใช้ที่โฮสต์ GitHub ที่ทํางานอยู่ใน ubuntu-latest สภาพแวดล้อม

เมื่อถึงเวลาจะถึงนักวิ่งจะมีสองตัวเลือกให้เลือก: นักวิ่งที่โฮสต์ GitHub หรือนักวิ่งที่โฮสต์ตัวเอง ถ้าคุณใช้ตัวเรียกใช้ที่โฮสต์ GitHub แต่ละงานจะทํางานในอินสแตนซ์ใหม่ของสภาพแวดล้อมเสมือน ชนิดตัวเรียกใช้ที่โฮสต์ GitHub ที่คุณกําหนด runs-on: {operating system-version} จะระบุสภาพแวดล้อมนั้น ด้วยนักวิ่งที่โฮสต์ด้วยตนเองคุณต้องใช้ป้ายชื่อที่โฮสต์ด้วยตนเองระบบปฏิบัติการและสถาปัตยกรรมระบบ ตัวอย่างเช่น ตัวเรียกใช้งานที่โฮสต์ด้วยตนเองพร้อมระบบปฏิบัติการ Linux และสถาปัตยกรรม ARM32 จะมีลักษณะดังต่อไปนี้: runs-on: [self-hosted, linux, ARM32]

นักวิ่งแต่ละประเภทมีประโยชน์ แต่รองชนะเลิศที่โฮสต์ GitHub เสนอวิธีที่ง่ายและรวดเร็วกว่าในการเรียกใช้เวิร์กโฟลว์ของคุณ แม้ว่าจะมีตัวเลือกที่จํากัด การเรียกใช้ที่โฮสต์ด้วยตนเองเป็นวิธีที่สามารถกําหนดค่าได้สูงในการเรียกใช้เวิร์กโฟลว์ในสภาพแวดล้อมภายในเครื่องแบบกําหนดเองของคุณเอง คุณสามารถเรียกใช้รันแบบโฮสต์ด้วยตนเองภายในองค์กรหรือในระบบคลาวด์ได้ คุณยังสามารถใช้ตัวเรียกใช้ที่โฮสต์ด้วยตนเองเพื่อสร้างการกําหนดค่าฮาร์ดแวร์แบบกําหนดเองด้วยกําลังการประมวลผลหรือหน่วยความจําเพิ่มเติมได้ การกําหนดค่าชนิดนี้จะช่วยในการทํางานขนาดใหญ่ ขึ้น ติดตั้งซอฟต์แวร์ที่พร้อมใช้งานบนเครือข่ายภายในของคุณ และเลือกระบบปฏิบัติการที่โปรแกรมเรียกใช้ที่โฮสต์ GitHub ไม่มีให้

การดําเนินการ GitHub สามารถมีขีดจํากัดการใช้งานได้

การดําเนินการ GitHub มีขีดจํากัดการใช้งานบางอย่าง ขึ้นอยู่กับแผน GitHub ของคุณและว่าผู้เรียกใช้ของคุณเป็นผู้โฮสต์ GitHub หรือโฮสต์ด้วยตนเอง สําหรับข้อมูลเพิ่มเติมเกี่ยวกับขีดจํากัดการใช้งาน ให้ตรวจสอบ ขีดจํากัดการใช้งาน การเรียกเก็บเงิน และ การดูแลระบบในเอกสาร GitHub

GitHub ที่เป็นโฮสต์ของนักวิ่งที่มีขนาดใหญ่กว่า

GitHub เสนอตัวเรียกใช้งานที่มีขนาดใหญ่กว่าสําหรับเวิร์กโฟลว์ที่จําเป็นต้องใช้ทรัพยากรเพิ่มเติม การเรียกใช้เหล่านี้จะถูกโฮสต์บน GitHub และมี CPU หน่วยความจํา และเนื้อที่ดิสก์ที่เพิ่มขึ้นเมื่อเทียบกับโปรแกรมรันมาตรฐาน ซึ่งออกแบบมาเพื่อจัดการเวิร์กโฟลว์ที่ใช้ทรัพยากรมากได้อย่างมีประสิทธิภาพ จึงมั่นใจได้ว่ามีประสิทธิภาพสูงสุดสําหรับงานที่ต้องการ

ขนาดและป้ายชื่อของนักวิ่ง

โปรแกรมวิ่งที่ใหญ่กว่าสามารถใช้งานในการกําหนดค่าหลายแบบ โดยที่เก็บข้อมูล vCPUs, RAM และ SSD ที่ปรับปรุงประสิทธิภาพแล้วให้ตรงตามข้อกําหนดในเวิร์กโฟลว์ที่หลากหลาย การกําหนดค่าเหล่านี้เหมาะสําหรับสถานการณ์ต่าง ๆ เช่น:

  • การคอมไพล์โค๊ดเบสขนาดใหญ่ด้วยไฟล์ต้นฉบับที่ครอบคลุม
  • เรียกใช้ชุดการทดสอบที่ครอบคลุม รวมถึงการผสานรวมและการทดสอบแบบ end-to-end
  • การประมวลผลชุดข้อมูลขนาดใหญ่สําหรับการวิเคราะห์ข้อมูลหรืองานการเรียนรู้ของเครื่อง
  • สร้างแอปพลิเคชันที่มีการขึ้นต่อกันที่ซับซ้อนหรือผลลัพธ์ไบนารีขนาดใหญ่
  • การดําเนินการจําลองประสิทธิภาพสูงหรือการสร้างแบบจําลองการคํานวณ
  • การดําเนินการเข้ารหัสวิดีโอ การแสดงผล หรือเวิร์กโฟลว์การประมวลผลมัลติมีเดียอื่น ๆ

หากต้องการใช้โปรแกรมรันที่ใหญ่กว่า ให้ระบุป้ายชื่อตัวเรียกใช้ที่ต้องการในแอตทริบิวต์ของ runs-on ไฟล์เวิร์กโฟลว์ของคุณ ตัวอย่างเช่น หากต้องการใช้โปรแกรมรันเนอร์ที่มี 16 vCPUs และ RAM 64 GB คุณจะต้องตั้งค่าruns-on: ubuntu-latest-16core

jobs:
  build:
    runs-on: ubuntu-latest-16core
    steps:
      - uses: actions/checkout@v2
      - name: Build project
        run: make build

รันเนอร์ที่ใหญ่กว่าเหล่านี้จะรักษาความเข้ากันได้กับเวิร์กโฟลว์ที่มีอยู่ โดยรวมเครื่องมือที่ติดตั้งไว้ล่วงหน้าตัวเดียวกันเป็นรันเนอร์มาตรฐานubuntu-latest

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับขนาดรันเนอร์สําหรับนักวิ่งที่ใหญ่กว่า โปรดดู เอกสารประกอบของ GitHub

การจัดการรันเนอร์ขนาดใหญ่

GitHub มีเครื่องมือในการจัดการนักวิ่งขนาดใหญ่อย่างมีประสิทธิภาพ เพื่อให้มั่นใจถึงการใช้งานทรัพยากรและการจัดการค่าใช้จ่ายที่เหมาะสมที่สุด นี่คือประเด็นสําคัญบางส่วนของการจัดการรันเนอร์ที่ใหญ่กว่า:

การตรวจสอบการใช้งาน

คุณสามารถตรวจสอบการใช้งานของผู้เรียกใช้ที่มีขนาดใหญ่กว่าผ่านหน้าการใช้งานการดําเนินการ GitHub ในที่เก็บข้อมูลหรือการตั้งค่าองค์กรของคุณ หน้านี้ให้ข้อมูลเชิงลึกเกี่ยวกับจํานวนการเรียกใช้งาน ผลรวมรันไทม์ และต้นทุนที่เกี่ยวข้อง

การจัดการการเข้าถึง

ในการควบคุมการเข้าถึงโปรแกรมรันที่มีขนาดใหญ่ขึ้น คุณสามารถกําหนดค่าที่เก็บหรือนโยบายระดับองค์กรได้ การกําหนดค่านี้ช่วยให้มั่นใจว่าเฉพาะเวิร์กโฟลว์หรือทีมที่ได้รับอนุญาตเท่านั้นที่สามารถใช้การทํางานที่มีทรัพยากรสูงเหล่านี้ได้

การจัดการค่าใช้จ่าย

นักวิ่งขนาดใหญ่มีค่าใช้จ่ายเพิ่มเติมตามการใช้งาน หากต้องการจัดการค่าใช้จ่าย ให้พิจารณาคําแนะนําต่อไปนี้:

  • ใช้จํานวนการเรียกใช้ที่ใหญ่กว่าสําหรับเวิร์กโฟลว์ที่จําเป็นต้องใช้ทรัพยากรสูงเท่านั้น
  • ลดรันไทม์โดยการปรับเวิร์กโฟลว์ให้เหมาะสม
  • ตรวจสอบรายละเอียดการเรียกเก็บเงินเป็นประจําเพื่อติดตามค่าใช้จ่าย

การปรับมาตราส่วนเวิร์กโฟลว์

ถ้าเวิร์กโฟลว์ของคุณต้องการใช้นักวิ่งที่มีขนาดใหญ่กว่าบ่อย ให้พิจารณากลยุทธ์การปรับมาตราส่วน เช่น:

  • การใช้รันเนอร์ที่โฮสต์ด้วยตนเองสําหรับปริมาณงานที่สามารถคาดการณ์ได้
  • การแยกเวิร์กโฟลว์ออกเป็นงานขนาดเล็กเพื่อกระจายโหลดข้ามตัวเรียกใช้มาตรฐาน