0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · บทเรียน

การพัฒนาแอ็กชัน GitHub แบบกำหนดเอง

เรียนรู้การสร้างแอ็กชันแบบกำหนดเองที่นำกลับมาใช้ซ้ำได้ด้วย JavaScript หรือ Docker เพื่อขยายความสามารถของ GitHub Actions

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

ขยายความสามารถของ GitHub Actions

หากคุณต้องการงานเฉพาะในเวิร์กโฟลว์ที่ GitHub Actions ไม่มีให้โดยตรง หรือมีตรรกะที่ซับซ้อนซึ่งต้องการนำกลับมาใช้ซ้ำ จะทำอย่างไร

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

พลังของการปรับแต่ง

การดำเนินการแบบกำหนดเองมีประโยชน์หลายประการต่อกระบวนการ CI/CD ของคุณ:

  • นำกลับมาใช้ซ้ำได้: เขียนครั้งเดียว ใช้ได้ในหลายเวิร์กโฟลว์และคลังเก็บ
  • สร้างมาตรฐาน: ทำให้กระบวนการต่าง ๆ ในองค์กรมีความสม่ำเสมอ
  • การห่อหุ้ม: ซ่อนตรรกะที่ซับซ้อนไว้เบื้องหลังส่วนติดต่อที่เรียบง่าย
  • การผสานรวม: โต้ตอบกับเครื่องมือภายในหรือ API เฉพาะ

JavaScript หรือ Docker

GitHub Actions รองรับวิธีหลักสองแบบในการสร้างการดำเนินการแบบกำหนดเอง:

  • การดำเนินการ JavaScript: เขียนด้วย JavaScript (หรือ TypeScript) และทำงานโดยตรงบนเครื่องรันเนอร์ รวดเร็วและใช้งานง่ายสำหรับงานทั่วไป
  • การดำเนินการด้วยคอนเทนเนอร์ Docker: ห่อหุ้มสภาพแวดล้อมและโค้ดไว้ภายในอิมเมจ Docker เหมาะสำหรับการดำเนินการที่ต้องใช้ส่วนพึ่งพาหรือภาษาเฉพาะ

การกำหนดการดำเนินการของคุณ

การดำเนินการแบบกำหนดเองทุกแบบต้องมีไฟล์ action.yml อยู่ในไดเรกทอรีราก ไฟล์ YAML นี้เปรียบเสมือนรายการแสดงข้อมูลที่บอก GitHub Actions เกี่ยวกับการดำเนินการของคุณ:

  • name และ description: การดำเนินการของคุณทำอะไร
  • inputs: ข้อมูลที่การดำเนินการของคุณรับเข้ามา
  • outputs: ข้อมูลที่การดำเนินการของคุณสร้างขึ้น
  • runs: วิธีดำเนินการของคุณ (เช่น ไฟล์ JavaScript หรืออิมเมจ Docker)

ตัวอย่างการดำเนินการ JS อย่างง่าย

มาดูการดำเนินการ JavaScript พื้นฐานกัน คุณจะต้องมี action.yml และไฟล์ index.js โดย action.yml จะกำหนดข้อมูลเมตาและสภาพแวดล้อมการทำงานของการดำเนินการ

# action.yml
name: 'Hello World Action'
description: 'Greets a person using a custom message'
inputs:
  who-to-greet:
    description: 'Who to greet'
    required: true
    default: 'World'
outputs:
  greeting-message:
    description: 'The greeting message generated'
runs:
  using: 'node16'
  main: 'index.js'

การเขียน JavaScript

ไฟล์ index.js มีตรรกะการทำงานจริง เราใช้ชุดเครื่องมือ @actions/core เพื่อรับข้อมูลเข้าและกำหนดข้อมูลออก

ลองเรียกใช้ข้อมูลโค้ด JavaScript อย่างง่ายนี้เพื่อดูแนวคิดการทำงานของข้อมูลเข้าและข้อมูลออก แม้อยู่นอกเวิร์กโฟลว์เต็มรูปแบบ

// index.js (simplified for demonstration)
const core = require('@actions/core');

try {
  const name = core.getInput('who-to-greet');
  const message = `Hello, ${name}!`;
  console.log(message);
  core.setOutput('greeting-message', message);
} catch (error) {
  core.setFailed(error.message);
}

// A standalone runnable example to demonstrate core logic
function runSimpleGreeting(inputName) {
  const name = inputName || 'World';
  const message = `Hello from runnable JS, ${name}!`;
  return message;
}

console.log(runSimpleGreeting('CoddyKit'));
console.log(runSimpleGreeting());

พื้นฐานการดำเนินการ Docker

สำหรับสภาพแวดล้อมที่ซับซ้อนยิ่งขึ้น การดำเนินการด้วยคอนเทนเนอร์ Docker มีประสิทธิภาพมาก โดยมี Dockerfile ที่กำหนดอิมเมจคอนเทนเนอร์และรวมส่วนพึ่งพาที่จำเป็นทั้งหมดไว้

action.yml ของคุณจะอ้างอิงอิมเมจนี้เพื่อบอก GitHub Actions ให้สร้างและเรียกใช้

# action.yml for Docker action
name: 'Docker Hello World'
description: 'Greets a name from within a Docker container'
inputs:
  who-to-greet:
    description: 'Who to greet'
    required: true
    default: 'Docker'
outputs:
  greeting-message:
    description: 'The greeting message from Docker'
runs:
  using: 'docker'
  image: 'Dockerfile'

สภาพแวดล้อมของการดำเนินการ

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

# Dockerfile
FROM alpine:3.16

LABEL "com.github.actions.name"="Docker Hello World"
LABEL "com.github.actions.description"="Greets a name from within a Docker container"
LABEL "com.github.actions.icon"="globe"
LABEL "com.github.actions.color"="blue"

# Copy your script into the container
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

การเขียนสคริปต์สำหรับการดำเนินการ Docker

ภายในคอนเทนเนอร์ Docker สคริปต์จุดเริ่มต้นของคุณ (เช่น entrypoint.sh) จะรับข้อมูลเข้าเป็นตัวแปรสภาพแวดล้อม (มีคำนำหน้าเป็น INPUT_) และกำหนดข้อมูลออกโดยเขียนลงในไฟล์ที่ระบุโดยตัวแปรสภาพแวดล้อม $GITHUB_OUTPUT

#!/bin/sh -l

# entrypoint.sh

echo "Hello from Docker, $INPUT_WHO_TO_GREET!"
GREETING="Hello from Docker, $INPUT_WHO_TO_GREET!"
echo "greeting-message=$GREETING" >> "$GITHUB_OUTPUT"

แนวทางปฏิบัติที่ดีที่สุดสำหรับการดำเนินการ

เมื่อพัฒนาการดำเนินการแบบกำหนดเอง ควรพิจารณาเคล็ดลับต่อไปนี้เพื่อให้เครื่องมือมีความเสถียรและดูแลรักษาได้ง่าย:

  • การจัดการเวอร์ชัน: ใช้การกำหนดเวอร์ชันตามความหมาย (เช่น v1, v2) เพื่อความเสถียร
  • การทดสอบ: ทดสอบการดำเนินการของคุณอย่างเคร่งครัดทั้งในเครื่องและในเวิร์กโฟลว์
  • การจัดการข้อผิดพลาด: แสดงข้อความข้อผิดพลาดที่ชัดเจนและจัดการความล้มเหลวอย่างเหมาะสม
  • ความปลอดภัย: ตรวจกรองข้อมูลเข้าและหลีกเลี่ยงการเปิดเผยข้อมูลละเอียดอ่อน
  • เอกสารประกอบ: ให้คำแนะนำการใช้งานที่ชัดเจนใน README ของคุณ

ตรวจสอบประเภทการดำเนินการ

คุณต้องสร้างการดำเนินการ GitHub แบบกำหนดเองที่ต้องใช้ไลบรารี Python เฉพาะ ซึ่งไม่ได้ติดตั้งไว้ล่วงหน้าในเครื่องรันเนอร์ GitHub Actions มาตรฐาน โดยทั่วไปควรเลือกการดำเนินการประเภทใดสำหรับสถานการณ์นี้

สรุปการดำเนินการแบบกำหนดเอง

เราได้สำรวจวิธีขยาย GitHub Actions ด้วยการสร้างการดำเนินการแบบกำหนดเองของคุณเอง คุณได้เรียนรู้ประเภทหลักสองประเภท ได้แก่ JavaScript และการดำเนินการด้วยคอนเทนเนอร์ Docker รวมถึงบทบาทสำคัญของไฟล์ action.yml นอกจากนี้ยังครอบคลุมวิธีกำหนดข้อมูลเข้า ข้อมูลออก และตรรกะหลักของแต่ละประเภท ตลอดจนแนวทางปฏิบัติที่ดีที่สุดในการพัฒนา

การดำเนินการแบบกำหนดเองมีประโยชน์อย่างมากต่อการนำกลับมาใช้ซ้ำและการสร้างมาตรฐานในกระบวนการ CI/CD ของคุณ

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

บทเรียน “การพัฒนาแอ็กชัน GitHub แบบกำหนดเอง” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การพัฒนาแอ็กชัน GitHub แบบกำหนดเอง”

เรียนรู้การสร้างแอ็กชันแบบกำหนดเองที่นำกลับมาใช้ซ้ำได้ด้วย JavaScript หรือ Docker เพื่อขยายความสามารถของ GitHub Actions คุณปฏิบัติ CI/CD with GitHub Actions & DevOps Pipelines ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CI/CD with GitHub Actions & DevOps Pipelines หรือไม่

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

บทเรียน “การพัฒนาแอ็กชัน GitHub แบบกำหนดเอง” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน CI/CD with GitHub Actions & DevOps Pipelines นี้ได้ไหม

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

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

  1. การพัฒนาแอ็กชัน GitHub แบบกำหนดเอง
  2. ตัวรันที่โฮสต์เองสำหรับระบบภายในองค์กร
  3. การผสานรวมกับระบบองค์กร
  4. แอ็กชันแบบประกอบและการเผยแพร่ไปยัง Marketplace
← กลับไปที่ CI/CD with GitHub Actions & DevOps Pipelines