-
Notifications
You must be signed in to change notification settings - Fork 5
GitHub Actions
Lee Dogyeong edited this page Dec 5, 2020
·
2 revisions
그동안 사용하던 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연결같은 귀찮은 작업을 편하게 할 수 있다 👍
- 깃허브 저장소 안에서 다 설정할 수 있어서 좋은듯
© Boostcamp