-
1월 21일, 26일 - 웹 사이트 만들기(14) - eb에 github aciton로 자동배포하기공부/웹 사이트 개발(끝) 2021. 1. 21. 21:37
코드를 마스터에 올리면 자동으로 배포되는 것을 알아보려고 한다.
github action이란?
girhub action은 우리의 workflow를 자동화 해주는 tool이다.
(공식홈페이지 - GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the way you want.)
자동으로 빌드, 테스트, 배포 등을 해주는 툴인데 일단 이번엔 자동으로 배포해주는 것만 알아보겠다.
docs.github.com/en/actions/learn-github-actions/introduction-to-github-actions
위 링크 번역하면서 공부했음
Overview
github action은 SW 개발 라이프 사이클의 자동화를 돕는다. github actions은 이벤트 드리븐이다. 이것은 특정 이벤트가 발생한 후에 연속적된 명령어들을 실행할 수 있음을 의미한다. 예를들어 레포지토리에 누군가 매번 pr을 생성할 때마다 자동적으로 SW 테스트 스크립트를 실행하도록 할 수 있다.
아래의 다이어그램은 SW 테스팅 스크립트를 자동으로 돌리는 github action에 대한 설명이다. 이벤트가 job을 가지고 있는 workflow를 발생시킨다. job은 step의 순서대로 action을 제어한다. 이러한 action들은 자동으로 sw 테스팅을 하는 명령어를 의미한다.
구성요소
workflows
워크플로우는 레포에 추가한 자동화된 절타이다. workflows는 최소한 하나의 job으로 구성되며, 이벤트에 의해 예약된거나 트리거 될 수 있다. workflow는 빌드, 테스트, 패키지, 릴리즈, 배포 등에 사용된다.
Events
workflow를 유발시키는 특정 행동이다. 예를들어 누군가 커밋을 레포에 푸시했을 때라든지, 이슈나 pr이 생성됐을 때 등이 있다.
Job
job은 same runner를 실행하는 step의 set이다. 기본적으로 여러개의 jobs를 가진 workflow는 job을 병렬적으로 run한다.
Steps
step은 job안에서 명령어를 실행하는 개별적인 task이다.
Actions
명령어 그 자체이며, step에서 결합되어 job을 만들어낸다.
Reunners
runner는 github action runner app이 설치된 서버이다.
Workflow 만들기
name: learn-github-actions on: [push] jobs: check-bats-version: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 - run: npm install -g bats - run: bats -v
위와같은 workflow 파일이 있다고 할 때
name: learn-github-actions
워크플로우의 이름이다.
on: [push]
워크플로우를 발생시키는 이벡트 이름이다. 이렇게 하면 push 이벤트가 발생할 때마다 job이 실행된다. 특정 브랜치, 경로, 태그에서만 발생시키게도 할 수 있으며 자세한 내용은 - docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestpaths
jobs:
이 워크플로우에서 실행되는 job들의 그룹이다
check-bats-version
job의 이름이다.
runs-on: ubuntu-latest
이 job이 ubuntu linux runner에서 실행됨을 의미한다. fresh virtual machine hosted by GitHub에서 실행된다고 한다.
steps:
check-bats-version job에서 실행되는 step들의 그룹이다.
uses: action/checkout@v2
커뮤니티 action인 checkout의 v2 버전을 사용할 것이라고 job에게 알려준다. 이 액션은 레포지토리를 체크아웃하고 runner로 레포를 다운로드한다.(암튼 필수인 듯 잘 번역이 안댐)
uses: actions/setup-node@v1
이 액션은 node sw 패키지를 runner에 설치하는데 이후에 npm 커맨드를 사용할 수 있게 된다.
run: npm install -g bats
run 키워드는 job에게 runner에서 이 명령어를 실행하라고 말해준다.
run: bats -v
bats의 버전을 보여준다.
medium.com/commutatus/deploy-to-beanstalk-using-github-actions-20c03e094bf9보고 다시해보기
아오... 결국엔 실패...
위에 글에 있는 yml이 뭔가 복잡해 보여서 그냥 공부한 거 기반으로 해보려고 했는데 알고보니 결국엔 다 필요한 내용이었음.
계속 해도 안되길래, eb cli로 하는 action으로 시도해 봤는데 이놈도 안됨... 심지어 정보도 너무 없음
근데 action을 어떻게 쓰는지는 알겠는데 정확히는 eb에 대한 이해가 부족했음
action에 대해서 배운 것 중에 하나는 들여쓰기를 주의해야 한다는 것(당연히 상관 없을줄 알았는데...)
에러 내용은 .bin 폴더에 next가 없다고 cloudWatch에서 뜨는데... 로그를 살펴보면 action을 통해서 .bin/next가 생성이 되었는디.... 도대체 왜때문에,...?
지금 추측하는 건 eb에서 파일로 올리는 방식이랑 eb edploy를 쓰는 방식이 다른게 아닐까라는 생각밖에 안 드는데 그런 내용은 없었는디... 흠...
'공부 > 웹 사이트 개발(끝)' 카테고리의 다른 글
1월 19일 - 웹 사이트 만들기(13) - eb 배포 next build 없이, node_modules이 없어도 올릴 수 있도록 (0) 2021.01.19 1월 18일 - 웹 사이트 만들기(12) - 백엔드 .js 파일 안 보이게 하기 (0) 2021.01.18 1월 17일 - 웹 사이트 만들기(11) - 환경변수 사용해서 로컬, 프로덕션 설정 다르게 하기/주요 값을 코드에서 관리하지 않기 (0) 2021.01.17 1월 14~16일 - 웹 사이트 만들기(10) - elastic beanstalk에 배포하기 (0) 2021.01.14 1월 11~12일 - 웹 사이트 만들기(9) - reactstrap, graphql 요청, jwt 토큰 (1) 2021.01.11