Go Academy · पाठ

CLI टूल वितरित करना

क्रॉस-कंपाइलेशन, goreleaser और homebrew taps

पाठ 4, कुल 4 में से13 चरण

CLI टूल वितरित करना, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्थानीय वितरण के लिए go install

go install github.com/user/tool@latest binary को compile करके $GOPATH/bin में install करता है। Users के system में Go install होना चाहिए।

क्रॉस-कंपाइलेशन

Go मूल रूप से cross-compile कर सकता है। अलग-अलग operating systems को target करने के लिए GOOS और GOARCH set करें:

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

release के लिए build flags

छोटी और static binaries के लिए debugging जानकारी हटाएँ और CGO अक्षम करें:

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

version जानकारी embed करना

ldflags के साथ build के समय की जानकारी डालें:

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

GoReleaser

GoReleaser cross-compilation, packaging (tar.gz, .zip), checksum generation और releases को GitHub पर upload करने की प्रक्रिया स्वचालित करता है। इसे .goreleaser.yaml में configure करें।

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

Homebrew tap

Homebrew formula publish करें, ताकि macOS/Linux users brew install से install कर सकें। GoReleaser formula अपने-आप बना सकता है।

GitHub Actions CI/CD

हर tag push पर build और release करने के लिए 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 वितरण

ऐसे users के लिए CLI को Docker image के रूप में package करें, जो containers पसंद करते हैं। अंतिम image को छोटा रखने के लिए multi-stage build का उपयोग करें।

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"]

assets के लिए go:embed

static files (templates, config schemas) को //go:embed के साथ binary में embed करें, ताकि binary पूरी तरह self-contained हो।

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

version वाले modules

Go module versioning का पालन करते हुए अपना CLI module publish करें। v2+ के लिए import path में /v2 शामिल होना चाहिए और go.mod module path से मेल खाना चाहिए।

पिछली versions के साथ संगतता

semver का पालन करें। छोटे releases में flags जोड़े जा सकते हैं, लेकिन मौजूदा flags को हटाया या उनका नाम बदला नहीं जाना चाहिए। Breaking changes के लिए major version बढ़ाना आवश्यक है।

त्वरित जाँच

macOS machine पर Linux के लिए static Go binary कैसे बनाएँगे?

पुनरावलोकन: CLI tools का वितरण

मुख्य बातें:

  • GOOS/GOARCH के साथ cross-compile करें; static binaries के लिए CGO_ENABLED=0
  • स्वचालित release pipeline के लिए GoReleaser
  • -ldflags "-X main.version=..." से version डालें
  • embedded assets वाली self-contained binaries के लिए go:embed
शुरुआत निःशुल्क

एआई शिक्षक के साथ Go सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “CLI टूल वितरित करना” पाठ निःशुल्क है?

हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “CLI टूल वितरित करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“CLI टूल वितरित करना” में मैं क्या सीखूँगा?

क्रॉस-कंपाइलेशन, goreleaser और homebrew taps आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“CLI टूल वितरित करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Cobra की मूल बातें
  2. फ़्लैग और स्थायी फ़्लैग
  3. उप-कमांड और कमांड समूह
  4. CLI टूल वितरित करना
← Go Academy पर वापस जाएँ