티스토리 뷰
이번 동아리 프로젝트에서 배포와 ci/cd 연동을 내가 하기로 하였는데 고민끝에 배포환경은 aws 프리티어와 ci/cd 구축은 github action을 사용하기로 하였다.
이번 프로젝트를 배포하며 배포 과정 그리고 ci/cd의 개념에 대하여 알게되는 좋은 계기가 되었다. 물론 ec2 인스턴스를 한 네번정도 만들어보면서 깨달음 ㅎㅎ
그럼 처음으로 github action 연동에 대하여 정리하여보자
CI/CD 란?
CI - Continuous Intergration (지속적인 통합)
CD - Continuous Deliver, Continuous Deployment (지속적인 배포)
를 뜻하며 개발자들이 코드를 수정하고 통합하고 그리고 수정본을 배포하는 과정을 자동화하여 불필요한 공수를 줄이고 보다 빠른 서비스를 제공할 수 있는 효과를 가질 수 있다.
ci/cd 구축을 지원하는 툴에는
-
JenKins
-
Travis CI
-
Circle CI
-
Google Cloud Build
-
AWS CodeBuild
-
Github Action
등 다양하게 존재한다
이 중에서 나는 Github Action을 사용하여 구축을 할 예정이다.
Github Action 이란?
github actiondms 18년에 공개되어 베타 테스트를 거쳐 19년 부터 서비스를 하고있는 최신 기술이다
github action은 ci/cd만을 위한 도구는 아니고, 다양한 workflow를 작성할 수 있다. 또한 이는 github 자체에서 제공하는 기능이기 때문에
다른 툴을 사용하는 것보다 관리해야할 포인트가 줄어드는 장점이 있다
그럼 프로젝트에 ci/cd를 위한 github action을 연동해보자
사용법은 간단하다 프로젝트의 루트디렉토리에 .github/workflows 디렉토리에 yml 파일을 생성한다
# This is a basic workflow to help you get started with Actions
name: Spring Boot CI/CD
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches:
- master
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build:
# 실행 환경 지정 - latest 보다는 지정된 버전을 사용하는 것 추천
runs-on: ubuntu-18.04
# Task의 sequence를 명시한다.
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew :aws-application:clean :aws-application:build
-위 코드를 간단히 설명하자면 master branch에 push가 들어왔을 때 우분투에서 자바 실행 환경을 설치 후 빌드를 해주는 플로우이다
-우분투는 latest 보다는 정확한 버전을 명시하여주는 것이 나중에 엉키지 않다고 팀원님이 조언해주셔서 버전을 명시해줬다
그 후 commit push를 하면
잘 작동되는 것을 확인 할 수 있다
다음편에서는 s3로 배포 파일 이관하는 법에 대하여 포스팅을 해야겠다
**) 잘못된 정보가 있을 수 있습니다. 언제든지 조언해주세요!!
'Infra > AWS' 카테고리의 다른 글
[AWS] - github action과 aws codedeploy를 이용하여 자동 배포하기(3) (0) | 2020.07.31 |
---|---|
[AWS] - github action과 aws codedeploy를 이용하여 자동 배포하기(2) (0) | 2020.07.23 |
[AWS]-RDS 인스턴스 생성하기 (0) | 2020.07.23 |
[AWS] - Docker Mysql 컨테이너 AWS에 배포하기 (0) | 2020.05.27 |