프로젝트 배포를 Azure로 지원해준다 해서 "이 기회? 놓칠 수 없지" 하고 도전
그렇게 나의 일주일은 사라졌다.
사람들이 배포를 왜 그렇게 무서워하나 했는데 뼈저리게 느꼈습니다.
(배포는 리드님도 화나게 만든다)
Azure도 GitHub Actions도 안 써봤는데 이정도면 그냥 몸통 박치기 한게 아닐까🤦♀️
내가 4개월 동안 블로그 글을 안 쓴 것은 오늘을 위해서였음을...
구글링으로 찾아볼 땐 React 프로젝트를 다들 정적 웹 앱으로 배포한 거 밖에 없어서 진짜 곤란했다.
나와 같은 사람들이 나오지 않도록 모든 과정을 한번 써보겠음. 누구든 도움이 되길!
정적 웹 앱? 아니구요~
하도 정적 웹 앱 얘기만 나와서 교육자님께 여쭤봤는데 이런 대답이 왔다.
React app 구현시 static web app으로 구현하신 것이 아니라면 일반 web app으로 하시는 것이 맞습니다. 정적 웹앱을 구현하신게 맞다면 static web app으로 생성하셔도 무방합니다.
백엔드랑 통신해야 하니까 당연히 일반 웹 앱으로 생성 ㄱ
리소스 그룹은 제가 만든게 아니라서 잘 모르겠음요 ㅎㅎ... 이 과정도 필요하시다면 일단 죄송합니다.
만들어진 리소스 그룹으로 들어가면 바로 밑에 만들기 누르기
그럼 이 창이 뜨는데 검색창에 Web App 검색 → 3페이지로
그럼 이게 있는데 만드십쇼
이후 만들기 누르면
웹 앱 만들기는 끝!
.github/workflows/<myapp>.yaml
생성 되었는지 깃헙에서 확인그렇다면 첫 배포를 실행해볼 수 있는데 우리는 main에 push되면 액션이 돌아가게 해놨음
↓ 우리의 워크플로 파일은 이렇다. (최종)
name: Build and deploy Node.js app to Azure Web App - Code-Catcher-FE
permissions:
id-token: write
contents: read
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js version
uses: actions/setup-node@v3
with:
node-version: '20.x'
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm run test --if-present
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v3
with:
name: node-app
path: build
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v3
with:
name: node-app
- name: Login to Azure
uses: azure/login@v1
with:
client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID }}
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID }}
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID }}
// 이건 이따 설명하겠음
- name: 'Deploy to Azure Web App'
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: 'Code-Catcher-FE'
slot-name: 'Production'
package: .
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_************ }}
빌드 실패한 애들 코드에서 해결하십쇼
그러고 다시 시도하면 짜피 실패할 것임 헤헷콩
이제 GitHub Actions에서 Azure 로그인이 되도록 설정해야한다.
여기에 정말 많은 우여곡절이 있었다...
client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID }}
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID }}
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID }}
(AZUREAPPSERVICE_CLIENTID
이런 애들이 환경변수 이름임)
→ 워크플로에서 설정했던 얘네를 찾아서 깃헙 환경변수에 넣어줘야함!
클라이언트 ID 찾기
그럼 이 자리에 있음
테넌트 ID 찾기
구독 ID 찾기
찾아서 다 넣어놨다면 다음 단계로~
우리 프로젝트의 경우는 맨 처음 만들었던 웹 앱에 들어가 설정을 해주어야 했다.
$ pm2 serve /home/site/wwwroot --no-daemon
+ 추가로 깃헙 액션 워크플로 파일도 수정 했다.
자동 생성된 파일은 release.zip으로 연결되어있는데 우리는 build 파일이 따로 있어서 build로 연결해줬다.
앱 등록에서 확인했던 애플리케이션을 내가 만든 웹 앱과 연결해야 한다.
→ 위에서 봤던 애플리케이션을 선택해줘야한다.
이후 "검토+할당" 버튼 클릭
그러면 아래 처럼 생김!!
이제 애플리케이션의 자격 증명을 설정해줘야한다.
자격 증명 추가 선택
이렇게 세팅했다.
환경 > Production
으로 설정해야됐는데 모르고 분기 > main
으로 설정해놨었다.
그래서 깃헙 액션과 연결이 제대로 안되어서 아래와 같은 에러가 났었다.
엔터티 유형과 하위 항목의 경우는 워크플로 파일 설정을 확인하고 진행하도록 하자
밑에 자격 증명 세부정보는 자격 증명 이름 지정해주는 걸로 생각하면 되겠다.
그럼 배포 끝!!!!!
27 ㅋㅋ... 사실상 job 안에서 다시 시도한 것도 여러 번이라ㅋㅋㅋ...
중간에 빼먹은 게 있을려나? 일주일의 기록을 담으려니 어지럽네요 ^^...
잘 정리한거...맞겠지...?
궁금증에 대한 답변은 교육자님께서 해주심 (((압도적 감사)))
Q. 배포는 성공했다면서 화면은 왜 안뜨죠?
A. 5번부터 8번 과정이 빠져 있었어서 안뜨는게 당연했음 ㅋ...
배포 관련해서는 이 두 곳을 통해 더 자세히 확인할 수 있었다.
Q. 경로를 확인해봤을때 ssh에선 /home/site/wwwroot에 리소스들이 들어있는데 고급 도구에서 확인해 보았을 땐 site folder가 단순 /home으로 지정되어 있는 것이 의아해요
A: 고급 도구 내에 site folder는 단순히 웹앱의 루트 디렉토리. 실제 호스트되는 웹앱의 홈 디렉토리는 /home/site/wwwroot이다.
Q. 블로그 글을 찾아보면 이곳에 로그처럼 찍히는 것 같았는데 아무것도 뜨지 않는다.
A: 해당 디렉토리가 존재하지 않기 때문. 추가로 셋팅하지 않으면 없는 것이 정상!
Q. 프로젝트가 정상적으로 실행된다면, Azure에서 보이는 기본 도메인을 눌렀을 때 바로 프로젝트 페이지가 뜨는 건가? 아니면 url에 다른 경로가 더 붙나??
A: 기본 도메인에서 바로 사이트 접근이 가능. 구현 방식에 따라 다른 경로로 바로 redirection될 수 있음
이렇게 적으니 생각보다 간단했을지도... 근데 정말 처음 하는 입장에선 배포 성공이 성공한게 아닌데 오류 로그도 안찍히니까 미치겠고... 하나 잘못 건들면 이상해지고 그래서 굉장히 힘들었다 ㅋㅋㅋㅜㅜㅜㅜ
일주일 동안 배포 하나에 같이 머리 싸매주신 모든 분들께 감사의 인사 올립니다...
처음 접해본 만큼 어려웠지만 그래도 성공하고나니 짱 신기하고 좋다 희희
이제... 밀린 개발하러 가자...