Skip to content

AppVeyor를 이용한 CI CD 구현

Justin Yoo edited this page Jun 26, 2018 · 2 revisions

시작 전 준비물 확인

애저 서비스 어카운트 생성

CI/CD 파이프라인에서 애저 리소스에 연결하기 위한 서비스 어카운트를 생성합니다. 우선 애저 CLI에 아래 명령어를 이용해서 로그인 합니다.

az login

아래와 같은 메시지가 나올 경우 웹 브라우저를 이용해 로그인 절차를 마무리합니다.

아래 명령어를 이용해 서비스 어카운트를 생성합니다.

cliPassword="[패스워드]"
az ad sp create-for-rbac -n [서비스 어카운트 이름] -p $cliPassword

서비스 어카운트 생성후 화면에 표시되는 내용 중 name, password, tenant 값을 메모해 놓습니다.

이제 다시 서비스 어카운트로 로그인 합니다.

az login --service-principal \
    -u http://[서비스 어카운트 이름] \
    -p $cliPassword \
    -t [애저 테넌트 ID]

AppVeyor와 GitHub 리포지토리 연결

AppVeyor에 GitHub의 계정을 통해 로그인할 수 있습니다. 로그인 후, 현재 실습하는 리포지토리를 선택해 CI/CD 프로젝트를 생성합니다.

프로젝트 생성 후 설정 화면의 환경 설정 탭에서 빌드 워커 이미지를 우분투로 선택하고 환경 변수를 아래와 같이 설정합니다.

CI/CD 준비

AppVeyor에 CI/CD 환경을 구축하기 위한 스크립트를 준비합니다.

git checkout step-06

appveyor.yml 파일에 아래와 같이 입력합니다.

version: 1.0.{build}
image: Ubuntu
services:
- docker
build_script:
- sh: docker build src/Dockerised.FunctionApp -t function_app
- sh: docker tag function_app $docker_account/function_app
deploy_script:
- sh: docker login -u $docker_account -p $docker_password
- sh: docker push $docker_account/function_app
- sh: az login --service-principal -u $azure_account -p $azure_password -t $azure_tenant
- sh: az group deployment create -g $azure_resource_group -n AppVeyor --template-file src/ResourceGroup/azuredeploy.json --parameters @src/ResourceGroup/azuredeploy.parameters.json --parameters storageAccountName=$storage_account_name appServicePlanName=$app_service_plan_name functionAppName=$function_app_name functionAppDockerCustomImageName=$docker_account/function_app

입력을 마치고 저장한 후 커밋합니다.

CI/CD 활성화

앞서 커밋한 결과를 원격 깃헙 리포지토리로 푸시합니다. AppVeyor에서 자동으로 변경사항을 발견하고 CI/CD 파이프라인을 가동시키는 것을 확인합니다. 모든 CI/CD 프로세스가 끝난 후 애저 펑션 앱이 제대로 생성되어 돌아가는지 확인합니다.