-
[Azure] github action을 이용한 스토리지 계정으로의 CI/CD 자동화클라우드/Azure 2022. 2. 23. 08:59
참고 공식문서
https://docs.microsoft.com/ko-kr/azure/storage/blobs/storage-blobs-static-site-github-actions
GitHub 작업을 사용하여 Azure Storage에 정적 사이트 배포
GitHub Actions를 사용하여 호스팅하는 Azure Storage 정적 웹 사이트
docs.microsoft.com
필요한 세팅
- CDN이 물려있는 스토리지 계정
- Azure CLI
https://docs.microsoft.com/ko-kr/cli/azure/install-azure-cli-windows?tabs=azure-cli
Windows용 Azure CLI 설치
Windows에서 Azure CLI를 설치하려면 Windows 명령 프롬프트(CMD)를 통해 CLI에 대한 액세스 권한을 제공하는 MSI 설치 관리자 또는 Powershell을 사용해야 합니다.
docs.microsoft.com
1. 파워셀을 열고 다음 명령어를 입력한다.
az ad sp create-for-rbac --name {myStaticSite} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} --sdk-auth
명령어에 대한 설명
https://docs.microsoft.com/ko-kr/cli/azure/ad/sp?view=azure-cli-latest#az_ad_sp_create_for_rbac
az ad sp
--> az ad sp automation 인증에 대 한 Azure Active Directory 서비스 사용자를 관리 합니다. 이 문서의 내용 명령 az ad sp create 서비스 주체를 생성합니다. az ad sp create-for-rbac 서비스 주체를 만들고 Azure 리소
docs.microsoft.com
myStaticSite : 이름. 자유롭게 지어주어도 무방하다.
subscription-id : 구독 id. 스토리지 계정이 들어있는 구독의 id를 입력해주자. 스토리지 계정의 '개요' 탭에서 확인 가능하다.
resource-group : 리소스그룹 이름. 스토리지 계정이 들어있는 리소스 그룹의 이름을 입력해주자.
명령어를 입력하면 다음과 같은 형식의 값이 return된다.
{ "clientId": "<GUID>", "clientSecret": "<GUID>", "subscriptionId": "<GUID>", "tenantId": "<GUID>", (...) }
잘 복사해준다.
2. 깃허브 비밀값 세팅
깃허브로 이동하여, 해당 스토리지 계정의 데이터가 들어있는 레포지토리로 이동한다.
상단 네비게이션 바의 Settings로 이동하여, 왼쪽 네비게이션 바에서 Secrets>Actions 로 이동한다.
New repository secret 을 클릭하고, Values에 아까 복사했던 값을 붙여넣기한다. 이름도 기억하기 쉽게 잘 지어준다.
3. github action yaml파일 생성
레포지토리의 Actions 탭으로 이동해 new workflow를 클릭한다.
set up a workflow yourself 를 클릭한다.
작성되어있는 모든 내용을 지우고, 다음 내용을 복사 붙여넣기 한다.
name: Blob storage website CI on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Upload to blob storage uses: azure/CLI@v1 with: inlineScript: | az storage blob upload-batch --account-name <STORAGE_ACCOUNT_NAME> --auth-mode key -d '$web' -s . - name: Purge CDN endpoint uses: azure/CLI@v1 with: inlineScript: | az cdn endpoint purge --content-paths "/*" --profile-name "CDN_PROFILE_NAME" --name "CDN_ENDPOINT" --resource-group "RESOURCE_GROUP" # Azure logout - name: logout run: | az logout if: always()
secrets.AZURE_CREDENTIALS 부분은, 뒤의 대문자 부분을 아까 세팅한 비밀값의 Name으로 변경한다.
<STORAGE_ACCOUNT_NAME>은 스토리지 계정의 이름으로 변경한다.
'$web'은 레포지토리의 소스가 올라간 컨테이너 이름으로 변경한다.
4. 작동 확인
위 yaml 파일을 저장하고 나오면 자동으로 워크플로우가 실행 될 것이다.
워크플로우 종료 후 스토리지 계정을 확인해보면 끝!
'클라우드 > Azure' 카테고리의 다른 글
[Azure] storage 계정에 sftp 연결하기 (0) 2022.03.14 [Azure] 스토리지 계정을 cdn 데이터 저장소로 세팅하기 (0) 2022.02.22 Azure function app 로컬에서 돌리기 (0) 2022.01.20 내가 기억하기 위해 쓰는 Azure 정리 (0) 2022.01.12