از Azure Cosmos DB به عنوان یک ظرف Docker در خطوط لوله CI/CD استفاده کنید

استفاده از ظروف Docker در خطوط لوله CI/CD ، به ویژه برای سیستم های دولتی مانند بانکهای اطلاعاتی ، مزایای زیادی وجود دارد. به عنوان مثال ، هنگامی که تست های ادغام را اجرا می کنید ، هر کار CI می تواند پایگاه داده را در یک ظرف جدا شده با حالت تمیز شروع کند و از درگیری بین آزمایشات جلوگیری می کند. این منجر به یک محیط آزمایش قابل اعتماد ، سازگار و مقرون به صرفه می شود. این رویکرد همچنین تأخیر را کاهش می دهد و عملکرد کلی خط لوله CI/CD را بهبود می بخشد زیرا پایگاه داده در دسترس محلی است.
شبیه ساز Azure Cosmos DB مبتنی بر لینوکس به عنوان یک ظرف Docker در دسترس است و می تواند بر روی سیستم عامل های مختلفی از جمله معماری ARM64 مانند Apple Silicon اجرا شود. این امکان را برای توسعه محلی و آزمایش برنامه ها بدون نیاز به اشتراک لاجورد یا هزینه های سرویس متحمل می کند. به راحتی می توانید آن را به عنوان یک ظرف داکر اجرا کنید و از آن برای توسعه و آزمایش محلی استفاده کنید:
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
Azure Cosmos DB با اقدامات GitHub
بیایید یک مثال را طی کنیم تا بهتر درک کنیم که چگونه می توان از Azure Cosmos DB Emulator با اقدامات GitHub استفاده کرد ، که یک پلت فرم ادغام مداوم و تحویل مداوم (CI/CD) است که به شما امکان می دهد با استفاده از گردش کار ، خط لوله ساخت ، آزمایش و استقرار خود را خودکار کنید. گردش کار یک فرآیند خودکار قابل تنظیم است که می تواند یک یا چند شغل را اجرا کند. این توسط یک پرونده YAML که به مخزن شما بررسی شده است تعریف شده و در صورت ایجاد یک رویداد در مخزن شما اجرا می شود ، یا می توان آنها را به صورت دستی یا در یک برنامه مشخص انجام داد.
مثال: گردش کار CI برای یک برنامه .NET
این گردش کار GitHub Actions ، Azure Cosmos DB Linux را به عنوان یک کانتینر سرویس Action GitHub به عنوان بخشی از یک کار پیکربندی می کند. Github از شروع ظرف Docker مراقبت می کند و پس از اتمام کار ، آن را از بین می برد – هیچ مداخله دستی لازم نیست (مانند اجرای دستور Docker Run).
name: .NET App CI
on:
push:
branches: [main]
paths:
- 'dotnet-app/**'
pull_request:
branches: [main]
paths:
- 'dotnet-app/**'
jobs:
build-and-test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm]
services:
cosmosdb:
image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
ports:
- 8081:8081
env:
PROTOCOL: https
env:
COSMOSDB_CONNECTION_STRING: ${{ secrets.COSMOSDB_CONNECTION_STRING }}
COSMOSDB_DATABASE_NAME: ${{ vars.COSMOSDB_DATABASE_NAME }}
COSMOSDB_CONTAINER_NAME: ${{ vars.COSMOSDB_CONTAINER_NAME }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '8.0.x'
- name: Export Cosmos DB Emulator Certificate
run: |
sudo apt update && sudo apt install -y openssl
openssl s_client -connect localhost:8081 cosmos_emulator.cert
sudo cp cosmos_emulator.cert /usr/local/share/ca-certificates/
sudo update-ca-certificates
- name: Install dependencies
run: cd dotnet-app && dotnet restore
- name: Build
run: cd dotnet-app && dotnet build --no-restore
- name: Run tests
run: cd dotnet-app && dotnet test --no-build --verbosity normal
این کار برای اجرای دونده اوبونتو پیکربندی شده است و از آن استفاده می کند mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
تصویر Docker به عنوان یک ظرف سرویس. رشته اتصال ، نام بانک اطلاعاتی و نام کانتینر به عنوان متغیرهای محیط تنظیم شده است. از آنجا که این کار به طور مستقیم روی یک دونده میزبان Actions GitHub انجام می شود ، مرحله Run Tests می تواند با استفاده از شبیه ساز به شبیه ساز دسترسی پیدا کند localhost:8081
بشر
مرحله گواهینامه Export Cosmos DB Emulator STEA مخصوص برنامه های کاربردی .NET (و همچنین جاوا) است زیرا در زمان نوشتن ، SDK های دات نت و جاوا پشتیبانی نمی کنند
HTTP
حالت در شبیه ساز. درPROTOCOL
متغیر محیط روی https درservices
بخش و این مرحله گواهینامه شبیه ساز را صادر می کند و آنها را به فروشگاه گواهینامه معتبر سیستم عامل اضافه می کند.
آن را امتحان کنید!
این مخزن GitHub نمونه هایی از نحوه پیکربندی شبیه ساز لینوکس را به عنوان بخشی از گردش کار CI اقدامات GitHub برای .NET ، Python ، Java و GO در هر دو ارائه می دهد x64
وت ARM64
معماری (برای دونده لینوکس با استفاده از اوبونتو نشان داده شده است).
مخزن را چنگال کنید
به مخزن GitHub بروید و روی کلیک کنید چنگال دکمه در گوشه بالا سمت راست صفحه مخزن برای ایجاد یک کپی از مخزن در زیر حساب GitHub خود.
در حساب GitHub خود ، مخزن را باز کنید و حتماً گردش کار را در تنظیمات مخزن فعال کنید.
رشته اتصال Emulator Cosmos DB را اضافه کنید (COSMOSDB_CONNECTION_STRING
) به عنوان مخزن مخزن برای مخزن. از مقدار زیر استفاده کنید:
AccountEndPoint = http: // localhost: 8081/؛ حساب کاربری = c2y6ydjf5/r+ob0n8a7cgv30vrdjiwehlm+4qdu5de2nq9nduvtqobd4b8mggypmbiznqymycymsecagqy67xiw/jw ==
نام پایگاه داده را اضافه کنید (COSMOSDB_DATABASE_NAME
) و نام کانتینر (COSMOSDB_CONTAINER_NAME
) به عنوان متغیرهای مخزن:
مخزن چنگال را به دستگاه محلی خود کلون کنید (حتما از نام کاربری GitHub خود استفاده کنید):
git clone https://github.com//cosmosdb-linux-emulator-github-actions.git
cd cosmosdb-linux-emulator-github-actions
گردش کار را تحریک کنید
برای ایجاد گردش کار ، تغییر کوچکی را در هر/همه کد (.NET ، JAVA ، PYTHON یا GO) ایجاد کنید ، تغییرات خود را اضافه کرده و مرتکب شوید. برای درک آسان تر ، از گردش کار جداگانه برای هر زبان استفاده می شود.
تغییرات خود را به مخزن چنگال خود در GitHub فشار دهید:
git add .
git commit -m "Your commit message"
git push origin main
پس از فشار دادن تغییرات ، اقدامات GitHub به طور خودکار گردش کار را اجرا می کند. برای دیدن وضعیت و نتایج گردش کار به برگه Actions در مخزن خود بروید. برای اطمینان از اجرای صحیح گردش کار ، هرگونه سیاهه یا خروجی را مرور کنید.
اقدامات GitHub اقدامات دونده
مخزن نمونه نشان داد ubuntu
دوندگان مبتنی بر معماری X64 و ARM64). این باید برای دوندگان مبتنی بر بازوی ویندوز نیز کار کند. اگر در حال فکر کردن دونده های ویندوز X64 هستید ، توجه داشته باشید که در زمان نوشتن ، ظروف سرویس Action GitHub در دوندگان غیر لینوکس پشتیبانی نمی شوند. اما می توانید با اضافه کردن مراحل نصب Docker ، و مدیریت چرخه عمر آن از جمله شروع و متوقف کردن ظرف ، در این زمینه کار کنید.
بسته بندی کردن
همانطور که قبلاً نیز اشاره کردم ، استفاده از ظرف Docker در خطوط لوله CI فواید زیادی وجود دارد. در این مورد از اقدامات GitHub به عنوان پلت فرم CI/CD استفاده شد ، اما این مفاهیم نیز در مورد راه حل های دیگر نیز اعمال می شود. آن را امتحان کنید و به ما اطلاع دهید که چه فکر می کنید!
یک بررسی بگذارید
در مورد تجربه Azure Cosmos DB برای ما بگویید! یک بررسی در Peerspot بگذارید و ما 50 دلار به شما هدیه خواهیم داد. از اینجا شروع کنید
درباره Azure Cosmos db
Azure Cosmos DB یک پایگاه داده کاملاً مدیریت شده و بدون سرور NOSQL و وکتور برای توسعه برنامه های مدرن ، از جمله برنامه های AI است. با سرعت و در دسترس بودن SLA و همچنین مقیاس پذیری پویا فوری ، برای برنامه های NOSQL و MONGODB در زمان واقعی ایده آل است که به عملکرد بالا نیاز دارند و محاسبات توزیع شده بیش از حجم گسترده داده های NOSQL و بردار را توزیع می کنند.
Azure Cosmos DB را به صورت رایگان در اینجا امتحان کنید. برای ماندن در حلقه در به روزرسانی های Azure Cosmos DB ، ما را دنبال کنید x، یوتیوب ، و LinkedIn.