YAML๋ก ํ๊ฒฝ๋ณ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ์์ฑํ๊ธฐ
๐ฃ YAML๋ก ํ๊ฒฝ๋ณ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ์์ฑํ๊ธฐ
๐งญ ์ ํ๊ฒฝ๋ณ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ด ํ์ํ ๊น?
๊ฐ๋ฐ, ํ
์คํธ, ์คํ
์ด์ง, ํ๋ก๋์
ํ๊ฒฝ์์ ๊ฐ๊ฐ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ฃ .
โ
๊ฐ ํ๊ฒฝ์ ๋ง๋ ์ค์ ์ ์๋ํํ์ฌ ํจ์จ์ ์ธ ๋ฐฐํฌ๋ฅผ ๋์์ฃผ๊ณ ,
โ
์ฌ๋ฌ ํ๊ฒฝ์์ ์ผ๊ด์ฑ ์๋ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค!
Azure DevOps์ ๊ฐ์ ๋๊ตฌ์์๋ YAML์ ์ฌ์ฉํด ํ๊ฒฝ๋ณ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ํจ์จ์ ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
โ 1. Azure DevOps์์ YAML ํ์ดํ๋ผ์ธ ์ค์ ํ๊ธฐ
โถ ๋ฐฉ๋ฒ: Azure DevOps์์ YAML์ ์ฌ์ฉํด ํ์ดํ๋ผ์ธ์ ์์ฑ
- trigger๋ฅผ ์ค์ ํ์ฌ ํน์ ๋ธ๋์น์์๋ง ํ์ดํ๋ผ์ธ์ด ์คํ๋๋๋ก ํฉ๋๋ค.
- ๊ฐ stage๋ฅผ ์ค์ ํ์ฌ ํ๊ฒฝ๋ณ๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ๊ตฌ์กฐ
[yaml]
trigger:
branches:
include:
- main
stages:
- stage: Development
jobs:
- job: Build
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '6.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
- stage: Staging
jobs:
- job: Deploy
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "Deploying to Staging"
displayName: 'Deploy Staging'
- stage: Production
jobs:
- job: Deploy
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "Deploying to Production"
displayName: 'Deploy Production'
๐ฉ 2. ํ๊ฒฝ๋ณ ๋ณ์ ์ค์
โถ ๋ฐฉ๋ฒ: ๊ฐ ํ๊ฒฝ์ ๋ง๋ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ๋ฐฐํฌ๋ฅผ ์๋ํ
- ๊ฐ๋ฐ ํ๊ฒฝ, ์คํ ์ด์ง ํ๊ฒฝ, ํ๋ก๋์ ํ๊ฒฝ ๊ฐ๊ฐ์ ๋ง๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
[yaml]
variables:
dev_connection_string: 'Dev_Connection_String'
prod_connection_string: 'Prod_Connection_String'
๊ฐ ํ๊ฒฝ์์ ํ์ํ ์ค์ ์ ์ธ๋ถ ๋ณ์๋ก ๊ด๋ฆฌํ๋ฉด ๋ ํธ๋ฆฌํ๊ฒ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
๐ฌ 3. ์กฐ๊ฑด๋ถ ์คํ ๋ฐ ์น์ธ ์ค์
โถ ๋ฐฉ๋ฒ: ํ๋ก๋์ ๋ฐฐํฌ ์ ์น์ธ ์ ์ฐจ๋ฅผ ์ถ๊ฐํ์ฌ ์์ ํ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅ
- ์กฐ๊ฑด๋ถ ์คํ์ ์ค์ ํด ๊ฐ ํ๊ฒฝ๋ณ๋ก ํ์ํ ์์ ๋ง ์คํ๋๋๋ก ํ ์ ์์ต๋๋ค.
- Pre-deployment approval์ ํ์ฑํํ์ฌ, ์คํ ์ด์ง์์ ํ๋ก๋์ ์ผ๋ก ๋์ด๊ฐ๊ธฐ ์ ์น์ธ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
[yaml]
stages:
- stage: Production
condition: eq(variables['Build.SourceBranchName'], 'main')
jobs:
- job: Deploy
steps:
- script: echo "Deploying to Production"
displayName: 'Deploy Production'
โจ ์ค์ ์: ์ด์ ๋ฐฐํฌ ์น์ธ + ์๋ํ
- GitHub์ ์ฝ๋ ์ปค๋ฐ
- Dev ํ๊ฒฝ์ ์๋ ๋ฐฐํฌ
- Prod ํ๊ฒฝ์์๋ ์น์ธ ๋๊ธฐ
- ์น์ธ์์๊ฒ Slack ์๋ฆผ ์ ์ก
- ์น์ธ ํ Prod ๋ฐฐํฌ
โ ํ์ ๋๊ตฌ๋ ๋ฐฐํฌ ์ํฉ์ ์ค์๊ฐ์ผ๋ก ํ์ธํ๊ณ , ๋น ๋ฅด๊ฒ ๋์ํ ์ ์์ต๋๋ค!
๐ ๋ง๋ฌด๋ฆฌ
YAML์ ํ์ฉํ Azure DevOps ํ์ดํ๋ผ์ธ ์ค์ ์
โ๏ธ ํ๊ฒฝ๋ณ ๋ฐฐํฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ,
โ๏ธ ๊ฐ ํ๊ฒฝ์ ๋ง๋ ์ค์ ์ ์๋ํํ์ฌ ์ค๋ฅ๋ฅผ ์ค์ด๋ฉฐ,
โ๏ธ ๊ฐ๋ฐ/์ด์ ํ ๊ฐ์ ํ์
์ ๊ฐํํฉ๋๋ค.
DevOps๋ ๋จ์ํ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋๊ตฌ๊ฐ ์๋๋ผ,
ํ ๊ฐ์ ์ ๋ขฐ์ ์ํต์ ์ํ ๋ฌธํ์
๋๋ค ๐