0Pricing
Go Academy · درس

توزيع أدوات CLI

الترجمة البرمجية المتقاطعة وgoreleaser ومستودعات homebrew

توزيع أدوات CLI درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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

استخدم GitHub Action للبناء والإصدار عند كل دفع لوسم. وتوفر GoReleaser إجراء GitHub رسميًا.

- 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 للأصول

ضمّن الملفات الثابتة (القوالب ومخططات الإعداد) في الملف التنفيذي باستخدام //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» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «توزيع أدوات CLI»؟

الترجمة البرمجية المتقاطعة وgoreleaser ومستودعات homebrew تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «توزيع أدوات CLI»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Cobra
  2. الخيارات والخيارات المستمرة
  3. الأوامر الفرعية ومجموعات الأوامر
  4. توزيع أدوات CLI
← العودة إلى Go Academy