On this page
8. GitHub Actions
여러 명의 개발자들이 협업하면 자연스럽게 서로의 코드를 합치는 작업이 빈번하게 일어나요. CI/CD는 코드를 합치는 merge 과정에서 코드에 문제가 없는지, 빌드는 잘 되는지 등을 자동으로 확인하고, 자동화된 배포를 진행하는 과정이예요. GitHub Actions는 이를 도와주는 도구로, 이번 주차에는 직접 YAML 파일을 작성하며 CI/CD를 구성해봐요.
공부할 내용 📚
1. YAML
DevOps에서 자주 쓰이는 YAML 파일의 기본 문법을 배워봅니다.
참고 자료
- 쿠버네티스 안내서 “YAML 문법”: 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을 관리하는 방법을 알아봅니다.
참고 자료
- CI/CD란 무엇일까?: CI/CD의 개념과 과정을 정리한 글입니다.
- Dalseo “GitHub Actions의 소개와 핵심 개념”: GitHub Actions의 개념과 구성 요소를 정리한 글입니다.
- Dalseo “GitHub Actions 첫 워크플로우 생성해보기”: GitHub Actions의 workflow를 작성하는 방법을 정리한 글입니다.
- “Secrets으로 환경변수 사용”: GitHub Actions에서 secret을 사용하는 방법을 정리한 글입니다.
프로젝트 실습 🎈
총 두 개의 workflow를 작성합니다.
코드당 repository를 참고하면 도움이 될 거예요!
https://github.com/skkuding/codedang/tree/main/.github/workflows
https://github.com/skkuding/codedang/tree/main/.github/workflows
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