본 글은 앞서 적은 firebase 관련 글(firebase hosting, firebase cloud function 등)에 대한 이해가 있다는 전제 하에 작성되었습니다.
Firebase console에서 hosting 탭에 들어갑니다.
Hosting에서 다른 사이트 추가 버튼을 누르고, 사이트명을 입력하여 사이트를 생성합니다.
Bitbucket Pipeline이 Firebase에 배포할 수 있도록 하기 위해서 IAM 서비스 계정을 생성하고 bitbucket에 해당 IAM 정보를 입력해줘야 합니다. 그러기 위해 IAM을 생성합니다.
다음의 권한을 부여하고 완료를 눌러 IAM 서비스 계정을 생성합니다.
편집자
Cloud 함수 관리자
cd /path_name
base64 keyfile_name.json
Repository setting > pipelines setting > Repository variables 에 들어가 다음과 같이 설정해줍니다.
KEY_FILE
: 위에서 IAM key json 파일을 base64 로 인코딩 한 문자열
PROJECT_ID
: 배포되어야 할 Firebase 프로젝트 ID (프로젝트 이름과 ID는 다를 수 있음)
프로젝트 루트에 bitbucket-pipelines.yml
파일 생성합니다.
저장소에 커밋하면 Bitbucket에서 알아서 이를 인식하고 bitbucket-pipelines.yml
설정에 따라 CI/CD가 진행됩니다.
image: node:14.17.0
definitions:
caches:
node: src/node_modules
steps:
- step: &deploy
script:
- npm ci
- cd functions && npm ci && cd ..
- npm run build
- ls -al build
- pipe: atlassian/firebase-deploy:1.3.0
variables:
KEY_FILE: $KEY_FILE
PROJECT_ID: $PROJECT_ID
pipelines:
branches:
master:
- step: *deploy
프로젝트 루트에 firebase.json
파일 생성합니다.
firebase.json
파일을 통해 사이트 요청에 대한 호스팅 동작을 맞춤설정할 수 있습니다.
참조: 호스팅 동작 구성
# firebase.json
{
"_comment": "comment",
"hosting": {
"site": "my-site-name",
"public": "build",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "/pathName",
"function": "functionName"
},
{
"source": "**",
"destination": "/app.html"
}
]
},
"functions": {
"source": "functions"
},
"emulators": {
"functions": {
"port": 3001
},
"hosting": {
"port": 3000
},
"ui": {
"enabled": true,
"port": 3002
}
}
}
위와 같이 설정한 뒤, Bitbucket 저장소에 push를 하게 되면 pipeline이 돌게 됩니다. 저장소에 push한 코드는 create-react-app를 통해 만들어진 것입니다.
배포가 완료되면 Hosting URL을 확인할 수 있는데, 여길 들어가서 배포된 결과물을 확인할 수 있습니다.