UNIXMENS Telegram 20208
در نگاه اول اینطور به نظر میاد که چون زبان‌های مفسری (مثل Python, PHP, Ruby, JavaScript/Node.js) نیازی به کامپایل شدن ندارند، پس در CI/CD pipeline هم مرحله‌ی build لازم نیست. اما در واقعیت اینطور نیست و دلیل‌های مهمی وجود داره که چرا حتی برای زبان‌های مفسری هم یک stage به نام build داریم:


۱. تعریف گسترده‌ی Build در CI

در CI، منظور از Build فقط کامپایل کد منبع به باینری نیست.

در واقع Build یعنی: آماده‌سازی artifact قابل استفاده (قابل اجرا یا قابل دیپلوی) از کد منبع.

برای زبان‌های مفسری، این می‌تونه شامل کارهای زیر باشه:

نصب و freeze کردن وابستگی‌ها (pip install -r requirements.txt در Python یا npm install در Node.js)

بسته‌بندی کد به صورت آرشیو یا کانتینر (zip, tar.gz, docker image)

اجرای ابزارهای code generation یا transpiler (مثل TypeScript → JavaScript یا Sass → CSS)

ا minify و optimize کردن کدهای front-end

آماده‌سازی migrationها یا فایل‌های config برای استقرار

۲. تولید Artifact پایدار

ا CI/CD به دنبال اینه که یک خروجی قابل تکرار بسازه.

در زبان‌های مفسری، artifact می‌تونه یک Docker image، یک بسته‌ی Python (.whl یا .tar.gz)، یا یک بسته‌ی npm باشد.

این artifact تضمین می‌کنه که همون نسخه‌ی تست‌شده، به محیط stage و production منتقل بشه.

۳. جداسازی Concerns

مرحله build جدا میشه تا مطمئن بشیم:

وابستگی‌ها درست نصب شدن.

نسخه‌ی کد پایدار و بدون خطا آماده شده.

تست‌ها بعداً روی artifact اجرا بشن (نه روی سورس خام).

تیم‌ها یک مرز واضح بین "آماده‌سازی" و "تست/استقرار" داشته باشن.

۴. مثال‌ها

Python:

stages:
- build
- test
- deploy

build:
stage: build
script:
- pip install -r requirements.txt
- pytest --collect-only # بررسی اینکه همه چیز قابل بارگذاری است
- python setup.py sdist bdist_wheel # تولید پکیج
artifacts:
paths:
- dist/

Node.js:

build:
stage: build
script:
- npm install
- npm run build # مثلا build کردن React/Next.js
artifacts:
paths:
- dist/
در واقع حتی اگر زبان مفسری باشه و کامپایل نشه، مرحله build به معنی آماده‌سازی محیط، وابستگی‌ها، artifact و بسته‌ی قابل استقرار هست.



#devops



https:// www.tgoop.com/unixmens
👏2



tgoop.com/unixmens/20208
Create:
Last Update:

در نگاه اول اینطور به نظر میاد که چون زبان‌های مفسری (مثل Python, PHP, Ruby, JavaScript/Node.js) نیازی به کامپایل شدن ندارند، پس در CI/CD pipeline هم مرحله‌ی build لازم نیست. اما در واقعیت اینطور نیست و دلیل‌های مهمی وجود داره که چرا حتی برای زبان‌های مفسری هم یک stage به نام build داریم:


۱. تعریف گسترده‌ی Build در CI

در CI، منظور از Build فقط کامپایل کد منبع به باینری نیست.

در واقع Build یعنی: آماده‌سازی artifact قابل استفاده (قابل اجرا یا قابل دیپلوی) از کد منبع.

برای زبان‌های مفسری، این می‌تونه شامل کارهای زیر باشه:

نصب و freeze کردن وابستگی‌ها (pip install -r requirements.txt در Python یا npm install در Node.js)

بسته‌بندی کد به صورت آرشیو یا کانتینر (zip, tar.gz, docker image)

اجرای ابزارهای code generation یا transpiler (مثل TypeScript → JavaScript یا Sass → CSS)

ا minify و optimize کردن کدهای front-end

آماده‌سازی migrationها یا فایل‌های config برای استقرار

۲. تولید Artifact پایدار

ا CI/CD به دنبال اینه که یک خروجی قابل تکرار بسازه.

در زبان‌های مفسری، artifact می‌تونه یک Docker image، یک بسته‌ی Python (.whl یا .tar.gz)، یا یک بسته‌ی npm باشد.

این artifact تضمین می‌کنه که همون نسخه‌ی تست‌شده، به محیط stage و production منتقل بشه.

۳. جداسازی Concerns

مرحله build جدا میشه تا مطمئن بشیم:

وابستگی‌ها درست نصب شدن.

نسخه‌ی کد پایدار و بدون خطا آماده شده.

تست‌ها بعداً روی artifact اجرا بشن (نه روی سورس خام).

تیم‌ها یک مرز واضح بین "آماده‌سازی" و "تست/استقرار" داشته باشن.

۴. مثال‌ها

Python:

stages:
- build
- test
- deploy

build:
stage: build
script:
- pip install -r requirements.txt
- pytest --collect-only # بررسی اینکه همه چیز قابل بارگذاری است
- python setup.py sdist bdist_wheel # تولید پکیج
artifacts:
paths:
- dist/

Node.js:

build:
stage: build
script:
- npm install
- npm run build # مثلا build کردن React/Next.js
artifacts:
paths:
- dist/
در واقع حتی اگر زبان مفسری باشه و کامپایل نشه، مرحله build به معنی آماده‌سازی محیط، وابستگی‌ها، artifact و بسته‌ی قابل استقرار هست.



#devops



https:// www.tgoop.com/unixmens

BY Academy and Foundation unixmens | Your skills, Your future




Share with your friend now:
tgoop.com/unixmens/20208

View MORE
Open in Telegram


Telegram News

Date: |

As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. Write your hashtags in the language of your target audience. Invite up to 200 users from your contacts to join your channel Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. It’s easy to create a Telegram channel via desktop app or mobile app (for Android and iOS):
from us


Telegram Academy and Foundation unixmens | Your skills, Your future
FROM American