یک اسکریپت Bash بنویسید که در محیط CI اجرا شود و ابتدا تست‌های پروژه را اجرا کند، سپس یک ایمیج Docker با تگِ کوتاهِ شناسه‌ی commit بسازد و تنها در صورتی که روی شاخه‌ی main قرار دارد آن را به یک Docker registry فشار دهد.

2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:40

0.0

برای حل این مسئله از ابزارهای ساده‌ای مثل git و docker و متغیرهای محیطیِ CI استفاده کنید؛ در ابتدای اسکریپت set -euo pipefail قرار دهید تا روی خطاها ایست کند، شناسه‌ی commit را با git rev-parse --short HEAD یا از متغیر CI_COMMIT_SHA بگیرید و شاخه را از CI_COMMIT_BRANCH یا git rev-parse --abbrev-ref HEAD استخراج کنید. ابتدا دستور اجرای تست‌ها (مثلاً npm test یا pytest) را اجرا کنید و در صورت موفقیت با docker build -t myrepo:TAG . ایمیج بسازید؛ اگر شاخه main بود با docker login (با استفاده از متغیرهای DOCKER_USERNAME و DOCKER_PASSWORD) و سپس docker push آن را آپلود کنید. نکات: مقادیر حساس را از متغیرهای محیطی CI بگیرید، اسکریپت را قابل اجرا کنید (chmod +x)، و قبل از push در محیط محلی با شبیه‌سازی متغیرها تست کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:40
دسته بندی ها: Bash Scripting Bash Scripting for beginner
nima در 221 روز قبل ساعت 12:24

اجرای تست‌ها قبل از ساخت ایمیج و استفاده از set -euo pipefail برای جلوگیری از ادامه کار در صورت خطای هر مرحله از رویکردهای رایج CI است. شناسه commit را می‌توان با git rev-parse --short HEAD یا CI_COMMIT_SHA گرفت و شاخه را از CI_COMMIT_BRANCH یا git rev-parse --abbrev-ref HEAD استخراج کرد تا اسکریپت در هر محیطی کار کند. اگر شاخه main است، با docker login و DOCKER_USERNAME/DOCKER_PASSWORD وارد registry شوید و سپس docker push را انجام دهید؛ در غیر این صورت فقط ایمیج ساخته می‌شود. برای تست محلی، مقادیر نمونه را شبیه‌سازی کنید و اسکریپت را با chmod +x اجرا کنید تا از عملکرد صحیح آن مطمئن شوید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری