Github Action 을 이용해서 프론트 레포지토리의 main에 push가 되면, build 후 build된 파일을 통째로 s3 버켓에 올리는 작업이다.
이를 네이버 클라우드에 연동된 S3 버켓에 올리는 작업을 진행한다.
네이버클라우드에 연동하는 방법은 아래 글에 자세히 잘 나와있다.
몇 가지 수정한 것만 정리해보자면
- private 레포지토리여서 github token을 추가
- aws access key 관련 정보는 github > security > deploy keys에서 설정 후 secret.를 이용해 불러옴
배포 중 에러가 발생하였다.
[에러1]
<botocore.awsrequest.AWSRequest object at 0x7f37ea551278>
##[error]Process completed with exit code 255.
[해결1]
sudo apt-get install python3-setuptools
python3 -m pip install --user awscli
참고 : https://github.com/aws/aws-cli/issues/5262
위 이슈에 나와있는 것처럼 pip를 이용해서 awscli를 설치하는 스크립트를 action에 추가한다.
- name: Install Python dependencies
run: |
sudo apt-get install python3-setuptools
python3 -m pip install --user awscli
(작성방법 참고 : https://github.com/ynezz/openwrt-ucentral-schema/actions/runs/732324263/workflow)
[에러2]
Run aws s3 --endpoint-url=https://kr.object.ncloudstorage.com cp ./build/ s3://front/ --recursive
The user-provided path ./build/ does not exist.
Error: Process completed with exit code 255.
에러가 바뀌었다..!
build 파일을 찾을 수 없다는 의미. 따라서 pwd, ls -al 를 사용해서 build 파일의 위치를 찾아볼 것이다.
[해결2]
npm run build 이후working directory print step 추가.
- name: Print working directory
run: pwd
- name: List All files
run: ls -al
확인해보니.. vite로 설정한 프로젝트 때문에, ./build 디렉토리에 저장되지 않고 있었다..
[해결3]
build 디렉토리 명 변경 및 artifacts 추가
- uses: actions/upload-artifact@v3
with:
name: artifact
path: public
- name: Copy Build Dir
run: cp -a dist/. public/
(dist를 public에 복사)
이랬더니 정상 빌드 및 버켓에 잘 올라간다.
[Github Action 전문 보기]
name: Deployment
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-18.04
strategy:
matrix:
node-version: [16.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- uses: actions/upload-artifact@v3
with:
name: artifact
path: public
- name: Install Packages
run: npm install
- name: Build page
run: npm run build
- name: Copy Build Dir
run: cp -a dist/. public/
- name: Print working directory
run: pwd
- name: List All files
run: ls -al
- name: Install Python dependencies
run: |
sudo apt-get install python3-setuptools
python3 -m pip install --user awscli
- name: Upload to S3
env:
AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}}
AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}}
run: |
aws s3 --endpoint-url=https://kr.object.ncloudstorage.com cp ./public/ s3://my-frontend/ --recursive
- name: Deploy to gh-pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
'git' 카테고리의 다른 글
[Git] git push 오류 "warning: push.default is unset;" (0) | 2023.02.04 |
---|---|
mac에서 git log 한글 깨짐 (zsh) (0) | 2022.12.10 |
git remote url 변경 (0) | 2022.10.27 |
github 계정 최초1회 로그인 후 자동 저장 (0) | 2022.08.29 |
[git]이미 커밋된 작성자 변경하기 (git author change) (0) | 2022.08.13 |