ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๊ฐ•์˜] ๋”ฐ๋ผํ•˜๋ฉฐ ๋ฐฐ์šฐ๋Š” ๋„์ปค์™€ CIํ™˜๊ฒฝ -5
    STUDY/CLOUD 2022. 6. 21. 20:25

    ๐ŸŽˆ๊นƒ์— ํ”„๋กœ์ ํŠธ ์˜ฌ๋ฆฌ๊ธฐ

    ํด๋”๋กœ ์ด๋™ -> 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๋“ฑ๊ณผ ํ•จ๊ป˜ ์„œ๋น„์Šค ๋ฐฐํฌ, ํ™•์žฅ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•จ

    EB์•„๋ž˜์—์„œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ผ ๊ด€๋ฆฌํ•จ

    - ์ƒ์„ฑํ•˜๊ธฐ

    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

    ์—๋Ÿฌ ์—†์ด ๊ตฟ~

Designed by Tistory.