diff --git a/content/docs/infra/2. Express.js.md b/content/docs/infra/2. Express.js.md index d5cdbfa..2b36a54 100644 --- a/content/docs/infra/2. Express.js.md +++ b/content/docs/infra/2. Express.js.md @@ -81,6 +81,8 @@ Express.js의 다음 개념을 공부해봅니다. - API 응답을 테스트해볼 때, [Postman](https://www.postman.com/)이나 [Hoppscotch](https://hoppscotch.io/) 같은 도구를 사용하는 걸 추천드립니다. - 아래와 같은 endpoint들을 구현해보세요. + + ### `GET /` HTML 파일을 수정 없이 그대로 반환합니다. (assets/week2.html) diff --git a/content/docs/infra/7. Terraform.md b/content/docs/infra/7. Terraform.md index d54822e..18b1a8a 100644 --- a/content/docs/infra/7. Terraform.md +++ b/content/docs/infra/7. Terraform.md @@ -2,8 +2,8 @@ title = "7. Terraform" description = "프로비저닝 도구인 Terraform에 대해 알아봅니다." icon = "article" -date = "2023-09-11" -lastmod = "2023-10-05" +date = "2023-11-09" +lastmod = "2023-11-09" weight = 370 +++ diff --git a/content/docs/infra/8. GitHub Actions.md b/content/docs/infra/8. GitHub Actions.md index bf0fc0c..1539fea 100644 --- a/content/docs/infra/8. GitHub Actions.md +++ b/content/docs/infra/8. GitHub Actions.md @@ -2,8 +2,8 @@ title = "8. GitHub Actions" description = "CI/CD 도구인 GitHub Actions에 대해 알아봅니다." icon = "article" -date = "2023-09-11" -lastmod = "2023-10-05" +date = "2023-11-16" +lastmod = "2023-11-16" weight = 380 +++ @@ -11,33 +11,68 @@ weight = 380 ## 공부할 내용 📚 -### 1. GitHub Actions +### 1. YAML + + + +DevOps에서 자주 쓰이는 YAML 파일의 기본 문법을 배워봅니다. + +#### 참고 자료 + +- **[쿠버네티스 안내서 "YAML 문법"](https://subicura.com/k8s/prepare/yaml.html)**: YAML의 기본 문법을 정리한 글입니다. + +### 2. GitHub Actions DevOps의 핵심인 CI/CD가 무엇인지 이해하고, GitHub Action을 이용해서 CI/CD를 구성하는 방법을 배워봅니다. - CI/CD의 개념과 과정을 이해합니다. -- GitHub Actions를 사용하기 전, YAML 파일의 기본 문법을 이해합니다. -- GitHub Actions의 구성 요소를 알아봅니다. (workflows, events, jobs, actions, runners) +- GitHub Actions의 구성 요소를 알아봅니다. (workflows, events, jobs, actions) - GitHub Actions의 문법을 이해하고 workflow를 직접 작성해봅니다. - GitHub Action에서 secret을 관리하는 방법을 알아봅니다. -- AWS와 GitHub Action 사이의 OIDC(OpenID Connect) 인증 과정을 이해합니다. #### 참고 자료 -> TODO: 자료 추가 +- **[CI/CD란 무엇일까?](https://jud00.tistory.com/entry/CICD%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C)**: CI/CD의 개념과 과정을 정리한 글입니다. +- **[Dalseo "GitHub Actions의 소개와 핵심 개념"](https://www.daleseo.com/github-actions-basics/)**: GitHub Actions의 개념과 구성 요소를 정리한 글입니다. +- **[Dalseo "GitHub Actions 첫 워크플로우 생성해보기"](https://www.daleseo.com/github-actions-first-workflow/)**: GitHub Actions의 workflow를 작성하는 방법을 정리한 글입니다. +- **["Secrets으로 환경변수 사용"](https://wooono.tistory.com/693)**: GitHub Actions에서 secret을 사용하는 방법을 정리한 글입니다. ## 프로젝트 실습 🎈 총 두 개의 workflow를 작성합니다. -### 1. `ci.yml` +{{< alert context="info" text="코드당 repository를 참고하면 도움이 될 거예요!
https://github.com/skkuding/codedang/tree/main/.github/workflows" />}} + +### 1. ci.yml + +- CodeQL을 이용해서 코드의 취약점을 검사해볼 거예요. +- `main` branch에 push되거나 Pull Request가 생성되었을 때 workflow를 실행해야 해요. +- workflow가 실행되면, CodeQL을 이용해서 JavaScript 코드의 취약점을 검사해요. +- 참고 자료: **["컨테이너에서 CodeQL 코드 검사 실행"](https://docs.github.com/ko/enterprise-server@3.10/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/running-codeql-code-scanning-in-a-container)** + +### 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](https://github.com/aws-actions/configure-aws-credentials) +- **OpenID Connect를 이용해서 AWS에 로그인해야 해요. (중요!)** +- `aws s3 sync` 명령어를 이용해서 파일을 업로드해요. -> TODO: 자세한 내용 추가 +#### Job 2: Update ECS -### 2. `cd.yml` +- 6주차 실습 내용대로 Node.js 이미지를 만들고, AWS ECR로 push합니다. +- Job 1과 마찬가지로 OpenID Connect를 이용해서 AWS에 로그인 해주세요. +- 이 플러그인으로 ECR에 로그인해주세요: [aws-actions/amazon-ecr-login](https://github.com/aws-actions/amazon-ecr-login) +- 이 플러그인으로 Docker를 빌드해주세요: [docker/build-push-action](https://github.com/docker/build-push-action) -Dockerfile을 이용해서 지난 주차의 Node.js 이미지를 build하고, ghcr.io로 push합니다. -(예: `ghcr.io/dotoleeoak/skkuding-infra:latest`) +#### Job 3: Terraform apply -아래 링크처럼 GitHub Container Registry에 이미지가 잘 올라갔는지 확인해보세요. -https://github.com/skkuding/codedang/pkgs/container/codedang-client-api +- Terraform 파일에 변경된 내용을 적용해요. +- Job 1, 2가 성공적으로 끝난 이후에 실행되어야 해요. +- Job 1, 2와 마찬가지로 OpenID Connect를 이용해서 AWS에 로그인 해주세요. +- **Terraform Backend로 S3를 사용하세요. (중요!)** +- 이 플러그인으로 Terraform을 실행해주세요: [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform)