[๊ฐ์] ๋ฐ๋ผํ๋ฉฐ ๋ฐฐ์ฐ๋ ๋์ปค์ CIํ๊ฒฝ -5
๐๊น์ ํ๋ก์ ํธ ์ฌ๋ฆฌ๊ธฐ
ํด๋๋ก ์ด๋ -> git init -> git add . -> git commit -m "first commit" -> git push origin master
โTravis CI๋?
Travis CI๋ Github์์ ์งํ๋๋ ์คํ์์ค ํ๋ก์ ํธ๋ฅผ ์ํ ์ง์์ ์ธ ํตํฉ(Continuous Integration) ์๋น์ค์ด๋ค. 2011๋ ์ ์ค๋ฆฝ๋์ด 2012๋ ์ ๊ธ์ฑ์ฅํ์์ผ๋ฉฐ Ruby์ธ์ด๋ง ์ง์ํ์์ง๋ง ํ์ฌ ๋๋ถ๋ถ์ ๊ฐ๋ฐ ์ธ์ด๋ฅผ ์ง์ํ๊ณ ์๋ค. Travis CI๋ฅผ ์ด์ฉํ๋ฉด Github repository์ ์๋ ํ๋ก์ ํธ๋ฅผ ํน์ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์๋์ผ๋ก ํ ์คํธ, ๋น๋ํ๊ฑฐ๋ ๋ฐฐํฌํ ์ ์๋ค. Private repository๋ ์ ๋ฃ๋ก ์ผ์ ๊ธ์ก์ ์ง๋ถํ๊ณ ์ฌ์ฉํ ์ ์๋ค.
1. github์ push
2. Github master ์ ์ฅ์์ push๊ฐ ๋๋ฉด Travis CI์๊ฒ ์์ค๊ฐ push ๋์๋ค๊ณ ์๋ ค์ค
3. Travis CI๊ฐ ์ ๋ฐ์ดํธ๋ ์์ค ๊ฐ์ ธ์ด
4. ํ ์คํธ ์ฝ๋ ์คํํด๋ด
5. ์ฑ๊ณตํ๋ฉด ํธ์คํ ์ฌ์ดํธ( (ex) AWS ...)๋ก ๋ณด๋ด์ ์๋์ผ๋ก ๋ฐฐํฌ
Travis CI ๊ฐ์ , Paln ์ค์ ํด์ฃผ๊ณ
sudo: required
laguage: generic
services:
- docker
before_install:
- echo "start creating an image with dockerfile"
- docker build -t rose0192/docker-react-app -f Dockerfile.dev .
script:
- docker run -e CI=true rose0192/docker-react-app npm run test --
after_success:
- echo "Test success"
.travis.yml ํ์ผ ๋ง๋ค์ด(Test ๋ถ๋ถ๋ง ์์ฑ๋์ด ์์) git์ pushํด์ฃผ๋ฉด
๋ญ๊ฐ ์คํ์ค์ธ ์ํ๊ฐ ๋๋ค
+ ๋์ปค ์คํ ์๋ ๋
๐ฌ AWS ์์๋ณด๊ธฐ
Amazone EC2 : Amazon Elastic Compute Cloud ํ ๋์ ์ปดํจํฐ๋ฅผ ์๋ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
EB : Elastic BeanStalk ํ๊ฒฝ ํ๊ฒฝ ์์์ EC2, DB๋ฑ์ ๊ด๋ฆฌ(์น ์ฑ ๊ด๋ฆฌ)ํ๊ณ , Docker๋ฑ๊ณผ ํจ๊ป ์๋น์ค ๋ฐฐํฌ, ํ์ฅ์ ํธ๋ฆฌํ๊ฒ ํจ
- ์์ฑํ๊ธฐ
Elastic BeanStalk์ ์์ฑํ๋ค!
ํ๋ซํผ Docker, linux(2 ์๋) ์ ํ
๐ .travis.yml ๋ฐฐํฌ ์ฝ๋ ์์ฑ
deploy:
provider: elasticbeanstalk
region: "ap-northeast-2"
app: "docker-react-app"
env: "DockerReactApp-env"
bucket_name: "elasticbeanstalk-ap-northeast-2-625335712083"
bucket_path: "elasticbeanstalk-ap-northeast-2-625335712083"
on:
branch: master
๋ฅผ ํ๋จ์ ์ถ๊ฐํด์ค๋ค.
S3ํ์ผ์ ์๋ ์์ฑ๋๋ค
๐Travis CI์ AWS์ ๊ทผ์ ์ํ API ์์ฑ
Travis CI์ AWS ๊ฐ ์ค์ง์ ์ผ๋ก ์ํตํ ์ ์๋๋ก ์ธ์ฆํ๋ ๋ถ๋ถ์ ์ค์ ํด์ผ๋จ
<์ธ์ฆ ๊ณผ์ >
์ธ์ฆ์ ์ํด์๋ API key๊ฐ ํ์ํ๋ค
1. IAM USER ์์ฑ
์ฒ์ ๊ฐ์ ํ๋ฉด root ์ฌ์ฉ์๋ก ์ฌ์ฉ์ ํ๊ฒ ๋๋๋ฐ,
์ผ์์ ์ธ ์์
์ด๋ ๊ด๋ฆฌ ์์
์ด๋ ๋ฃจํธ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์
-> IAM USER
IAM ๊ฒ์ -> ์ฌ์ฉ์ -> ์ฌ์ฉ์ ์ถ๊ฐ -> ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์ ์์ธ์ค -> ๊ถํ์ค์ (๊ธฐ์กด ์ ์ฑ ์ง์ ์ฐ๊ฒฐ) -> AdministratorAccess-AWSElasticBeanstalk(AWSElasticBeanstalkFullAccess์์ ์ด๋ฆ ๋ฐ๊ผ์) -> ์ฌ์ฉ์ ๋ง๋ค๊ธฐ
๊ทธ๋ฌ๋ฉด ์์ธ์ค ํค, ๋น๋ฐ ์์ธ์ค ํค ๋์ค๋๋ฐ ์์ด๋ฒ๋ฆฌ๋ฉด ์๋จ!! ๋ํ ๊นํ๋ธ์ ์ฌ๋ฆฌ์ง ์๋๋ก ์ฃผ์
Travis CI์ ํด๋น repository์ settings์์ ํ๊ฒฝ๋ณ์์ ํด๋น ํค๋ค ๋ฃ์ด์ค
access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_ACCESS_KEY
๊ทธ๋ค์ .travis.yml์ ํด๋น ๋ฌธ๊ตฌ ์ถ๊ฐ
๊นฐ๊ผผํ๊ฒ ์ฑ๊ณต
Dockerfile์ ํฌํธ ๋ฒํธ๋ ์ถ๊ฐํด์ฃผ๋ฉด ์๋ฒฝํ๋ค
EXPOSE 80
์๋ฌ ์์ด ๊ตฟ~