Image for post
Image for post

반복되는 Github 초기 세팅

Label 세팅

Issue, PR Template 세팅

한방에 해결

아래 내용을 바탕으 …


Image for post
Image for post

alias 설정 이유

  • 상대 경로로 지저분하게 설정되어 있는 경로를 깔끔하게 정리하기 위해서 alias를 사용합니다.

alias 설정 전

import { AuthResDto } from ‘../../src/auth/dto/response.dto’;
import { AuthService } from ‘../../src/auth/auth.service’;

alias 설정 후

import { AuthResDto } from ‘@auth/dto/response.dto’;
import { AuthService } from ‘@auth/accounts.service’;

프로젝트 구조

  • NestJS를 이용해서 만든 프로젝트의 기본 구조의 대략적으로 아래와 같습니다.
./
├── package.json
├── src …


Image for post
Image for post

라이브러리를 찾게 된 계기

- 위에서도 언급했지만, app.yaml 파일에 env_variables 항목이 이미 있는 경우에는 정상적으로 동작하지 않습니다.

- 이미 존재하는 환경변수도 함께 사용할 수 있는 방식으로 보완하면 더 좋을 것 같습니다.

  • Google App Engine으로 작업을 하다가 env_variables 이 외에 또! 유동적으로 추가해줘야 될 부분이 생겼습니다. 그래서 ‘스크립트를 범용적으로 수정해야 되나’ 하고 생각하다가, 혹시나 하고 …


Image for post
Image for post

Bitbucket Pipelines로 Google App Engine에 자동 배포 시 안전하게 환경변수를 추가하는 방법을 소개합니다.

개발/배포 환경

  • 서버 : Google App Engine
    - runtime : custom
    - env: flex
  • 소스 관리 : Bitbucket
  • CI/CD 툴 : Bitbucket Pipelines

문제점

  • 일반적으로 Google App Engine 설정 파일 (app.yaml)에 환경 변수를 추가하는 방법은 env_varibles 항목에 key:value 형태로 평문 그대로 저장하는 방식입니다.
  • app.yaml 파일에 API Key, Auth Token 등의 노출되면 안되는 정보들이 그대로 노출됩니다.
  • app.yaml 파 …


Image for post
Image for post

새롭게 시작하는 프로젝트에 적용 한 CI/CD 구축 과정을 소개해 보려고 합니다.

개발/배포 환경

  • 서버 : Google App Engine
  • 소스 관리 : Bitbucket
  • CI/CD 툴 : Bitbucket Pipelines

사전 준비

  • GCP에서 프로젝트를 위한 App Engine 생성
  • 프로젝트에 App Engine 배포를 위한 기본 설정 파일(app.yaml) 생성
  • Bitbucket에 프로젝트 소스 저장

GCP IAM 서비스 계정 생성

  • GCP 콘솔에서 IAM 및 관리자 > 서비스 계정 페이지로 이동


Image for post
Image for post

프로젝트 세팅

개별 repository 만들기

  • project-name
  • project-name-client
  • project-name-server

루트 프로젝트 clone

git clone https://github.com/<GITHUB_ID>/project-name.git

submodule 등록

cd project-name
git submodule add -b master https://github.com/<GITHUB_ID>/project-name-client.git client
git submodule add -b master https://github.com/<GITHUB_ID>/project-name-server.git server
  • client, server 폴더와 .gitmodules 파일이 생성 됨
  • 변경 된 내용을 comm …


Image for post
Image for post

기존 서비스 배포 시 프로세스의 불편함 점을 파악하고 개선하기 위해 도입한 과정을 총 3편에 걸쳐서 소개하려고 한다.

  1. 문제점 파악 및 개선방안
  2. AWS ECS 설정
  3. Circle CI 설정 및 자동 배포 적용

Circle CI 설정

사전 조건

회원가입


Image for post
Image for post

기존 서비스 배포 시 프로세스의 불편함 점을 파악하고 개선하기 위해 도입한 과정을 총 3편에 걸쳐서 소개하려고 한다.

  1. 문제점 파악 및 개선방안
  2. AWS ECS 설정
  3. Circle CI 설정 및 자동 배포 적용

AWS ECS 설정

  • AWS > 서비스 > Amazon ECS 메뉴를 선택해서 ECS 서비스 화면으로 이동

클러스터 생성

  • 클러스터 생성

Image for post
Image for post

기존 서비스 배포 시 프로세스의 불편함 점을 파악하고 개선하기 위해 도입한 과정을 총 3편에 걸쳐서 소개하려고 한다.

  1. 문제점 파악 및 개선방안
  2. AWS ECS 설정
  3. Circle CI 설정 및 자동 배포 적용

기존 서비스 배포 시 프로세스

Local 개발

  • 기능 개발/수정
  • Docker 서버를 띄워서 개발/수정 한 부분 확인
  • Github에 Push

Code Review

  • Develop branch에 merge 하기 위한 PR 생성
  • Reviewer가 Code Review 진행
  • Reviewer의 Local에서 Docker 서버를 띄움
  • 패키지 업데이트, 환경 변수 수정, DB 마이그레이션 등 반영 된 부분 실행
  • 개발/수정 한 부분 확인
  • 이상이 없는 경우 merge 승인

Dev 배포

  • Dev 서버에 ssh로 접속
  • Github에서 Deve …

Image for post
Image for post

글의 목표

Docker 기반의 서비스를 AWS ECS에 배포할 수 있는 CI/CD 툴을 찾는 것을 목표로 한다.

필수 사항은 다음과 같다.

  • Cloud 기반
  • Github과의 연동 가능
  • DockerHub에 컨테이너 이미지 업로드 가능
  • AWS ECS에 배포 가능
  • 무료 또는 저렴한 가격

기본 개념

CI/CD 란?

CI(Continuous Integration) : 지속적인 통합

  • 추가/변경 된 코드를 자동으로 빌드 한 후 테스트
  • 테스트에 통과한 경우에만 공유 리포지토리에 병합
  • 여러 명의 개발자가 동시에 코드 작업을 할 때 서로 충돌할 수 있는 문제를 해결

CD(Continuous Delivery or Deployment) : 지속적인 제공 또는 배포

  • 지속적인 제공
    - 개발자들이 적용한 변경 사항이 CI 과정을 거쳐 리포지토리에 자동으로 업로드 …

modolee

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store