ءContinuous Delivery به Azure با GitHub Actions ☁️
ءContinuous Integration نقطه شروع بسیار خوبی برای CI/CD است، اما ارزش واقعی زمانی مشخص میشود که فرآیند deployment را خودکار کنید 🤖
این سناریو را تصور کنید 👇
• شما تغییری در کد ایجاد میکنید ✏️
• ءcommit باعث trigger شدن pipeline deployment میشود 🔄
• چند دقیقه بعد، تغییرات شما در production در دسترس هستند 🌍
معمولاً موضوع کمی پیچیدهتر است، چون باید به پیکربندیها، migration دیتابیس و موارد دیگر هم فکر کنیم ⚙️🗄
اما سعی کنید تصویر کلی را ببینید 🧠
اگر برنامه خود را در cloud اجرا میکنید، مثلاً روی Azure ☁️، به احتمال زیاد یک GitHub Action آماده برای این کار وجود دارد که میتوانید از آن استفاده کنید.
در ادامه یک deployment pipeline آورده شده که من برای انتشار برنامهام روی Azure App Service استفاده میکنم 🚀
name: Publish 🚀
on:
push:
branches:
- main
env:
AZURE_WEBAPP_NAME: web-api
AZURE_WEBAPP_PACKAGE_PATH: './publish'
DOTNET_VERSION: '7.0.x'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET 📦
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Build and Publish 📂
run: |
dotnet restore WebApi
dotnet build WebApi -c Release --no-restore
dotnet publish WebApi -c Release --no-build
--output '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}'
- name: Deploy to Azure 🌌
uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}'
این workflow شباهت زیادی به workflow قبلی دارد، با این تفاوتها 🔍
اضافه شدن مرحله publish و پیکربندی مسیر خروجی 📤
استفاده از اکشن azure/webapps-deploy@v2 برای deploy روی Azure ☁️
اگر نیاز دارید مقادیر حساس (secret) را بهصورت امن در workflowها استفاده کنید 🔐، میتوانید از GitHub secrets استفاده کنید.
شما میتوانید secrets را در GitHub تعریف کنید و بدون اضافه کردن آنها به source control، در actionها از آنها استفاده کنید.
در workflow مربوط به deployment، من از secrets.AZURE_PUBLISH_PROFILE برای دسترسی به publish profile مربوط به App Service استفاده میکنم 🔑
جمعبندی 🧩
ءContinuous Integration و Continuous Delivery میتوانند فرآیند توسعه شما را متحول کنند ⚡️ و سرعت انتشار تغییرات را بهشدت افزایش دهند 🚀
سعی کنید محاسبه کنید چقدر زمان صرف deployment میکنید ⏱️
تقریباً مطمئنم از میزان زمانی که میتوانید با خودکارسازی ذخیره کنید شگفتزده خواهید شد 😮
نکته خوب اینجاست که معمولاً pipelineهای build و deployment را یکبار راهاندازی میکنید ✅ و سپس در تمام طول عمر پروژه از مزایای آنها استفاده میکنید ♻️
ممنون که خوندید 🙏
امیدوارم مفید بوده باشه ✨