هر توسعهدهنده نرمافزاری میتواند هر پروژه را با هر اندازه یا پیچیدگی، با ابزارهایی که به آسانی به کار میگیرند، آزمایش و بستهبندی کند.
مهندسان می توانند اصول ساخت را بدیهی بدانند. توسعه دهندگان نرم افزار بر روی فرآیند خلاقانه نوشتن کد تمرکز می کنند زیرا فرآیند مکانیکی ساخت و آزمایش حل شده است. هنگام سفارشیسازی سیستم ساخت برای پشتیبانی از زبانهای جدید یا نیازهای سازمانی منحصربهفرد، کاربران بر جنبههایی از توسعهپذیری تمرکز میکنند که منحصربهفرد مورد استفادهشان است، بدون نیاز به اختراع مجدد لولهکشی اولیه.
مهندسان به راحتی می توانند در هر پروژه ای مشارکت کنند. توسعه دهنده ای که می خواهد کار روی یک پروژه جدید را شروع کند، می تواند به سادگی پروژه را شبیه سازی کند و بیلد را اجرا کند. نیازی به پیکربندی محلی نیست - فقط کار می کند. با اجرای از راه دور بین پلتفرمی، آنها می توانند روی هر ماشینی در هر مکانی کار کنند و تغییرات خود را به طور کامل در برابر تمام پلتفرم های مورد نظر پروژه آزمایش کنند. مهندسان می توانند به سرعت بیلد را برای یک پروژه جدید پیکربندی کنند یا به صورت تدریجی یک بیلد موجود را انتقال دهند.
پروژه ها می توانند به هر پایگاه کد با هر اندازه، هر تیمی مقیاس شوند. تست سریع و افزایشی به تیم ها اجازه می دهد تا هر تغییری را قبل از انجام آن تایید کنند. این امر حتی با رشد مخازن، پروژهها در چندین مخزن و معرفی چندین زبان صادق است. زیرساخت توسعه دهندگان را مجبور نمی کند که پوشش تست را با سرعت ساخت عوض کنند.
ما معتقدیم بازل پتانسیل تحقق این چشم انداز را دارد.
Bazel از ابتدا ساخته شد تا ساختهایی را که قابل تکرار هستند (مجموعه معینی از ورودیها همیشه خروجیهای یکسانی تولید میکنند) و قابل حمل (بیلد را میتوان روی هر ماشینی بدون تأثیر بر خروجی اجرا کرد) ساخته شد.
این ویژگیها از افزایش ایمن (بازسازی فقط ورودیهای تغییر یافته خطر فساد را ایجاد نمیکند) و قابلیت توزیع (اقدامات ساخت مجزا هستند و میتوانند بارگذاری شوند) پشتیبانی میکنند. با به حداقل رساندن کار مورد نیاز برای انجام یک ساخت صحیح و موازی سازی آن کار در چندین هسته و سیستم های راه دور، Bazel می تواند هر ساختی را سریع انجام دهد.
لایه انتزاعی Bazel - دستورالعملهای خاص برای زبانها، پلتفرمها و زنجیرههای ابزار پیادهسازی شده در یک زبان توسعهپذیری ساده - به آن اجازه میدهد به راحتی در هر زمینهای اعمال شود.
شایستگی های اصلی بازل
- Bazel از ساختها و تستهای چند زبانه و چند پلتفرمی پشتیبانی میکند. شما می توانید یک فرمان را برای ساختن و آزمایش کل درخت منبع خود، بدون توجه به ترکیبی از زبان ها و پلتفرم ها، اجرا کنید.
- ساخت های Bazel سریع و صحیح هستند. هر ساخت و اجرای آزمایشی بر روی ماشین های توسعه دهندگان شما و در CI افزایشی است.
- Bazel یک زبان یکنواخت و قابل گسترش برای تعریف ساختها برای هر زبان یا پلتفرمی ارائه میکند.
- Bazel به ساختهای شما اجازه میدهد تا با اتصال به سرویسهای اجرای از راه دور و حافظه پنهان، مقیاس شوند.
- Bazel در تمام پلتفرم های توسعه اصلی (Linux، MacOS و Windows) کار می کند.
- قبول داریم که پذیرش بازل نیازمند تلاش است، اما پذیرش تدریجی امکان پذیر است. Bazel با ابزارهای استاندارد واقعی برای یک زبان/پلتفرم معین رابط کاربری دارد.
خدمت به جوامع زبانی
مهندسی نرمافزار در زمینه جوامع زبانی تکامل مییابد - معمولاً گروههای خودسازماندهی از مردم که از ابزارها و شیوههای مشترک استفاده میکنند.
برای استفاده برای اعضای یک جامعه زبانی، قوانین Bazel با کیفیت بالا باید در دسترس باشد که با جریان کار و قراردادهای آن جامعه یکپارچه شود.
Bazel متعهد است که قابل گسترش و باز باشد و از قوانین خوب برای هر زبانی پشتیبانی کند.
الزامات یک مجموعه قوانین خوب
- قوانین باید از ساخت و آزمایش کارآمد برای زبان، از جمله پوشش کد پشتیبانی کنند.
- قوانین باید با یک "مدیر بسته" پرکاربرد برای زبان (مانند Maven برای جاوا) ارتباط برقرار کنند و از مسیرهای مهاجرت افزایشی از سایر سیستم های ساخت پرکاربرد پشتیبانی کنند.
- قوانین باید با پیروی از اصول "ساندویچ بازل" توسعه پذیر و قابل اجرا باشند.
- قوانین باید برای اجرای از راه دور آماده باشند . در عمل، این به معنی قابل تنظیم با استفاده از مکانیزم زنجیره ابزار است .
- قوانین (و Bazel) باید با یک IDE پرکاربرد برای زبان، در صورت وجود، رابط داشته باشند.
- قوانین باید مستندات کامل و قابل استفاده، با مطالب مقدماتی برای کاربران جدید، اسناد جامع برای کاربران متخصص داشته باشند.
هر یک از این موارد ضروری هستند و تنها با هم توانایی های Bazel را برای اکوسیستم خاص خود ارائه می دهند.
آنها همچنین، به طور کلی، کافی هستند - زمانی که همه چیز برآورده شد، Bazel ارزش خود را به طور کامل به اعضای آن جامعه زبان ارائه می دهد.