การเผยแพร่เครื่องมือ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน Cobra
- แฟล็กและแฟล็กถาวร
- คำสั่งย่อยและกลุ่มคำสั่ง
- การเผยแพร่เครื่องมือ CLI