0Pricing
Go Academy · บทเรียน

การเผยแพร่เครื่องมือ CLI

การคอมไพล์ข้ามแพลตฟอร์ม goreleaser และ tap ของ homebrew

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

go install สำหรับการแจกจ่ายภายในเครื่อง

go install github.com/user/tool@latest คอมไพล์และติดตั้งไบนารีลงใน $GOPATH/bin ผู้ใช้จำเป็นต้องติดตั้ง Go ไว้

การคอมไพล์ข้ามแพลตฟอร์ม

Go สามารถคอมไพล์ข้ามแพลตฟอร์มได้ในตัว กำหนด GOOS และ GOARCH เพื่อเลือกระบบปฏิบัติการเป้าหมายที่แตกต่างกัน:

GOOS=linux  GOARCH=amd64 go build -o myapp-linux-amd64
GOOS=darwin GOARCH=arm64 go build -o myapp-darwin-arm64
GOOS=windows GOARCH=amd64 go build -o myapp-windows-amd64.exe

แฟล็กการสร้างสำหรับรุ่นเผยแพร่

ตัดข้อมูลการแก้ไขข้อบกพร่องออก และปิดใช้ CGO เพื่อให้ได้ไบนารีแบบสแตติกที่มีขนาดเล็กลง:

CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp

การฝังข้อมูลเวอร์ชัน

แทรกข้อมูลขณะสร้างด้วย ldflags:

var version = "dev"
var commit  = "none"
// Build: go build -ldflags="-X main.version=1.2.3 -X main.commit=abc1234"

GoReleaser

GoReleaser ทำให้การคอมไพล์ข้ามแพลตฟอร์ม การจัดแพ็กเกจ (tar.gz, .zip) การสร้างผลรวมตรวจสอบ และการอัปโหลดรุ่นเผยแพร่ไปยัง GitHub เป็นไปโดยอัตโนมัติ กำหนดค่าใน .goreleaser.yaml

# .goreleaser.yaml
builds:
  - env: [CGO_ENABLED=0]
    goos: [linux, darwin, windows]
    goarch: [amd64, arm64]

คลังสูตร Homebrew

เผยแพร่สูตร Homebrew เพื่อให้ผู้ใช้ macOS/Linux ติดตั้งด้วย brew install ได้ GoReleaser สามารถสร้างสูตรให้โดยอัตโนมัติ

GitHub Actions สำหรับ CI/CD

ใช้ GitHub Action เพื่อสร้างและเผยแพร่ทุกครั้งที่มีการพุชแท็ก GoReleaser มี GitHub Action อย่างเป็นทางการ

- name: Run GoReleaser
  uses: goreleaser/goreleaser-action@v5
  with: { version: latest, args: release --clean }
  env: { GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" }

การแจกจ่ายด้วย Docker

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

FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o myapp

FROM scratch
COPY --from=build /app/myapp /myapp
ENTRYPOINT ["/myapp"]

go:embed สำหรับทรัพยากร

ฝังไฟล์แบบคงที่ (templates, config schemas) ลงในไบนารีด้วย //go:embed เพื่อให้ไบนารีมีทุกสิ่งที่จำเป็นในตัวเองอย่างสมบูรณ์

//go:embed templates/*
var templates embed.FS

โมดูลที่มีเวอร์ชัน

เผยแพร่โมดูล CLI ตามรูปแบบการกำหนดเวอร์ชันของโมดูล Go สำหรับ v2 ขึ้นไป เส้นทางนำเข้าต้องมี /v2 และเส้นทางโมดูลใน go.mod ต้องตรงกัน

ความเข้ากันได้ย้อนหลัง

ปฏิบัติตาม semver รุ่นย่อยอาจเพิ่มแฟล็กได้ แต่ต้องไม่ลบหรือเปลี่ยนชื่อแฟล็กที่มีอยู่ การเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้ต้องเพิ่มหมายเลขรุ่นหลัก

ตรวจสอบอย่างรวดเร็ว

จะสร้างไบนารี Go แบบสแตติกสำหรับ Linux บนเครื่อง macOS ได้อย่างไร

สรุป: การแจกจ่ายเครื่องมือ CLI

ประเด็นสำคัญ:

  • คอมไพล์ข้ามแพลตฟอร์มด้วย GOOS/GOARCH และใช้ CGO_ENABLED=0 สำหรับไบนารีแบบสแตติก
  • ใช้ GoReleaser สำหรับกระบวนการเผยแพร่โดยอัตโนมัติ
  • แทรกเวอร์ชันด้วย -ldflags "-X main.version=..."
  • ใช้ go:embed เพื่อสร้างไบนารีที่มีทุกสิ่งในตัวเองและมีทรัพยากรฝังอยู่

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

บทเรียน “การเผยแพร่เครื่องมือ CLI” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การเผยแพร่เครื่องมือ CLI”

การคอมไพล์ข้ามแพลตฟอร์ม goreleaser และ tap ของ homebrew คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “การเผยแพร่เครื่องมือ CLI” ใช้เวลานานแค่ไหน

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

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

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

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

  1. พื้นฐาน Cobra
  2. แฟล็กและแฟล็กถาวร
  3. คำสั่งย่อยและกลุ่มคำสั่ง
  4. การเผยแพร่เครื่องมือ CLI
← กลับไปที่ Go Academy