Skip to content

github actions 설정

gyeongpyo Ko edited this page Nov 27, 2019 · 8 revisions

github actions 설정

CI

  • server와 react를 같이 사용하려 했으나 --if-present 옵션이 안되서 따로 분리

CD

server

  • 각 서버에 배포하기 위해서는 HOST정보가 필요합니다.

  • HOST 정보는 github 저장소 -> settings -> secret 에서 설정하실 수 있습니다.

  • 예시

    Secrect 설정 예시

  • 각 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

client(react)

  • 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/')
    
Clone this wiki locally