كيفية إضافة رقم الإصدار وhash الـ commit في تطبيق Go أثناء البناء؟
مرحباً بالجميع! أنا أكتب تطبيق ويب صغير بلغة Go وأريد أن يعرض إصداره عند التشغيل. حالياً أقوم بتغيير الثابت يدوياً في الكود:
```go
const Version = "1.0.3"
```
لكن هذا غير مريح للغاية. مع كل commit أضطر للدخول إلى الكود وتغيير السطر وعمل commit منفصل. كما أريد رؤية ليس فقط رقم الإصدار، بل أيضاً hash الـ commit وتاريخ البناء — لأعرف بالضبط أي بناء يعمل على الخادم.
حاولت قراءة الملفات، لكن هذا لا يعمل إذا تم نقل الملف الثنائي إلى جهاز آخر. سمعت عن ldflags، لكن لا أستطيع فهم كيفية استخدامها بشكل صحيح.
أخبروني، كيف يتم التعامل مع إدارة الإصدارات في مشاريع Go؟ كيف يمكن تمرير الإصدار وhash الـ commit وتاريخ البناء إلى الملف الثنائي أثناء مرحلة التجميع، بحيث يعمل بدون حلول مؤقتة؟ وعند تشغيل `./myapp version` أو `./myapp --version` يتم عرض المعلومات الكاملة.
سأكون ممتناً لمثال على Makefile أو script بناء يقوم بذلك تلقائياً في CI/CD.
<<>>