GitHub Actions - boostcamp-2020/Project03-A-TOTP GitHub Wiki
๋ฐฐ๊ฒฝ
๊ทธ๋์ ์ฌ์ฉํ๋ Traivs CI๊ฐ ํฌ๋ ๋ง ์์ง์ผ๋ก ๋ ์ฌ์ฉํ ์ ์๊ฒ ๋์ด์(์คํ์์ค๋ ๋ฌด๋ฃ๋ก ์๊ณ ์์๋๋ฐ?..) ์ด ๊ธฐํ์ CI/CD๋ฅผ GitHub Actions๋ก ๋ฐ๊พธ๋ฉด์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌ
์ค์ ๊ณผ์
-
๊นํ๋ธ ์ ์ฅ์์ Settings - Secrets ์์ ENV ๊ฐ ์ถ๊ฐ
-
.github/workflows/
๊ฒฝ๋ก์.yml
ํ์ฅ์์ ์ค์ ํ์ผ์ ์ถ๊ฐํ๋ค
name: BE Deployment
on:
push:
branches:
- release-BE
jobs:
deploy:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Npm Install
working-directory: ./WEB/BE
run: npm install
- name: Make envfile
working-directory: ./WEB/BE
run: |
touch .env
echo NODE_ENV = production >> .env
echo DBUSER = ${{ secrets.ENV_DBUSER }} >> .env
echo DBPASS = ${{ secrets.ENV_DBPASS }} >> .env
echo DBHOST = localhost >> .env
echo DBDATABASEWEB = ${{ secrets.ENV_DBDATABASEWEB }} >> .env
echo DBDATABASEiOS = ${{ secrets.ENV_DBDATABASEiOS }} >> .env
echo SALTROUNDS = ${{ secrets.ENV_SALTROUNDS }} >> .env
echo ENCRYPTIONKEY = ${{ secrets.ENV_ENCRYPTIONKEY }} >> .env
echo SECRETKEYNAME = ${{ secrets.ENV_SECRETKEYNAME }} >> .env
echo SECRETKEYALGORITHM = ${{ secrets.ENV_SECRETKEYALGORITHM }} >> .env
echo SECRETKEYLABEL = ${{ secrets.ENV_SECRETKEYLABEL }} >> .env
echo RECAPTCHAKEY = ${{ secrets.ENV_RECAPTCHAKEY }} >> .env
echo EMAILURL = ${{ secrets.ENV_EMAILURL }} >> .env
echo EMAILACCESSKEY = ${{ secrets.ENV_EMAILACCESSKEY }} >> .env
echo EMAILSECRETKEY = ${{ secrets.ENV_EMAILSECRETKEY }} >> .env
echo SESSIONKEY = ${{ secrets.ENV_SESSIONKEY }} >> .env
cat .env
- name: Deploy to Express Server
uses: burnett01/[email protected]
with:
switches: -avzr --delete-after
path: WEB/BE/
remote_path: ~/TOTP/
remote_host: ${{ secrets.BE_HOST }}
remote_user: ${{ secrets.BE_USERNAME }}
remote_key: ${{ secrets.BE_KEY }}
remote_port: ${{ secrets.BE_PORT }}
- name: Restart Forever
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.BE_HOST }}
username: ${{ secrets.BE_USERNAME }}
key: ${{ secrets.BE_KEY }}
port: ${{ secrets.BE_PORT }}
script: forever restartall
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_USERNAME: 'DDIS Bot'
- ์ค์ ๋ ๋ธ๋์น์ push๋๋ฉด Actions ํญ์์ job์ด ๋์๊ฐ๋ ๊ฒ ํ์ธ
๋๋์
- Travis๋ ์ค์ ํ๋๊ฒ ๋น์ทํด์ ์ ๋ณด๋ค ๋น ๋ฅด๊ฒ ์ค์ ํ ์ ์์๋ค
- ๋ค๋ฅธ์ฌ๋๋ค์ด ๋ง๋ค์ด๋์ action์ ์ฝ๋ ํ ์ค๋ก ๋ฐ๋ก ์ธ ์ ์์ด์ ํธํ๋ค!
- ssh์ฐ๊ฒฐ๊ฐ์ ๊ท์ฐฎ์ ์์ ์ ํธํ๊ฒ ํ ์ ์๋ค ๐
- ๊นํ๋ธ ์ ์ฅ์ ์์์ ๋ค ์ค์ ํ ์ ์์ด์ ์ข์๋ฏ