Conversation
- AI 서비스 URL 설정 수정 - nginx 프록시 설정 추가 - 헬스체크 엔드포인트 연동 확인
- FastAPI AI 서비스 전용 EC2 인스í� - VPC 내부 통신을 위한 Pri5.114) 활용 - Spring Boot ↔ FastAPI 간 네트워크 분리로 성능 및 확장성 향상 - AI 워크로드와 백엔드 워크로드 독립적 관리 가능
- GHCR_TOKEN 기반 인증으로 통일 - VPC 내부 통신 환경변수 설정 완료 - Docker 헬스체크 경로 및 토큰 수정 - 한국어 특화 AI 모델 운영 환경 최적화
|
Warning Rate limit exceeded@23MinL has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 5 minutes and 52 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (2)
""" WalkthroughCI/CD 및 Docker 관련 워크플로우가 대폭 개편되어, 개발 환경 배포가 제거되고 프로덕션 배포가 EC2에서 실서비스로 동작하도록 변경되었습니다. 새로운 프로덕션 Docker Compose 파일이 추가되었으며, 환경 변수 관리, 로그 및 설정 파일 경로, 네트워크 설정 등이 재정비되었습니다. 불필요한 개발용 파일과 성능 테스트 워크플로우가 삭제되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant GitHub Actions
participant EC2(Prod)
participant Docker Compose
participant FastAPI Service
GitHub Actions->>EC2(Prod): SSH 접속 및 배포 스크립트 실행
EC2(Prod)->>Docker Compose: 최신 코드 pull 및 docker compose up
Docker Compose->>FastAPI Service: 컨테이너 실행 및 헬스체크
GitHub Actions->>FastAPI Service: 헬스체크 API 호출 및 벡터 인덱스 상태 확인
FastAPI Service-->>GitHub Actions: 상태 응답 (벡터 개수 등)
GitHub Actions->>GitHub: 배포 성공/실패 알림 및 실패시 이슈 자동 생성
Possibly related PRs
Suggested reviewers
Poem
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
.github/workflows/ci-cd.yml (1)
154-266: YAML 형식 오류를 수정해 주세요.정적 분석에서 발견된 trailing spaces와 파일 끝 개행 문자 누락을 수정해야 합니다.
다음 명령으로 형식 오류를 수정할 수 있습니다:
# 각 해당 라인에서 trailing spaces 제거 - echo "🚀 FastAPI AI 서비스 배포 시작" + echo "🚀 FastAPI AI 서비스 배포 시작" # (기타 trailing spaces 제거) # 파일 끝에 개행 문자 추가 - }) + }) +.github/workflows/docker-health-check.yml (1)
35-131: YAML 형식 오류를 수정해 주세요.정적 분석에서 발견된 trailing spaces와 파일 끝 개행 문자 누락을 수정해야 합니다.
다음과 같이 수정하세요:
# Trailing spaces 제거 - # Docker 디렉토리 내에 config 폴더 생성 + # Docker 디렉토리 내에 config 폴더 생성 # (기타 trailing spaces 제거) # 파일 끝에 개행 문자 추가 - echo "4. Monitor deployment: docker compose ps && docker compose logs" + echo "4. Monitor deployment: docker compose ps && docker compose logs" +
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
.github/workflows/ci-cd.yml(3 hunks).github/workflows/docker-health-check.yml(4 hunks).github/workflows/performance-test.yml(0 hunks)app/core/config.py(1 hunks)docker-compose.development.yml(0 hunks)docker/docker-compose.prod.yml(1 hunks)docker/docker-compose.yml(2 hunks)
💤 Files with no reviewable changes (2)
- docker-compose.development.yml
- .github/workflows/performance-test.yml
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/performance-test.yml:0-0
Timestamp: 2025-07-09T16:20:20.321Z
Learning: 23MinL은 성능 테스트 환경에서 의존성 버전 고정을 통해 재현성과 일관성을 확보하는 것을 중요하게 여긴다. GitHub Actions 성능 테스트 워크플로우에서 locust, requests, fastapi, uvicorn 등의 패키지를 정확한 버전으로 고정하여 예기치 않은 빌드 실패를 방지하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
docker/docker-compose.prod.yml (2)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
docker/docker-compose.yml (4)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.development.yml:0-0
Timestamp: 2025-07-04T14:43:36.433Z
Learning: Docker Compose에서 컨테이너 내부 가상환경 디렉터리(/app/venv)를 호스트와 볼륨 매핑하면, 호스트의 빈 디렉터리가 컨테이너에서 빌드 시 설치된 패키지를 덮어써 버리는 문제가 발생할 수 있다. 개발 환경에서는 이런 볼륨 매핑을 제거하거나 명확한 목적이 있을 때만 사용해야 한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
.github/workflows/ci-cd.yml (7)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
.github/workflows/docker-health-check.yml (5)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
🪛 YAMLlint (1.37.1)
.github/workflows/ci-cd.yml
[error] 154-154: trailing spaces
(trailing-spaces)
[error] 160-160: trailing spaces
(trailing-spaces)
[error] 172-172: trailing spaces
(trailing-spaces)
[error] 181-181: trailing spaces
(trailing-spaces)
[error] 187-187: trailing spaces
(trailing-spaces)
[error] 190-190: trailing spaces
(trailing-spaces)
[error] 205-205: trailing spaces
(trailing-spaces)
[error] 210-210: trailing spaces
(trailing-spaces)
[error] 216-216: trailing spaces
(trailing-spaces)
[error] 243-243: trailing spaces
(trailing-spaces)
[error] 245-245: trailing spaces
(trailing-spaces)
[error] 252-252: trailing spaces
(trailing-spaces)
[error] 254-254: trailing spaces
(trailing-spaces)
[error] 256-256: trailing spaces
(trailing-spaces)
[error] 258-258: trailing spaces
(trailing-spaces)
[error] 260-260: trailing spaces
(trailing-spaces)
[error] 266-266: no new line character at the end of file
(new-line-at-end-of-file)
.github/workflows/docker-health-check.yml
[error] 35-35: trailing spaces
(trailing-spaces)
[error] 40-40: trailing spaces
(trailing-spaces)
[error] 53-53: trailing spaces
(trailing-spaces)
[error] 60-60: trailing spaces
(trailing-spaces)
[error] 107-107: trailing spaces
(trailing-spaces)
[error] 131-131: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test
- GitHub Check: test
🔇 Additional comments (11)
app/core/config.py (1)
55-64: 새로운 환경 설정 필드가 잘 구성되어 있습니다.Redis 설정과 개발 환경 제어를 위한 새로운 필드들이 적절한 기본값으로 추가되었습니다. VPC 환경으로의 전환과 프로덕션 중심 배포 방식에 잘 맞는 구성입니다.
docker/docker-compose.prod.yml (1)
10-10: 환경 파일 경로 변경이 적절합니다.환경 파일을 상위 디렉토리로 이동시켜 설정 관리를 중앙화하는 접근법이 CI/CD 워크플로우의 디렉토리 구조 개선과 일치합니다.
docker/docker-compose.yml (2)
9-9: 토큰 표준화가 적절합니다.
GHCR_TOKEN으로 통일하여 다른 워크플로우와 일관성을 유지하는 것이 좋습니다.
35-36: VPC 내부 Spring Boot 서비스 통신 URL 설정 확인 필요
docker/docker-compose.yml파일에서 기본값으로 설정된- SPRING_BOOT_BASE_URL=${SPRING_BOOT_BASE_URL:-http://10.0.X.X:8080}플레이스홀더가 실제 프로덕션 VPC 내부 IP(또는 적절한 내부 DNS)로 오버라이드되고 있는지 확인 부탁드립니다.
특히, 아래 위치에 정의된 환경 파일 또는 CI/CD 환경변수에서 올바른 값으로 설정되어야 합니다.• 파일:
docker/docker-compose.yml
– 라인 35–36:SPRING_BOOT_BASE_URL기본값 설정.github/workflows/ci-cd.yml (3)
97-97: Dockerfile 경로 업데이트가 적절합니다.Docker 관련 파일들을
docker/디렉토리로 체계적으로 정리하는 구조 개선이 좋습니다.
143-218: FastAPI EC2 SSH 배포 로직이 포괄적입니다.VPC 내부 통신을 위한 전체 배포 자동화가 잘 구성되어 있습니다. 헬스체크, 벡터 인덱스 상태 확인, 임베딩 재생성 등이 포함된 완전한 배포 프로세스입니다.
233-266: 배포 실패 시 자동 이슈 생성이 유용합니다.배포 실패 시 컨텍스트 정보와 함께 자동으로 GitHub 이슈를 생성하는 것이 모니터링과 대응에 도움이 됩니다.
.github/workflows/docker-health-check.yml (4)
29-29: 토큰 통일이 적절합니다.다른 워크플로우와 일치하도록
GHCR_TOKEN으로 표준화한 것이 좋습니다.
31-47: 설정 파일 구조 개선이 좋습니다.설정 파일을
docker/config/디렉토리로 체계적으로 정리하여 Docker 컨텍스트 내에서 관리하는 접근법이 적절합니다.
83-86: 환경 변수 보안 처리가 우수합니다.
sed 's/=.*/=<redacted>/'를 사용하여 민감한 환경 변수 값을 마스킹하는 것이 23MinL의 보안 중심 접근법과 일치합니다.
98-99: VPC 내부 통신 시뮬레이션이 적절합니다.FastAPI EC2 인스턴스와의 VPC 내부 통신을 위한 헬스체크 시뮬레이션이 아키텍처 변경에 맞게 업데이트되었습니다.
1000hyehyang
left a comment
There was a problem hiding this comment.
일단 머지 후 배포 과정에서 cicd 문제와 연동 문제가 생기지 않는지 확인해봅시다! 고생 많으셨습니다
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
.github/workflows/ci-cd.yml (2)
183-187: 원격 EC2 상에서 재빌드 대신 레지스트리 이미지 pull 권장CI 단계에서 이미
build-and-push로ghcr.io에 이미지를 푸시했습니다. 원격 서버에서 다시docker compose up -d --build로 소스 빌드하면 빌드 시간이 길어지고 이미지 해시가 달라 캐시 일관성이 깨집니다.- docker compose down || true - docker compose up -d --build + docker compose down || true + docker compose pull # 레지스트리 이미지 사용 + docker compose up -d
154-266: 후행 공백 다수 존재 – YAMLLint 오류154, 160, 172, 181, 187, 190, 205, 210, 216, 243, 245, 252, 254, 256, 258, 260 라인에 후행 공백이 있습니다. CI 상
yamllint실패를 방지하기 위해 제거하세요.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/ci-cd.yml(4 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/performance-test.yml:0-0
Timestamp: 2025-07-09T16:20:20.321Z
Learning: 23MinL은 성능 테스트 환경에서 의존성 버전 고정을 통해 재현성과 일관성을 확보하는 것을 중요하게 여긴다. GitHub Actions 성능 테스트 워크플로우에서 locust, requests, fastapi, uvicorn 등의 패키지를 정확한 버전으로 고정하여 예기치 않은 빌드 실패를 방지하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
.github/workflows/ci-cd.yml (9)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
🪛 YAMLlint (1.37.1)
.github/workflows/ci-cd.yml
[error] 154-154: trailing spaces
(trailing-spaces)
[error] 160-160: trailing spaces
(trailing-spaces)
[error] 172-172: trailing spaces
(trailing-spaces)
[error] 181-181: trailing spaces
(trailing-spaces)
[error] 187-187: trailing spaces
(trailing-spaces)
[error] 190-190: trailing spaces
(trailing-spaces)
[error] 205-205: trailing spaces
(trailing-spaces)
[error] 210-210: trailing spaces
(trailing-spaces)
[error] 216-216: trailing spaces
(trailing-spaces)
[error] 243-243: trailing spaces
(trailing-spaces)
[error] 245-245: trailing spaces
(trailing-spaces)
[error] 252-252: trailing spaces
(trailing-spaces)
[error] 254-254: trailing spaces
(trailing-spaces)
[error] 256-256: trailing spaces
(trailing-spaces)
[error] 258-258: trailing spaces
(trailing-spaces)
[error] 260-260: trailing spaces
(trailing-spaces)
[error] 266-266: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test
- GitHub Check: test
🔇 Additional comments (1)
.github/workflows/ci-cd.yml (1)
152-205:set -e와 헬스체크 루프가 충돌하여 첫 실패 시 즉시 종료
set -e활성화 상태에서curl -f가 첫 반복에서 2xx 응답을 받지 못하면 스크립트가 즉시 실패하므로 60회 재시도 루프가 의미 없습니다.curl오류를 무시하거나set +e / set -e블록으로 감싸세요.- set -e + set -e + # 헬스체크 루프에서는 일시적으로 오류 무시 + set +e for i in {1..60}; do curl -f http://localhost:8000/health &>/dev/null && break sleep 5 done + set -e if ! curl -f http://localhost:8000/health &>/dev/null; then echo "❌ 헬스체크 실패" docker logs --tail 20 ururu-ai-service exit 1 fi⛔ Skipped due to learnings
Learnt from: 23MinL PR: UruruLab/Ururu-AI#13 File: docker-compose.yml:0-0 Timestamp: 2025-07-04T14:50:16.061Z Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.Learnt from: 23MinL PR: UruruLab/Ururu-AI#19 File: .github/workflows/docker-health-check.yml:30-40 Timestamp: 2025-07-09T15:06:49.305Z Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.Learnt from: 23MinL PR: UruruLab/Ururu-AI#19 File: .github/workflows/ci-cd.yml:0-0 Timestamp: 2025-07-09T16:21:00.355Z Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.Learnt from: 23MinL PR: UruruLab/Ururu-AI#19 File: .github/workflows/ci-cd.yml:0-0 Timestamp: 2025-07-09T16:21:02.010Z Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.Learnt from: 23MinL PR: UruruLab/Ururu-AI#19 File: .github/workflows/ci-cd.yml:0-0 Timestamp: 2025-07-09T15:52:13.709Z Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
| - name: Deploy to FastAPI Production EC2 | ||
| uses: appleboy/ssh-action@v0.1.6 | ||
| with: | ||
| host: ${{ secrets.AI_EC2_HOST }} # 새로운 FastAPI EC2 | ||
| username: ${{ secrets.AI_EC2_USER }} # ec2-user | ||
| key: ${{ secrets.AI_EC2_SSH_KEY }} # 새로운 EC2 키 | ||
| port: 22 | ||
| timeout: 600s | ||
| script: | | ||
| set -e | ||
| echo "🚀 FastAPI AI 서비스 배포 시작" | ||
|
|
||
| # 기존 컨테이너 상태 확인 | ||
| if docker ps | grep ururu-ai-service; then | ||
| echo "📊 기존 AI 서비스 로그 확인" | ||
| docker logs --tail 10 ururu-ai-service | ||
| fi | ||
|
|
||
| # 코드 업데이트 (올바른 디렉토리) | ||
| cd /home/ec2-user/ururu-ai | ||
| if [ ! -d ".git" ]; then | ||
| echo "📥 레포지토리 초기 클론" | ||
| git clone https://github.com/UruruLab/Ururu-AI.git . | ||
| else | ||
| echo "🔄 코드 업데이트" | ||
| git fetch origin | ||
| git checkout main | ||
| git reset --hard origin/main | ||
| fi | ||
|
|
||
| # 환경변수 설정 | ||
| echo "📝 환경변수 설정" | ||
| cat > .env.production << EOF | ||
| ENVIRONMENT=production | ||
| AI_PORT=8000 | ||
| SPRING_BOOT_BASE_URL=http://${{ secrets.SPRING_BOOT_PRIVATE_IP }}:8080 | ||
| BUILD_TARGET=production | ||
| EOF | ||
|
|
There was a problem hiding this comment.
스크립트 내 환경변수 값이 GitHub Actions 로그에 노출됨
appleboy/ssh-action 은 전달된 script 본문을 그대로 워크플로 로그에 출력합니다.
따라서 아래 구간에서 ${{ secrets.SPRING_BOOT_PRIVATE_IP }} 값이 로그에 평문 출력되어 VPC 내부 IP가 노출됩니다. 이는 23MinL 님이 지속적으로 강조한 “로그에 환경변수 완전 마스킹” 원칙을 위반합니다.
- cat > .env.production << EOF
+ # secrets 값 노출 방지를 위해 따옴표 보존(<< 'EOF') 및 런타임 치환 사용
+ cat > .env.production << 'EOF'
ENVIRONMENT=production
AI_PORT=8000
- SPRING_BOOT_BASE_URL=http://${{ secrets.SPRING_BOOT_PRIVATE_IP }}:8080
+ SPRING_BOOT_BASE_URL=http://${SPRING_BOOT_PRIVATE_IP}:8080
BUILD_TARGET=production
EOF추가로 SPRING_BOOT_PRIVATE_IP 를 secrets→환경변수 매핑(env:) 으로 전달하고, ssh-action 의 script 에서는 $SPRING_BOOT_PRIVATE_IP 형식으로 참조하여 로그 노출을 근본 차단하세요.
Committable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 154-154: trailing spaces
(trailing-spaces)
[error] 160-160: trailing spaces
(trailing-spaces)
[error] 172-172: trailing spaces
(trailing-spaces)
[error] 181-181: trailing spaces
(trailing-spaces)
🤖 Prompt for AI Agents
In .github/workflows/ci-cd.yml between lines 143 and 181, the script directly
inserts the secret SPRING_BOOT_PRIVATE_IP into the script body, causing it to be
exposed in the GitHub Actions logs. To fix this, move the SPRING_BOOT_PRIVATE_IP
secret into the ssh-action's env section and reference it inside the script
using the environment variable syntax ($SPRING_BOOT_PRIVATE_IP). This prevents
the secret from being printed in the logs while still allowing the script to use
the value securely.
There was a problem hiding this comment.
SPRING_BOOT_PRIVATE_IP secrets 추가 완료 + 환경변수 중복 문제 수정 완료
There was a problem hiding this comment.
@23MinL 빠른 수정 완료 감사합니다! 🎉
SPRING_BOOT_PRIVATE_IP secrets를 환경변수로 분리하여 GitHub Actions 로그 노출을 방지하고, 환경변수 중복 문제까지 해결해주셨네요. 이제 VPC 내부 IP가 워크플로 로그에 평문으로 노출되지 않아 보안이 강화되었습니다.
특히 appleboy/ssh-action에서 secrets를 env 섹션으로 분리하여 스크립트 내에서 환경변수로 참조하는 방식은 CI/CD 보안 모범 사례를 잘 적용한 사례입니다.
✏️ Learnings added
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-16T02:29:31.415Z
Learning: 23MinL은 GitHub Actions에서 appleboy/ssh-action 사용 시 secrets 값이 script 본문에 직접 참조되어 로그에 노출되는 보안 위험을 즉시 인식하고, secrets를 env 섹션으로 분리하여 스크립트 내에서 환경변수로 참조하는 방식으로 근본적 해결을 수행하는 proactive한 보안 접근법을 적용한다.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
If you found this review helpful, would you consider giving us a shout-out on X?
Thank you for using CodeRabbit!
fe46556 to
e60b805
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
.github/workflows/ci-cd.yml (2)
121-122: 비공개 레포 체크아웃에 GHCR_TOKEN 재사용 문제 – 이전 리뷰와 동일
컨테이너 레지스트리 로그인용GHCR_TOKEN을 소스 레포 접근에 재활용하면 권한 과다·부족 모두 발생할 수 있습니다. 별도 PAT(PRIVATE_REPO_TOKEN) 분리 사용 권고 드렸던 사항이 아직 반영되지 않았습니다.
175-180: Here-doc 내부에 GitHub${{ secrets.* }}값이 그대로 삽입되어 로그 노출 위험 – 이전 리뷰와 동일
appleboy/ssh-action은 script 본문을 로그에 출력하므로SPRING_BOOT_PRIVATE_IP가 평문 노출됩니다. quoted here-doc (<< 'EOF') + 런타임 치환 방식으로 교체해 주세요.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/ci-cd.yml(4 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/performance-test.yml:0-0
Timestamp: 2025-07-09T16:20:20.321Z
Learning: 23MinL은 성능 테스트 환경에서 의존성 버전 고정을 통해 재현성과 일관성을 확보하는 것을 중요하게 여긴다. GitHub Actions 성능 테스트 워크플로우에서 locust, requests, fastapi, uvicorn 등의 패키지를 정확한 버전으로 고정하여 예기치 않은 빌드 실패를 방지하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
.github/workflows/ci-cd.yml (10)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
🪛 YAMLlint (1.37.1)
.github/workflows/ci-cd.yml
[error] 154-154: trailing spaces
(trailing-spaces)
[error] 160-160: trailing spaces
(trailing-spaces)
[error] 172-172: trailing spaces
(trailing-spaces)
[error] 181-181: trailing spaces
(trailing-spaces)
[error] 187-187: trailing spaces
(trailing-spaces)
[error] 190-190: trailing spaces
(trailing-spaces)
[error] 205-205: trailing spaces
(trailing-spaces)
[error] 210-210: trailing spaces
(trailing-spaces)
[error] 216-216: trailing spaces
(trailing-spaces)
[error] 243-243: trailing spaces
(trailing-spaces)
[error] 245-245: trailing spaces
(trailing-spaces)
[error] 252-252: trailing spaces
(trailing-spaces)
[error] 254-254: trailing spaces
(trailing-spaces)
[error] 256-256: trailing spaces
(trailing-spaces)
[error] 258-258: trailing spaces
(trailing-spaces)
[error] 260-260: trailing spaces
(trailing-spaces)
[error] 266-266: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test
- GitHub Check: test
🔇 Additional comments (2)
.github/workflows/ci-cd.yml (2)
19-21: 테스트 잡을 production 모드로 전환 시 예상치 못한 환경 의존 실패 가능성 확인 필요
ENVIRONMENT=production,DEBUG=false로 변경되면 테스트 코드나 설정이 개발 모드(예: DEBUG=true, SQLite, Mock 등)에 의존할 경우 바로 실패할 수 있습니다. 내부 설정 분기를 전부 점검해서 테스트가 여전히 통과하는지 확인해 주세요.
97-97: 경로 검증 완료:./docker/Dockerfile파일이 존재함
리포지토리 루트에 해당 파일이 확인되었으므로 CI 빌드 실패 우려가 없습니다.
- docker-compose.yml → docker-compose-ai.yml - docker-compose-prod.yml → docker-compose-ai-prod.yml - Spring Boot 리포지토리와 네이밍 충돌 방지 - CI/CD 파이프라인 경로 수정
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
.github/workflows/ci-cd.yml (2)
121-122: 비공개 레포지토리 checkout 시 GHCR_TOKEN 사용 문제
이전에 동일 지적이 있었으므로 중복 코멘트로 표시합니다.
161-171: 초기 서버에서cd /home/ec2-user/ururu-ai실패 가능성디렉터리가 없는 신규 EC2 인스턴스에서는
cd단계에서 스크립트가 즉시 종료(set -e)됩니다.- cd /home/ec2-user/ururu-ai - if [ ! -d ".git" ]; then + if [ ! -d "/home/ec2-user/ururu-ai" ]; then + mkdir -p /home/ec2-user/ururu-ai + fi + cd /home/ec2-user/ururu-ai + if [ ! -d ".git" ]; then재배포 자동화를 위해 디렉터리 존재 여부를 먼저 확인한 뒤
cd하도록 수정이 필요합니다.
🧹 Nitpick comments (1)
docker/docker-compose-ai-prod.yml (1)
42-42: EOF 뉴라인 누락파일 끝에 개행 문자가 없습니다. 일부 YAML 파서나 git diff 뷰어에서 경고가 발생할 수 있으니 한 줄 추가해 주세요.
- name: ururu-network + name: ururu-network +
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
.github/workflows/ci-cd.yml(4 hunks)docker/Dockerfile(0 hunks)docker/docker-compose-ai-prod.yml(1 hunks)docker/docker-compose-ai.yml(2 hunks)
💤 Files with no reviewable changes (1)
- docker/Dockerfile
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.development.yml:0-0
Timestamp: 2025-07-04T14:43:36.433Z
Learning: Docker Compose에서 컨테이너 내부 가상환경 디렉터리(/app/venv)를 호스트와 볼륨 매핑하면, 호스트의 빈 디렉터리가 컨테이너에서 빌드 시 설치된 패키지를 덮어써 버리는 문제가 발생할 수 있다. 개발 환경에서는 이런 볼륨 매핑을 제거하거나 명확한 목적이 있을 때만 사용해야 한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
docker/docker-compose-ai.yml (4)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.development.yml:0-0
Timestamp: 2025-07-04T14:43:36.433Z
Learning: Docker Compose에서 컨테이너 내부 가상환경 디렉터리(/app/venv)를 호스트와 볼륨 매핑하면, 호스트의 빈 디렉터리가 컨테이너에서 빌드 시 설치된 패키지를 덮어써 버리는 문제가 발생할 수 있다. 개발 환경에서는 이런 볼륨 매핑을 제거하거나 명확한 목적이 있을 때만 사용해야 한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
.github/workflows/ci-cd.yml (12)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-16T02:29:31.415Z
Learning: 23MinL은 GitHub Actions에서 appleboy/ssh-action 사용 시 secrets 값이 script 본문에 직접 참조되어 로그에 노출되는 보안 위험을 즉시 인식하고, secrets를 env 섹션으로 분리하여 스크립트 내에서 환경변수로 참조하는 방식으로 근본적 해결을 수행하는 proactive한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: nan0silver
PR: UruruLab/Ururu-AI#14
File: requirements.txt:5-6
Timestamp: 2025-07-07T13:56:07.733Z
Learning: In the UruruLab/Ururu-AI project, AWS SDK dependencies (boto3, botocore, s3transfer) in requirements.txt are kept for future use, specifically for planned features like vector index backup to S3.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
🪛 YAMLlint (1.37.1)
.github/workflows/ci-cd.yml
[error] 154-154: trailing spaces
(trailing-spaces)
[error] 160-160: trailing spaces
(trailing-spaces)
[error] 172-172: trailing spaces
(trailing-spaces)
[error] 179-179: trailing spaces
(trailing-spaces)
[error] 185-185: trailing spaces
(trailing-spaces)
[error] 188-188: trailing spaces
(trailing-spaces)
[error] 203-203: trailing spaces
(trailing-spaces)
[error] 208-208: trailing spaces
(trailing-spaces)
[error] 214-214: trailing spaces
(trailing-spaces)
[error] 241-241: trailing spaces
(trailing-spaces)
[error] 243-243: trailing spaces
(trailing-spaces)
[error] 250-250: trailing spaces
(trailing-spaces)
[error] 252-252: trailing spaces
(trailing-spaces)
[error] 254-254: trailing spaces
(trailing-spaces)
[error] 256-256: trailing spaces
(trailing-spaces)
[error] 258-258: trailing spaces
(trailing-spaces)
[error] 264-264: no new line character at the end of file
(new-line-at-end-of-file)
docker/docker-compose-ai-prod.yml
[error] 42-42: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test
- GitHub Check: test
🔇 Additional comments (2)
docker/docker-compose-ai.yml (1)
35-37: 기본 URL에 플레이스홀더 사용 → 배포 시 장애 가능성
SPRING_BOOT_BASE_URL의 기본값이http://10.0.X.X:8080으로 남아 있습니다.
운영 환경에서 해당 ENV 변수가 설정되지 않으면 FastAPI → Spring Boot 호출이 실패합니다.
- 배포 파이프라인에서 필수 ENV 검증(없으면 실패)
- 또는 실제 내부 IP/ALB DNS 로 기본값 교체
둘 중 하나를 적용해 주세요.
.github/workflows/ci-cd.yml (1)
19-22: 테스트 단계에서 production 설정 적용 여부 재확인
ENVIRONMENT=production,DEBUG=false로 변경되어 테스트가 운영 모드로 실행됩니다.
로컬‧단위 테스트가 개발 설정(예: 모킹, 경량 DB) 전제일 경우 실패할 수 있으니 필요 의도인지 확인 바랍니다.
| environment: | ||
| - GITHUB_TOKEN=${GITHUB_TOKEN} | ||
| - GITHUB_TOKEN=${GHCR_TOKEN} | ||
| - CONFIG_REPO_URL=https://github.com/UruruLab/Ururu-AI-Config.git | ||
| - ENVIRONMENT=${ENVIRONMENT:-production} |
There was a problem hiding this comment.
컨피그 레포지토리 접근 토큰 오용 위험
config-fetcher 컨테이너가 비공개 레포지토리(UruruLab/Ururu-AI-Config)를 clone 할 때 GITHUB_TOKEN=${GHCR_TOKEN} 을 사용합니다.
GHCR_TOKEN 은 컨테이너 레지스트리 로그인용 권한만 가진 토큰일 가능성이 높아, clone 실패 또는 과도한 권한 확대 문제가 발생할 수 있습니다. 컨테이너 레지스트리용 토큰과 GitHub PAT(레포지토리 읽기 권한)을 분리해 주세요.
- - GITHUB_TOKEN=${GHCR_TOKEN}
+ - GITHUB_TOKEN=${PRIVATE_REPO_TOKEN}🤖 Prompt for AI Agents
In docker/docker-compose-ai.yml around lines 8 to 11, the environment variable
GITHUB_TOKEN is set to GHCR_TOKEN, which is likely a container registry token
lacking proper repository read permissions. To fix this, create and use a
separate GitHub Personal Access Token (PAT) with repository read access
specifically for cloning the private config repository, and set GITHUB_TOKEN to
this new PAT instead of GHCR_TOKEN to avoid permission issues and security
risks.
There was a problem hiding this comment.
지금 Ururu AI에서는 PRIVATE_REPO_TOKEN가 아닌 GHCR_TOKEN로 권한을 줘서 사용하고 있으니 무방합니다.
There was a problem hiding this comment.
@23MinL 이해했습니다. 프로젝트에서 GHCR_TOKEN이 컨테이너 레지스트리뿐만 아니라 private repository 접근 권한도 함께 가지도록 설정되어 있다는 점을 확인했습니다. 현재 설정이 정상적으로 작동하고 있다면 해당 구성을 유지하시는 것이 좋겠습니다.
✏️ Learnings added
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: docker/docker-compose-ai.yml:8-11
Timestamp: 2025-07-16T02:37:33.810Z
Learning: Ururu AI 프로젝트에서는 GHCR_TOKEN을 GitHub Container Registry 접근과 private repository (Ururu-AI-Config) clone 권한을 모두 포함하는 통합 토큰으로 사용한다. PRIVATE_REPO_TOKEN을 별도로 분리하지 않고 GHCR_TOKEN 하나로 두 가지 기능을 모두 처리하는 것이 의도된 설계이다.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-16T02:29:31.415Z
Learning: 23MinL은 GitHub Actions에서 appleboy/ssh-action 사용 시 secrets 값이 script 본문에 직접 참조되어 로그에 노출되는 보안 위험을 즉시 인식하고, secrets를 env 섹션으로 분리하여 스크립트 내에서 환경변수로 참조하는 방식으로 근본적 해결을 수행하는 proactive한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:42:20.419Z
Learning: 23MinL은 한국어 텍스트의 BERT 토큰 제한을 처리할 때 보수적인 문자 수 제한(512자)을 선호하며, 한국어가 토큰화 시 더 많은 토큰을 생성한다는 특성을 고려하여 안전한 설정을 우선시한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
- docker compose config에서 파일명 명시적 지정 - docker-compose-ai.yml 파일 사용하도록 수정 - 'no configuration file provided' 에러 해결
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (7)
.github/workflows/ci-cd.yml (5)
116-122: Config 레포지토리 checkout 시GHCR_TOKEN사용은 OK, read 권한만 확인
토큰 하나로 두 기능을 통합한 설계와 일치합니다. 다만 PAT scope 가repoREAD 로 제한돼 있는지 검증 바랍니다.
183-188:docker compose up --build은 불필요한 재빌드 비용
이미 GHCR 에서 pull 가능한 이미지라면--pull always옵션과--no-build로 CI/CD 시간을 단축할 수 있습니다.
192-205: 헬스체크 루프 타임아웃 5 분
30 초 sleep + 60 × 5 초 → 총 5 분 30 초. EC2 인스턴스 자원 제약 시 초기 가동 7~10 분 걸릴 수 있으니 타임아웃을 조정하거나 지수백오프를 고려해 주세요.
244-265: Github Issue 자동 생성 시 민감 정보 포함 위험
본문에 브랜치, SHA, 퍼블릭 URL 은 문제 없으나 VPC 내부 IP 등 민감 정보가 추가될 가능성을 차단하기 위해 whitelist 기반 템플릿을 추천합니다.
150-220: 여러 줄에 후행 공백 존재 → YAMLLint 오류
CI 파이프라인이 YAMLlint 를 통과하지 못할 수 있습니다. 후행 공백을 제거하세요..github/workflows/docker-health-check.yml (2)
31-44: Docker context 로.env복사 OK → 단, 중복 파일 덮어쓰기 주의
cp config/.env*는 동일 이름 파일이 있을 때 무조건 덮어씁니다.
불변성을 위해cp -n(no-clobber) 옵션 또는 파일 diff 후 덮어쓰기를 권장합니다.
118-131: 헬스체크 보고서 단계는 정보성 👍 – trailing space 정리 필요
여전히 여러 줄에 후행 공백이 있어 YAMLlint 경고가 발생합니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
.github/workflows/ci-cd.yml(4 hunks).github/workflows/docker-health-check.yml(4 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.development.yml:0-0
Timestamp: 2025-07-04T14:43:36.433Z
Learning: Docker Compose에서 컨테이너 내부 가상환경 디렉터리(/app/venv)를 호스트와 볼륨 매핑하면, 호스트의 빈 디렉터리가 컨테이너에서 빌드 시 설치된 패키지를 덮어써 버리는 문제가 발생할 수 있다. 개발 환경에서는 이런 볼륨 매핑을 제거하거나 명확한 목적이 있을 때만 사용해야 한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
.github/workflows/ci-cd.yml (14)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-16T02:29:31.415Z
Learning: 23MinL은 GitHub Actions에서 appleboy/ssh-action 사용 시 secrets 값이 script 본문에 직접 참조되어 로그에 노출되는 보안 위험을 즉시 인식하고, secrets를 env 섹션으로 분리하여 스크립트 내에서 환경변수로 참조하는 방식으로 근본적 해결을 수행하는 proactive한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: nan0silver
PR: UruruLab/Ururu-AI#14
File: requirements.txt:5-6
Timestamp: 2025-07-07T13:56:07.733Z
Learning: In the UruruLab/Ururu-AI project, AWS SDK dependencies (boto3, botocore, s3transfer) in requirements.txt are kept for future use, specifically for planned features like vector index backup to S3.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T16:22:17.286Z
Learning: 23MinL은 CI/CD 파이프라인에서 fail-fast 원칙을 적용하여 런타임 오류를 사전에 방지하는 proactive validation 접근법을 선호한다. Config 파일 존재 여부 검증과 같은 명시적 검증 로직을 CI/CD 워크플로우와 실행 스크립트 모두에 일관되게 적용하여 배포 안정성과 개발 경험을 동시에 개선하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: docker/docker-compose-ai.yml:8-11
Timestamp: 2025-07-16T02:37:33.810Z
Learning: Ururu AI 프로젝트에서는 GHCR_TOKEN을 GitHub Container Registry 접근과 private repository (Ururu-AI-Config) clone 권한을 모두 포함하는 통합 토큰으로 사용한다. PRIVATE_REPO_TOKEN을 별도로 분리하지 않고 GHCR_TOKEN 하나로 두 가지 기능을 모두 처리하는 것이 의도된 설계이다.
.github/workflows/docker-health-check.yml (6)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: docker/docker-compose-ai.yml:8-11
Timestamp: 2025-07-16T02:37:33.810Z
Learning: Ururu AI 프로젝트에서는 GHCR_TOKEN을 GitHub Container Registry 접근과 private repository (Ururu-AI-Config) clone 권한을 모두 포함하는 통합 토큰으로 사용한다. PRIVATE_REPO_TOKEN을 별도로 분리하지 않고 GHCR_TOKEN 하나로 두 가지 기능을 모두 처리하는 것이 의도된 설계이다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
🪛 YAMLlint (1.37.1)
.github/workflows/ci-cd.yml
[error] 154-154: trailing spaces
(trailing-spaces)
[error] 160-160: trailing spaces
(trailing-spaces)
[error] 164-164: trailing spaces
(trailing-spaces)
[error] 175-175: trailing spaces
(trailing-spaces)
[error] 182-182: trailing spaces
(trailing-spaces)
[error] 188-188: trailing spaces
(trailing-spaces)
[error] 191-191: trailing spaces
(trailing-spaces)
[error] 206-206: trailing spaces
(trailing-spaces)
[error] 211-211: trailing spaces
(trailing-spaces)
[error] 217-217: trailing spaces
(trailing-spaces)
[error] 244-244: trailing spaces
(trailing-spaces)
[error] 246-246: trailing spaces
(trailing-spaces)
[error] 253-253: trailing spaces
(trailing-spaces)
[error] 255-255: trailing spaces
(trailing-spaces)
[error] 257-257: trailing spaces
(trailing-spaces)
[error] 259-259: trailing spaces
(trailing-spaces)
[error] 261-261: trailing spaces
(trailing-spaces)
[error] 267-267: no new line character at the end of file
(new-line-at-end-of-file)
.github/workflows/docker-health-check.yml
[error] 35-35: trailing spaces
(trailing-spaces)
[error] 40-40: trailing spaces
(trailing-spaces)
[error] 53-53: trailing spaces
(trailing-spaces)
[error] 60-60: trailing spaces
(trailing-spaces)
[error] 107-107: trailing spaces
(trailing-spaces)
[error] 131-131: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: test
- GitHub Check: test
🔇 Additional comments (5)
.github/workflows/ci-cd.yml (2)
94-99: Dockerfile 경로 변경에 따른 캐시 미스 가능성 확인 필요
file: ./docker/Dockerfile로 변경되었는데, 빌드 컨텍스트는 여전히.입니다.
Dockerfile 내부에서 상대 경로(예:COPY app/ /app)가./docker기준으로 작성돼 있다면 빌드 실패가 발생합니다. 경로 기준을 다시 한번 검증해주세요.
104-105: 주석만 남겨두고 Job 제거 → 워크플로우 실행 시간 최적화 OK
개발 배포 Job 완전 제거는 VPC 내부 통신 전제로 합리적입니다..github/workflows/docker-health-check.yml (3)
24-30: Config 레포지토리 토큰 교체 확인 완료
GHCR_TOKEN하나로 통합한 보안 설계와 일치합니다.
70-76: Compose validation에GHCR_TOKENENV 전달 불필요
docker compose … config는 레지스트리 접근이 없으므로 토큰 주입은 과잉입니다.
80-87: 환경 변수 출력 redaction 로직 👍
sed 's/=.*/=<redacted>/'로 값 마스킹이 잘 적용되었습니다.
| - name: Deploy to FastAPI Production EC2 | ||
| uses: appleboy/ssh-action@v0.1.6 | ||
| with: | ||
| host: ${{ secrets.AI_EC2_HOST }} # 새로운 FastAPI EC2 | ||
| username: ${{ secrets.AI_EC2_USER }} # ec2-user | ||
| key: ${{ secrets.AI_EC2_SSH_KEY }} # 새로운 EC2 키 | ||
| port: 22 | ||
| timeout: 600s | ||
| script: | |
There was a problem hiding this comment.
SSH 배포 스크립트에 .env.production 전송 단계가 없습니다
Runner 에서 복사한 .env.production 파일이 EC2 로 전달되지 않으므로,
EC2 측에서 178~180 라인 체크에 실패해 배포가 즉시 중단됩니다.
scp 로 파일을 넘기거나 cat <<'EOF' 방식으로 원격 작성해주셔야 합니다.
+ # 예시: 파일 전송
+ - name: Upload .env.production
+ uses: appleboy/scp-action@v0.1.4
+ with:
+ host: ${{ secrets.AI_EC2_HOST }}
+ username: ${{ secrets.AI_EC2_USER }}
+ key: ${{ secrets.AI_EC2_SSH_KEY }}
+ source: ".env.production"
+ target: "/home/ec2-user/ururu-ai/.env.production"🤖 Prompt for AI Agents
In .github/workflows/ci-cd.yml around lines 143 to 151, the deployment script
lacks a step to transfer the .env.production file to the EC2 instance, causing
deployment to fail on environment checks. Add a command before the deployment
script to copy the .env.production file from the runner to the EC2, either by
using scp with the SSH credentials or by creating the file remotely using a
here-document (cat <<'EOF'). Ensure the file is correctly placed on the EC2 so
subsequent deployment steps can access it.
There was a problem hiding this comment.
SSH 배포 스크립트가 더 간결하고 명확해졌습니다.
.env.production 파일을 직접 업로드하는 방식이 더 안전하고 효율적입니다.
이 구조로 적용하겠습니다.
There was a problem hiding this comment.
@23MinL 좋은 결정입니다! 직접 파일 업로드 방식은 확실히 더 투명하고 안전한 접근법이죠.
scp-action을 사용하면 파일 전송 과정이 명시적으로 분리되어 디버깅도 더 쉬워지고, 스크립트 내에서 파일 생성 로직이 복잡해지는 것도 방지할 수 있습니다.
배포 파이프라인 개선 작업 화이팅하세요! 🚀
✏️ Learnings added
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:143-151
Timestamp: 2025-07-16T02:59:26.908Z
Learning: 23MinL은 CI/CD 배포 스크립트에서 환경 설정 파일 처리 시 스크립트 내부에서 파일을 생성하는 방식보다 scp-action을 사용한 직접 파일 업로드 방식을 선호한다. 이는 더 간결하고 명확하며 안전하고 효율적인 접근법으로 평가하며, 파일 전송 과정의 투명성과 디버깅 용이성을 중요하게 여긴다.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:138-142
Timestamp: 2025-07-16T02:47:55.337Z
Learning: 23MinL은 CI/CD 파이프라인에서 validation을 실제 배포 환경과 맞지 않는 경우 제거하고, 실제 배포 시점(EC2에서 docker compose 실행)에서 validation을 수행하는 실용적 접근법을 선호한다. CI/CD 환경의 제약(production secrets 부재, VPC 환경 차이)을 고려하여 validation 시점을 적절히 분리하는 아키텍처적 판단을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-16T02:29:31.415Z
Learning: 23MinL은 GitHub Actions에서 appleboy/ssh-action 사용 시 secrets 값이 script 본문에 직접 참조되어 로그에 노출되는 보안 위험을 즉시 인식하고, secrets를 env 섹션으로 분리하여 스크립트 내에서 환경변수로 참조하는 방식으로 근본적 해결을 수행하는 proactive한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:19-23
Timestamp: 2025-07-16T02:53:49.222Z
Learning: 23MinL은 CI/CD 파이프라인의 테스트 잡에서 ENVIRONMENT=production 설정을 완전히 제거하여 테스트가 프로덕션 DB나 서비스에 접근하는 위험을 차단하는 것을 선호한다. 테스트 환경에서는 코드 내부 기본값을 사용하도록 하여 최대한 안전한 격리를 유지하는 보수적 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (4)
.github/workflows/ci-cd.yml (3)
19-21: 테스트 잡에서ENVIRONMENT=production사용은 여전히 위험합니다
프로덕션 리소스를 참조할 가능성이 있으므로testing값으로 교체하거나 삭제하세요.
138-141: 실질적인 Docker Compose 검증이 사라진 상태입니다
docker compose config --quiet정도는 유지해 YAML / env 바인딩 오류를 조기에 탐지해주세요.
176-183:.env.production전달 단계가 여전히 없습니다
원격 EC2에 파일이 존재한다는 가정은 깨질 수 있습니다.scp-action또는 here-document로 전송/생성하도록 보완하세요..github/workflows/docker-health-check.yml (1)
52-56: 개발용.env.development강제 체크는 더 이상 필요 없습니다
개발 배포가 제거되었으므로 해당 조건은 워크플로 실패만 유발합니다. 블록 전체를 제거하세요.
🧹 Nitpick comments (1)
.github/workflows/docker-health-check.yml (1)
29-46: 잔여 공백(trailing spaces) 정리 권장
여러 줄에 불필요한 공백이 남아 YAML Lint 경고가 발생합니다. 실 기능에는 영향 없지만 CI 노이즈를 줄이기 위해 제거를 권장드립니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
.github/workflows/ci-cd.yml(5 hunks).github/workflows/docker-health-check.yml(4 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.development.yml:0-0
Timestamp: 2025-07-04T14:43:36.433Z
Learning: Docker Compose에서 컨테이너 내부 가상환경 디렉터리(/app/venv)를 호스트와 볼륨 매핑하면, 호스트의 빈 디렉터리가 컨테이너에서 빌드 시 설치된 패키지를 덮어써 버리는 문제가 발생할 수 있다. 개발 환경에서는 이런 볼륨 매핑을 제거하거나 명확한 목적이 있을 때만 사용해야 한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.production.yml:15-27
Timestamp: 2025-07-04T14:43:46.253Z
Learning: 23MinL은 현재 요구사항을 만족하는 동시에 향후 확장성을 위한 사전 설정을 유지하는 것을 선호하며, 단계적 성장에 대비한 아키텍처 설계를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:87-89
Timestamp: 2025-07-03T06:22:37.053Z
Learning: 23MinL은 뷰티 용어 정규화에서 순서 최적화, 중복 방지(한번만 사용), 이미 변환된 텍스트 제외, 정규표현식 기반 단어 경계 매칭을 통해 정확성과 효율성을 동시에 확보하는 접근법을 선호한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:0-0
Timestamp: 2025-07-03T05:41:35.314Z
Learning: 23MinL은 Python 커뮤니티 표준 준수를 중요하게 여기며, 코드 가독성과 IDE 지원 향상을 위해 PEP 8 규칙을 적극적으로 따른다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/embedding_service.py:103-106
Timestamp: 2025-07-03T06:45:40.113Z
Learning: 23MinL은 초기 개발 단계에서 정확성보다 단순성과 의존성 최소화를 우선시하며, 단계별 최적화 접근법을 선호한다. 특히 한국어 텍스트 처리에서 보수적 제한을 통해 안전성을 확보한 후, 추후 성능 측정을 바탕으로 최적화를 진행하는 방식을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: Dockerfile:0-0
Timestamp: 2025-07-04T14:50:32.456Z
Learning: 23MinL은 Docker 컨테이너 환경에서 Gunicorn 워커 수를 환경변수로 구성하여 환경별 최적화를 수행하는 접근법을 선호한다. 리소스 제한과 일치하는 워커 수 설정을 통해 성능 최적화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: .gitignore:53-58
Timestamp: 2025-07-04T14:43:24.632Z
Learning: 23MinL은 민감한 설정 파일(.env, config/, ssl/)을 메인 리포지토리에서 분리하여 별도의 private 리포지토리(Ururu-AI-Config)에서 관리하는 보안 중심 접근법을 사용한다. 이를 통해 메인 코드베이스와 민감한 설정을 분리하여 보안을 강화한다.
.github/workflows/ci-cd.yml (13)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-16T02:29:31.415Z
Learning: 23MinL은 GitHub Actions에서 appleboy/ssh-action 사용 시 secrets 값이 script 본문에 직접 참조되어 로그에 노출되는 보안 위험을 즉시 인식하고, secrets를 env 섹션으로 분리하여 스크립트 내에서 환경변수로 참조하는 방식으로 근본적 해결을 수행하는 proactive한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:05:42.278Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 보안을 최우선으로 고려하며, secrets 변수 처리 시 echo 대신 printf를 사용하여 로그 노출 위험을 최소화하는 보안 중심적 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/docker-health-check.yml:30-40
Timestamp: 2025-07-09T15:06:49.305Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 의존성 관리 시 환경 가정보다 명시적 설치를 선호하며, 일관성 유지를 위해 curl 대신 Python requests를 사용하는 것을 선호한다. ubuntu-latest 환경의 불확실성을 고려하여 pip install --quiet 명령어를 통한 명시적 패키지 설치로 안정성을 확보하는 접근법을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: scripts/fetch-config.sh:5-9
Timestamp: 2025-07-04T14:44:01.189Z
Learning: 23MinL은 Docker 컨테이너 격리를 충분한 보안 수준으로 판단하며, 컨테이너 내부에서만 실행되는 민감한 작업(GitHub PAT 사용 등)에 대해서는 현재 구현 방식을 적절하다고 평가한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T16:22:17.286Z
Learning: 23MinL은 CI/CD 파이프라인에서 fail-fast 원칙을 적용하여 런타임 오류를 사전에 방지하는 proactive validation 접근법을 선호한다. Config 파일 존재 여부 검증과 같은 명시적 검증 로직을 CI/CD 워크플로우와 실행 스크립트 모두에 일관되게 적용하여 배포 안정성과 개발 경험을 동시에 개선하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#8
File: app/services/product_tower_service.py:0-0
Timestamp: 2025-07-03T05:43:46.374Z
Learning: 23MinL은 12-Factor App 패턴을 적극적으로 활용하며, 환경변수 기반 설정 관리를 통해 개발/운영 환경 분리, Docker 배포 유연성, 보안 강화를 중요하게 고려한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: docker/docker-compose-ai.yml:8-11
Timestamp: 2025-07-16T02:37:33.810Z
Learning: Ururu AI 프로젝트에서는 GHCR_TOKEN을 GitHub Container Registry 접근과 private repository (Ururu-AI-Config) clone 권한을 모두 포함하는 통합 토큰으로 사용한다. PRIVATE_REPO_TOKEN을 별도로 분리하지 않고 GHCR_TOKEN 하나로 두 가지 기능을 모두 처리하는 것이 의도된 설계이다.
.github/workflows/docker-health-check.yml (8)
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:00.355Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 보안을 최우선으로 고려하며, cat 명령어로 .env 파일 내용을 로그에 출력하는 것을 제거하여 민감 정보 노출을 방지하는 보안 중심적 접근법을 적용한다. 특히 FastAPI → Spring Boot → ALB 구조에서는 백엔드 연결 정보 보안을 더욱 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/docker-health-check.yml:0-0
Timestamp: 2025-07-11T17:05:46.311Z
Learning: 23MinL은 GitHub Actions 워크플로우에서 환경 변수 보안을 위해 sed를 활용한 <redacted> 처리를 통해 민감한 정보가 로그에 노출되는 것을 방지하는 proactive한 보안 접근법을 적용한다. 공개 리포지토리에서 DB 패스워드나 API 키 등의 중요 정보 유출을 사전에 차단하여 배포 안정성을 확보하는 것을 중요하게 여긴다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T16:21:02.010Z
Learning: 23MinL은 FastAPI → Spring Boot → ALB 멀티 레이어 아키텍처에서 보안을 더욱 중요하게 고려하며, GitHub Actions 로그에서 환경변수를 완전히 마스킹하는 엄격한 보안 접근법을 적용한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:05:55.347Z
Learning: 23MinL은 GitHub Actions CI/CD 파이프라인에서 환경변수 노출 방지를 위해 `sed 's/.*$/&<redacted>/'` 명령어를 사용하여 environment variable의 실제 값을 마스킹하는 구체적인 보안 접근법을 적용한다. 이를 통해 docker compose config 출력에서 민감한 정보가 로그에 노출되는 것을 효과적으로 방지한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#26
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-11T17:06:01.929Z
Learning: 23MinL은 CI/CD 파이프라인에서 환경 변수 보안 조치를 모든 환경(development, production)에 일관되게 적용하는 것을 중요하게 여긴다. GitHub Actions 로그에서 민감한 정보 노출을 방지하기 위해 sed 명령어를 사용한 값 마스킹 패턴을 동일하게 적용하여 보안 수준을 통일한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#28
File: docker/docker-compose-ai.yml:8-11
Timestamp: 2025-07-16T02:37:33.810Z
Learning: Ururu AI 프로젝트에서는 GHCR_TOKEN을 GitHub Container Registry 접근과 private repository (Ururu-AI-Config) clone 권한을 모두 포함하는 통합 토큰으로 사용한다. PRIVATE_REPO_TOKEN을 별도로 분리하지 않고 GHCR_TOKEN 하나로 두 가지 기능을 모두 처리하는 것이 의도된 설계이다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#13
File: docker-compose.yml:0-0
Timestamp: 2025-07-04T14:50:16.061Z
Learning: 23MinL은 Docker Compose 설정에서 복잡한 health check보다는 단순한 depends_on 구조를 선호하며, 시스템 내부의 재시도 로직을 활용하여 안정성을 확보하는 실용적 접근법을 취한다.
Learnt from: 23MinL
PR: UruruLab/Ururu-AI#19
File: .github/workflows/ci-cd.yml:0-0
Timestamp: 2025-07-09T15:52:13.709Z
Learning: 23MinL은 CI/CD 파이프라인 설계에서 현실적 제약을 고려한 하이브리드 접근법을 선호한다. GitHub Actions에서는 Docker 이미지 빌드/푸시와 설정 검증까지만 자동화하고, 실제 배포는 보안과 제어를 위해 수동으로 분리하는 방식을 적용한다. 배포 시뮬레이션과 명확한 가이드 제공을 통해 투명성과 실용성을 동시에 확보하는 것을 중요하게 여긴다.
🪛 YAMLlint (1.37.1)
.github/workflows/ci-cd.yml
[error] 154-154: trailing spaces
(trailing-spaces)
[error] 160-160: trailing spaces
(trailing-spaces)
[error] 164-164: trailing spaces
(trailing-spaces)
[error] 175-175: trailing spaces
(trailing-spaces)
[error] 182-182: trailing spaces
(trailing-spaces)
[error] 188-188: trailing spaces
(trailing-spaces)
[error] 191-191: trailing spaces
(trailing-spaces)
[error] 206-206: trailing spaces
(trailing-spaces)
[error] 211-211: trailing spaces
(trailing-spaces)
[error] 217-217: trailing spaces
(trailing-spaces)
[error] 244-244: trailing spaces
(trailing-spaces)
[error] 246-246: trailing spaces
(trailing-spaces)
[error] 253-253: trailing spaces
(trailing-spaces)
[error] 255-255: trailing spaces
(trailing-spaces)
[error] 257-257: trailing spaces
(trailing-spaces)
[error] 259-259: trailing spaces
(trailing-spaces)
[error] 261-261: trailing spaces
(trailing-spaces)
[error] 267-267: no new line character at the end of file
(new-line-at-end-of-file)
.github/workflows/docker-health-check.yml
[error] 33-33: trailing spaces
(trailing-spaces)
[error] 38-38: trailing spaces
(trailing-spaces)
[error] 51-51: trailing spaces
(trailing-spaces)
[error] 58-58: trailing spaces
(trailing-spaces)
[error] 105-105: trailing spaces
(trailing-spaces)
[error] 129-129: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: test
- test job 완전 제거로 DB 접속 위험성 차단 - build-and-push job의 test 의존성 제거 - 파이프라인 단순화로 배포 속도 향상

⭐️ Issue Number
🚩 Summary
🛠️ Technical Concerns
아키텍처 변경
네트워크 설정
성능 최적화
🙂 To Reviewer
테스트 확인 사항
VPC 내부 통신 테스트:
# Spring Boot EC2에서 FastAPI 연결 확인 curl -f http://10.0.5.114:8000/healthAI 추천 API 호출 테스트:
헬스체크 모니터링:
/actuator/health/health주요 변경사항 코드 리뷰 포인트
application-prod.yml: AI 서비스 URL 및 연결 설정AiServiceClient.java: VPC 통신 최적화 및 예외 처리📋 To Do
배포 확인 사항
Summary by CodeRabbit
Chores
New Features
Bug Fixes
Documentation