Advanced (업데이트: 2026. 7. 19.)

Claude Code로 제작사 Azure DevOps Pipeline 승인 흐름 점검하기

제작사 PR, ManualValidation, production approval, rollback 증거를 나눕니다.

Claude Code로 제작사 Azure DevOps Pipeline 승인 흐름 점검하기

웹 제작사에서는 PR, 스테이징 URL, 클라이언트 승인 메모, Azure Pipelines run 화면이 서로 다른 탭에 있습니다. 작은 문구 수정도 누가 확인했는지 흐려지면 바로 production으로 갑니다. 이 글은 branch policies, ManualValidation, approvals를 릴리스 표로 바꿉니다.

제작사 릴리스가 실패하는 지점

  • PR 승인, 스테이징 확인, 클라이언트 승인, production 승인을 분리합니다.
  • merge 전 main 또는 release branch는 branch policies로 보호합니다.
  • 스테이징 URL과 rollback 확인에는 ManualValidation을 씁니다.
  • production 앞에는 environment approvals gate를 둡니다.
  • Claude Code는 YAML과 diff를 요약하고, 클라이언트, 가격, 법무, 일정, rollback은 사람이 봅니다.

The source base is Microsoft Learn for pipeline deployment approvals, ManualValidation@1, release approvals, branch policies, and the tasks reference. For an internal release-flow pattern, see the agency cloud release article.

Claude Code가 준비할 것과 사람이 승인할 것

웹 제작사에서는 PR, 스테이징 URL, 클라이언트 승인 메모, Azure Pipelines run 화면이 서로 다른 탭에 있습니다. 작은 문구 수정도 누가 확인했는지 흐려지면 바로 production으로 갑니다. 이 글은 branch policies, ManualValidation, approvals를 릴리스 표로 바꿉니다. Claude Code should read pipeline YAML, PR template, diff summary, staging checklist, branch policy notes, and environment approval notes. It should output a release table that names branch, build, staging deploy, manual validation, production environment, approver, timeout, rollback note, and evidence link.

Humans keep client acceptance, ad claims, pricing, legal copy, publish timing, emergency exceptions, and rollback decision. This distinction keeps the agent from acting like the release owner. The agent prepares evidence; the agency decides.

세 가지 Use case

Use case 1

입력: PR URL, diff, build result, reviewer, branch policy, 대상 페이지. 출력: PR, production, client 3열 표. 사람 확인: 가격, 법무 문구, 광고, client OK, 공개 시간, rollback.

Use case 2

입력: staging URL, reviewer email, screenshot, diff, rollback note, deadline. 출력: ManualValidation@1 instructions와 checklist. 사람 확인: 모바일, 폼, 이미지, 링크, analytics, client OK.

Use case 3

입력: production environment, approvers, branch control, business hours, exclusive lock, channel. 출력: 순서, owner, timeout, 실패 연락처. 사람 확인: self approval 방지, 야간 공개, 광고 시작, rollback owner.

복사해서 쓰는 프롬프트

You are auditing an Azure DevOps release flow for a web agency.
Inputs: azure-pipelines.yml, PR template, branch policy memo, production environment approvals memo, staging URL checklist, and a recent rollback or rework note.
Output:
1. Three-column table: PR review, staging/client review, production approval.
2. ManualValidation@1 instruction text with staging URL, diff, rollback note, owner, and deadline.
3. Production environment approvals and checks proposal.
4. Branch policy list: reviewer, build validation, comment resolution, status check.
5. One first action that can be done in 30 minutes.
Rules: do not let the agent approve client acceptance, pricing, legal wording, publish timing, or production release.

확인 코드

const pipelineText = [
  "trigger:",
  "  branches:",
  "    include:",
  "      - main",
  "stages:",
  "  - stage: Build",
  "    jobs:",
  "      - job: build",
  "        steps:",
  "          - script: npm ci && npm run build",
  "  - stage: DeployStaging",
  "    jobs:",
  "      - job: deploy_staging",
  "        steps:",
  "          - script: echo deploy staging",
  "  - stage: ClientCheck",
  "    jobs:",
  "      - job: wait_for_client",
  "        pool: server",
  "        steps:",
  "          - task: ManualValidation@1",
  "            inputs:",
  "              notifyUsers: [email protected]",
  "              instructions: Check staging URL, PR diff, rollback note, and client approval.",
  "  - stage: DeployProduction",
  "    jobs:",
  "      - deployment: production",
  "        environment: production",
  "        strategy:",
  "          runOnce:",
  "            deploy:",
  "              steps:",
  "                - script: echo deploy production"
].join(String.fromCharCode(10));

const required = [
  { name: "main branch trigger", pattern: /- main/ },
  { name: "staging stage", pattern: /DeployStaging/ },
  { name: "manual validation", pattern: /ManualValidation@1/ },
  { name: "server pool for manual validation", pattern: /pool:\s*server/ },
  { name: "production environment", pattern: /environment:\s*production/ },
  { name: "rollback note in approval text", pattern: /rollback/i }
];

const findings = [];
for (const rule of required) {
  if (!rule.pattern.test(pipelineText)) {
    findings.push({ item: rule.name, fix: "add this gate before production release" });
  }
}

const productionIndex = pipelineText.indexOf("DeployProduction");
const validationIndex = pipelineText.indexOf("ManualValidation@1");
if (productionIndex !== -1 && validationIndex !== -1 && validationIndex > productionIndex) {
  findings.push({
    item: "approval order",
    fix: "place client/manual validation before production deployment"
  });
}

console.table(findings);
if (findings.length > 0) process.exitCode = 1;

Pitfall: 흔한 실수

The first cause is treating PR approval as production approval. The fix is to separate code review, staging review, client acceptance, and production approval by name and owner.

The second cause is relying on notification recipients as if they were approvers. The fix is to inspect environment approval and project permissions separately from notifyUsers.

The third cause is approving without a rollback note. The fix is to add rollback commit, previous artifact, owner, and contact path to the approval text.

The fourth cause is bypassing branch policy under pressure. The fix is to define an emergency exception path with time limit, approver, evidence, and follow-up review.

자주 묻는 질문

Q. Should we use ManualValidation or environment approval? A. Use ManualValidation for an in-stage pause such as staging URL review. Use environment approvals and checks as the production gate.

Q. Should client approval live inside Azure DevOps? A. If the client does not use Azure DevOps, store the approval URL or message link in the release memo and tie it to the pipeline run.

Q. Does a small content change need branch policy? A. Yes. Pricing pages, hiring pages, and ad landing pages can affect leads and revenue even when the code diff is small.

Q. Can Claude Code approve the release? A. No. It can summarize diff, list missing evidence, and draft checklists. Humans approve production.

상담으로 이어지는 길

제작사에 필요한 것은 긴 YAML이 아니라 잘못된 공개를 줄이고 client 증거를 남기는 것입니다. 최근 PR, YAML, staging checklist, rollback memo를 상담 페이지로 가져오면 됩니다. Use Claude Code training and consultation if the team needs help turning PRs, pipeline YAML, staging checks, and rollback memos into a repeatable release workflow.

확인한 내용

Microsoft Learn의 approvals, ManualValidation@1, release approvals, branch policies, task reference를 확인했습니다. 로컬 코드는 ManualValidation, server pool, production environment, rollback note를 확인합니다. 첫 행동은 PR, staging, production을 3열로 나누는 것입니다.

#claude-code #제작사 #Azure DevOps #CI/CD #릴리스
무료

무료 PDF: Claude Code 치트시트

이메일을 입력하면 명령, 리뷰 습관, 안전한 워크플로를 정리한 PDF를 받을 수 있습니다.

개인정보를 안전하게 관리하며 스팸을 보내지 않습니다.

Masa

작성자 소개

Masa

Claude Code 실무 워크플로와 팀 도입을 검증하는 엔지니어입니다.