티스토리 뷰
개요
CI, CD 라고 한다. Continuous Integration / Continuous Delivery (또는 Deployment)
Lint, Test 등도 포함되겠지만 여기서는 씸플하게 최소한 만을 적용해본다.
1) Local PC 에서 golang 웹서버를 만들고, 추가 Feature 를 구현할때마다 Github 에 push 하면 2) Github 와 연결된 Travis-CI 에서 자동으로 빌드가 되고, 그 결과를 볼 수 있으며 → CI 3) 다시 Github 와 연결된 Heroku app 으로 자동 배포된다. → CD |
즉, Local PC 에서 구현한 수정사항을 Github 에 push 하기만 하면,
빌드가 되고 - 더해서 Lint, Test 까지 하게 할 수 있으며 - 실제 서비스까지 업데이트 되는 것이다.
참고 링크: https://www.sauru.so/blog/travis-ci/
참고 링크2: https://www.melvinvivas.com/configuring-travis-ci-with-go-projects/
Travis CI
다시 한 번, 우리가 만들려는 프로세스를 정리해본다.
1) Local PC 에서 변경 2) Github 에 push 3) Github → Travis CI 로 trigger (연결은 미리 설정해둠) 4) Travis CI 의 자동 build 5) 설정에 따라 heroku deploy (and / or) Slack notification |
구현한 코드는 아래와 같다.
- Dependency 관리를 위한 Go modules 는 이전 포스팅 참고: https://jusths.tistory.com/68
- Github Repository: https://github.com/nicewook/go_modules_test
Github 와 Travis CI 연결하기
1) https://travis-ci.com 에서 github.com 계정으로 로그인 (= Github 와 연결)
2) 프로젝트의 최 상위 디렉토리에 아래와 같이 .travis.yml 파일 생성 후 git add, commit 한 다음, push 하면 끝이다.
- Travis-CI 에게 golang 을 쓰며 그 버전은 1.11 대 라고 알려주는 것이 전부이다.
git push 하면 무슨 일이 생기는가
먼저 Github 의 repository 에서 commit 을 보면 아래와 같이 (물론 Build 성공시에만) 초록색 체크가 보이며,
이를 클릭해보니 Travis-CI 가 Build Passed 되었다고 알려준다.
Travis-CI 사이트에서 빌드 로그를 볼 수도 있다.
- 좌측에는 최근의 빌드 결과들이 나오고
- 우상단에는 빌드 정보들, 우하단에는 빌드 로그정보들이 보인다.
매 빌드의 결과를 Github Repository 의 README.md 에 표시해주는 방법은
- Travis-CI 의 build/passing 버튼을 클릭해서 나오는 팝업에서
- 두 번째 칸의 Markdown 을 선택하여 나오는, 세 번째 칸의 내용을
- Github 의 README.md 에 붙여넣으면 된다.
아래와 같이 최종 빌드 결과가 표시된다.
Heroku
참고 링크: https://medium.com/@felipeluizsoares/automatically-deploy-with-travis-ci-and-heroku-ddba1361647f
1) 로컬에서 수정 → Github 로 push → Travis-CI 가 빌드하여 build / passing 하였다.
2) 이제 build / passing 한 버전을 Heroku 에서 서비스되고 있는 App 에서 자동 배포되게 하고 싶다.
설정하기
1) 이미 Heroku ( https://www.heroku.com ) 에는 가입되어 있다고 할 때에
2) https://dashboard.heroku.com/apps 페이지에서 New >> Create new app 을 선택한다.
3) App 이름을 만들어준다. 여기서는 go-modules-test 라고 만들었다.
- 나중에 서비스 되는 url 주소가 된다. https://go-modules-test.herokuapp.com/
- underscore (_)는 쓸 수 없으며 dash (-) 는 가능하다.
4) 이제 디테일한 설정을 해줘야 하는데 별 거 없다.
- Github 를 이용하여 deploy 하겠다고 선택하고
- Github 에서 원하는 특정 repository 의 특정 branch 를 선택
- 마지막으로 특정 branch 에서 Automatic deploy 하겠다고 해주면 된다.
→ 이때 Wait for CI to pass before deploy 를 체크해서, Travis-CI 가 build / passing 한 경우만 deploy 하도록 해준다.
마지막으로
실제로 소스를 조금 고쳐서 git push 하여 CI / CD 가 이루어지는지 확인해보자.
- response message (여기서는 Hello justHS!) 를 고쳐보는게 가장 쉬울 듯 하다.
진짜 마지막으로
Local PC 의 repository 를 Heroku 에 연결해두면 log 를 보거나 다양한 작업이 용이하다.
1) heroku cli 에서 앱이랑 연결하기
- 아래의 go-modules-test 대신 연결을 원하는 app 이름을 넣어주면 된다.
heroku git:remote -a go-modules-test
2) 로그를 보려면 아래 명령어
heroku logs --tail
'golang' 카테고리의 다른 글
Slack slash command + Golang server (0) | 2019.02.12 |
---|---|
time.Sleep, time.Duration (0) | 2019.02.11 |
Go Modules (0) | 2019.02.07 |
Golang: io.ReadWriter 의 content 를 날려먹지 않는 법 (1) | 2019.01.28 |
git bash / vim / vim-plug / vim-go - in Windows 10 (0) | 2019.01.17 |
- Total
- Today
- Yesterday
- OpenAI
- golang
- Bug
- notion
- bun
- JIRA
- github
- websocket
- 독서
- 체호프
- 영화
- API
- 클린 애자일
- intellij
- go
- 인텔리제이
- 잡학툰
- Gin
- 독서후기
- 제이펍
- strange
- pool
- solid
- agile
- postgres
- 노션
- 2023
- Shortcut
- ChatGPT
- folklore
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |