여러 명의 개발자들이 협업하면 자연스럽게 서로의 코드를 합치는 작업이 빈번하게 일어나요. CI/CD는 코드를 합치는 merge 과정에서 코드에 문제가 없는지, 빌드는 잘 되는지 등을 자동으로 확인하고, 자동화된 배포를 진행하는 과정이예요. GitHub Actions는 이를 도와주는 도구로, 이번 주차에는 직접 YAML 파일을 작성하며 CI/CD를 구성해봐요.

공부할 내용 📚

1. YAML

DevOps에서 자주 쓰이는 YAML 파일의 기본 문법을 배워봅니다.

참고 자료

2. GitHub Actions

DevOps의 핵심인 CI/CD가 무엇인지 이해하고, GitHub Action을 이용해서 CI/CD를 구성하는 방법을 배워봅니다.

  • CI/CD의 개념과 과정을 이해합니다.
  • GitHub Actions의 구성 요소를 알아봅니다. (workflows, events, jobs, actions)
  • GitHub Actions의 문법을 이해하고 workflow를 직접 작성해봅니다.
  • GitHub Action에서 secret을 관리하는 방법을 알아봅니다.

참고 자료

프로젝트 실습 🎈

총 두 개의 workflow를 작성합니다.

1. ci.yml

  • CodeQL을 이용해서 코드의 취약점을 검사해볼 거예요.
  • main branch에 push되거나 Pull Request가 생성되었을 때 workflow를 실행해야 해요.
  • workflow가 실행되면, CodeQL을 이용해서 JavaScript 코드의 취약점을 검사해요.
  • 참고 자료: “컨테이너에서 CodeQL 코드 검사 실행”

2. cd.yml

main branch에 push되었을 때 workflow를 실행해야 해요. 총 세 개의 job을 실행합니다.

Job 1: AWS S3 Sync

  • HTML, CSS, JS 파일을 S3에 업로드해요.
  • GitHub Actions에서 AWS에 접근할 수 있도록 IAM User를 만들어주세요.
  • 이 플러그인으로 로그인 해주세요: aws-actions/configure-aws-credentials
  • OpenID Connect를 이용해서 AWS에 로그인해야 해요. (중요!)
  • aws s3 sync 명령어를 이용해서 파일을 업로드해요.

Job 2: Update ECS

  • 6주차 실습 내용대로 Node.js 이미지를 만들고, AWS ECR로 push합니다.
  • Job 1과 마찬가지로 OpenID Connect를 이용해서 AWS에 로그인 해주세요.
  • 이 플러그인으로 ECR에 로그인해주세요: aws-actions/amazon-ecr-login
  • 이 플러그인으로 Docker를 빌드해주세요: docker/build-push-action

Job 3: Terraform apply

  • Terraform 파일에 변경된 내용을 적용해요.
  • Job 1, 2가 성공적으로 끝난 이후에 실행되어야 해요.
  • Job 1, 2와 마찬가지로 OpenID Connect를 이용해서 AWS에 로그인 해주세요.
  • Terraform Backend로 S3를 사용하세요. (중요!)
  • 이 플러그인으로 Terraform을 실행해주세요: hashicorp/setup-terraform