github action .env file ์ถ๊ฐ
local์์ ์์ ์ ํ๋ค netlify๋ฅผ ํตํ ๋ฐฐํฌ๋ฅผ ์งํํ๋ฉด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ธฐ์กด์ local์์ .envํ์ผ์ ํตํด์ KAKAO_MAP_KEY๋ฅผ ๋ฐ์์ ์์ ์ ํ๋ค๊ฐ ๋ฐฐํฌ๋ฅผ ํ๊ฒ ๋๋ .envํ์ผ์ ์ฐธ์กฐํ ์ ์์ด์ ๋งต์ด ๋จ์ง ์๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
!https://blog.kakaocdn.net/dn/bz9muI/btsqZ1eeMvg/vuNK40cv5BBjBKRazAUMSk/img.png
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์นญ์ ํ๋์ค github action์ ๋ฐ๊ฒฌํ๊ฒ ๋์์ต๋๋ค.
githubAction ์ด๋?
GitHub Actions๋ GitHub์์ ์ ๊ณตํ๋ ์ง์์ ์ธ ํตํฉ(CI) ๋ฐ ์ง์์ ์ธ ๋ฐฐํฌ(CD) ์๋น์ค์ ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๊ณ , ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด๋ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์๋์ผ๋ก ์์ ์ ์คํํ ์ ์์ต๋๋ค. GitHub Actions๋ ์ฝ๋๋ฅผ ํธ์ํ๊ฑฐ๋ ํ ๋ฆฌํ์คํธ๊ฐ ์ด๋ฆฌ๊ฑฐ๋ ๋ณํฉ๋ ๋ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐ๋๋ ์์ ์ ์ค์ ํ ์ ์์ต๋๋ค.
๊ฐ๋ ๊ณผ ๊ธฐ๋ฅ
- ์ํฌํ๋ก์ฐ (Workflow): ์ํฌํ๋ก์ฐ๋ GitHub Actions์ ํต์ฌ ์์๋ก, ํ๋ ์ด์์ ์์ ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ์ด๋ฌํ ์์ ์ ์ฝ๋๋ฅผ ๋น๋, ํ ์คํธ, ํจํค์งํ, ๋ฐฐํฌ ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค.
- ์์ (Job): ์ํฌํ๋ก์ฐ๋ ํ๋ ์ด์์ ์์ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์์ ์ ๋ณ๋ ฌ ๋๋ ์์ฐจ์ ์ผ๋ก ์คํ๋ ์ ์์ผ๋ฉฐ, ๊ฐ ์์ ์ ํ๋ ์ด์์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ๋จ๊ณ (Step): ์์ ์ ํ๋ ์ด์์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ ๋จ๊ณ๋ ํ๋์ ๋ช ๋ น ๋๋ ์์ ์ ๋ํ๋ด๋ฉฐ, ์ผ๋ จ์ ๋จ๊ณ๋ก ์ ์ฒด ์์ ์ด ๊ตฌ์ฑ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฝ๋๋ฅผ ๋น๋ํ๊ฑฐ๋ ํ ์คํธ๋ฅผ ์คํํ๋ ๋ฑ์ ๋จ๊ณ๊ฐ ์์ ์ ์์ต๋๋ค.
- ์ด๋ฒคํธ (Event): GitHub Actions ์ํฌํ๋ก์ฐ๋ ํน์ ์ด๋ฒคํธ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฝ๋ ํธ์, ํ ๋ฆฌํ์คํธ ์์ฑ, ๋ธ๋์น ๋ณํฉ ๋ฑ์ ์ด๋ฒคํธ๊ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ ์ ์๋ ํธ๋ฆฌ๊ฑฐ๊ฐ ๋ฉ๋๋ค.
- ์์ ์คํ ํ๊ฒฝ (Runner Environment): ์์ ์ ์คํ์ ์ํด ํน์ ํ๊ฒฝ (์: Linux, macOS, Windows)์์ ์คํ๋๋ฉฐ, ํ์ํ ๋๊ตฌ์ ์ข ์์ฑ์ ์ค์นํ๊ณ ์์ ์ ์คํํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
1. ์์ ๋ฐฉ๋ฒ๋๋ก ๋ค์ด๊ฐ์ secret ํ๊ฒฝ๋ณ์๋ฅผ ๋ฑ๋กํด ์ค๋๋ค.
2. ์์ ๋ฐฉ๋ฒ๋๋ก ๋ค์ด๊ฐ์ yml file์ ๋ง๋ค์ด์ฃผ๋ฉด ๋์ ๋๋ค.
#์ธ๋ถ์ ์ธ ์ฝ๋์ ์ญํ์ด ๊ถ๊ธํ์๋ค๋ฉด https://ji5485.github.io/post/2021-06-06/build-ci-cd-pipeline-using-github-actions/ ์์ ํ์ธํด ๋ณด์ธ์!
main.yml
name: Front Deployment
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
build:
name: react build & deploy
runs-on: ubuntu-latest
steps:
- name: checkout Github Action
uses: actions/checkout@v3
# .env์ ์๋ ํ๊ฒฝ๋ณ์๋ค์ ๋ฑ๋กํด์ฃผ๋ ๋จ๊ณ
- name: .env setting
run: |
echo "REACT_APP_SERVER_IP=${{ secrets.REACT_APP_SERVER_IP }}" >> .env
echo "REACT_APP_EXAMPLE=${{ secrets.REACT_APP_EXAMPLE }}" >> .env
- name: install npm dependencies
run: npm install
- name: react build
run: npm run build
์ ์ฉํ
๋๋ฌด ์๋์๊ฐ๋๋ค!.
https://ji5485.github.io/post/2021-06-06/build-ci-cd-pipeline-using-github-actions/