-
Notifications
You must be signed in to change notification settings - Fork 2
github actions 설정
- server와 react를 같이 사용하려 했으나 --if-present 옵션이 안되서 따로 분리
-
각 서버에 배포하기 위해서는 HOST정보가 필요합니다.
-
HOST 정보는 github 저장소 -> settings -> secret 에서 설정하실 수 있습니다.
-
예시
-
각 branch의 작업 폴더별 가장 최상위 디렉토리에 'hostinfo' 파일이 있어야 합니다.
-
hostfile에는 Secrets에 등록된 Secret name 정보만 입력합니다.
예:
TEST_HOST
-
Secret name에 대한 값은 각각의 항목에 맞게 설정해 주시면 됩니다.
-
예
USERNAME: SSH접속을 위한 아이디(유저네임) PASSWORD: SSH접속을 위한 패스워드 PORT: SSH 포드번호 TEST_HOST: TEST서버의 IP주소/ADDR
-
-
각 서버에는 다음과 같은 파일이 해당 계정의 home 디렉토리에 있어야 합니다.
deploy.sh
URL=$1
BRANCHNAME=$2
GITHUB_REPOSITORY=$3
FOLDER=$(echo ${GITHUB_REPOSITORY#*/})
WORKSPACE=$(echo ${BRANCHNAME%-api/master})
if [ ! -d $GITHUB_REPOSITORY ]; then
git clone $URL -b $BRANCHNAME
fi
cd ./$FOLDER
git pull
if [ -e "../.env" ]; then
mv ../.env ./apis/$WORKSPACE
fi
cd ./apis/$WORKSPACE
if [ -x "run.sh" ]; then
./run.sh
else
echo no server start setting file
exit 1
fi
-
각각의 인자는 git 저장소 주소, 브랜치 명, clone했을 때 생성되는 폴더명입니다.
- 위와 같이 각 서버에 해당 스크립트를 작성한 이유는 nCloud 서비스에서도 위의 스크립트는 아니더라도 특정한 패키지를 설치해야 한다고 명시되었기 때문에 사용하였습니다.
-
생성한 스크립트에 실행권한을 추가합니다.
chmod +x ./deploy.sh
-
이후 서버동작에 필요한 스크립트는 임의로 run.sh 스크립트에 작성하시면됩니다. (실행권한 필요)
-
node.js 10.x
-
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - apt install nodejs
-
-
pm2
-
yarn
-
-
서버 초기 스크립트
#!/bin/bash
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt -y install nodejs
npm install -g yarn
cat << 'EOF' > ~/deploy.sh
URL=$1
BRANCHNAME=$2
GITHUB_REPOSITORY=$3
FOLDER=$(echo ${GITHUB_REPOSITORY#*/})
WORKSPACE=$(echo ${BRANCHNAME%-api/master})
if [ ! -d $GITHUB_REPOSITORY ]; then
git clone $URL -b $BRANCHNAME
fi
cd ./$FOLDER
git pull
if [ -e "../.env" ]; then
mv ../.env ./apis/$WORKSPACE
fi
cd ./apis/$WORKSPACE
if [ -x "run.sh" ]; then
chmod +x run.sh
./run.sh
else
echo no server start setting file
exit 1
fi
EOF
chmod +x ~/deploy.sh
-
react는 Objecst Storage 를 이용하여 사용하므로 server와는 다른 설정이 필요합니다.
-
nCloud는 aws와 호환되므로 다른 사람(jakejarvis)이 작성한 github actions을 이용하였습니다.
- 해당 actions이 실행할때마다 object storage 내의 데이터를 제거하고 다시 재업로드합니다.
-
server와 마찬가지로 Secerts설정이 필요합니다.
AWS_S3_BUCKET : nCloud의 bueckt 이름 AWS_ACCESS_KEY_ID : nCloud의 Access Key ID AWS_SECRET_ACCESS_KEY : nCloud의 Secret Key 해당 정보는 nCloud > 계정관리 > 인증키 관리에서 확인할 수 있습니다.
-
이외 다음 설정은 nCloud에 맞게 설정하였습니다. 참조: nCloud Object Storage API내의 호출 도메인(Endpoint)를 참조하시면 됩니다.
AWS_REGION: kr-standard AWS_S3_ENDPOINT: https://kr.object.ncloudstorage.com SOURCE_DIR: 실제 react build시 생성된는 폴더명(여기는 './build/')
© BoostCamp Project 48.
Members 이석재 (sukjae) | 여재환 (Johnie-Yeo) | 고경표 (kgpyo)