Devops/Azure

YAML๋กœ ํ™˜๊ฒฝ๋ณ„ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์„ฑํ•˜๊ธฐ

develkbh 2025. 4. 9. 13:51


๐Ÿ“ฃ 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'


โœจ ์‹ค์ „ ์˜ˆ: ์šด์˜ ๋ฐฐํฌ ์Šน์ธ + ์ž๋™ํ™”

  1. GitHub์— ์ฝ”๋“œ ์ปค๋ฐ‹
  2. Dev ํ™˜๊ฒฝ์— ์ž๋™ ๋ฐฐํฌ
  3. Prod ํ™˜๊ฒฝ์—์„œ๋Š” ์Šน์ธ ๋Œ€๊ธฐ
  4. ์Šน์ธ์ž์—๊ฒŒ Slack ์•Œ๋ฆผ ์ „์†ก
  5. ์Šน์ธ ํ›„ Prod ๋ฐฐํฌ

โœ… ํŒ€์› ๋ˆ„๊ตฌ๋‚˜ ๋ฐฐํฌ ์ƒํ™ฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๊ณ , ๋น ๋ฅด๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


๐Ÿ” ๋งˆ๋ฌด๋ฆฌ

YAML์„ ํ™œ์šฉํ•œ Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ ์„ค์ •์€
โœ”๏ธ ํ™˜๊ฒฝ๋ณ„ ๋ฐฐํฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ ,
โœ”๏ธ ๊ฐ ํ™˜๊ฒฝ์— ๋งž๋Š” ์„ค์ •์„ ์ž๋™ํ™”ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๋ฉฐ,
โœ”๏ธ ๊ฐœ๋ฐœ/์šด์˜ ํŒ€ ๊ฐ„์˜ ํ˜‘์—…์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

DevOps๋Š” ๋‹จ์ˆœํžˆ ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ,
ํŒ€ ๊ฐ„์˜ ์‹ ๋ขฐ์™€ ์†Œํ†ต์„ ์œ„ํ•œ ๋ฌธํ™”์ž…๋‹ˆ๋‹ค ๐Ÿ˜Š