[25.07.26 / TASK-212] Feature - Leaderboard에 캐싱 추가 #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: ['main'] | |
pull_request: | |
branches: ['main'] | |
jobs: | |
build-and-test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20, 21, 22, 23] | |
fail-fast: false # 한 버전 실패 시 전체 중단 방지 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Enable Corepack | |
run: corepack enable | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v2 | |
with: | |
version: 9 | |
run_install: false | |
- name: Get pnpm store directory | |
id: pnpm-cache | |
shell: bash | |
run: | | |
echo "store-path=$(pnpm store path)" >> $GITHUB_OUTPUT | |
- name: Setup pnpm cache | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.pnpm-cache.outputs.store-path }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Create .env file | |
run: | | |
echo "SLACK_WEBHOOK_URL=${{ secrets.SLACK_WEBHOOK_URL }}" >> .env | |
echo "DATABASE_NAME=${{ secrets.DATABASE_NAME }}" >> .env | |
echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> .env | |
echo "POSTGRES_HOST=${{ secrets.POSTGRES_HOST }}" >> .env | |
echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> .env | |
echo "POSTGRES_PORT=${{ secrets.POSTGRES_PORT }}" >> .env | |
echo "SENTRY_CLIENT_SECRET=${{ secrets.SENTRY_CLIENT_SECRET }}" >> .env | |
echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env | |
# AES 키들 추가 (테스트용 더미 키) | |
echo "AES_KEY_0=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" >> .env | |
echo "AES_KEY_1=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" >> .env | |
echo "AES_KEY_2=cccccccccccccccccccccccccccccccc" >> .env | |
echo "AES_KEY_3=dddddddddddddddddddddddddddddddd" >> .env | |
echo "AES_KEY_4=eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" >> .env | |
echo "AES_KEY_5=ffffffffffffffffffffffffffffffff" >> .env | |
echo "AES_KEY_6=gggggggggggggggggggggggggggggggg" >> .env | |
echo "AES_KEY_7=hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" >> .env | |
echo "AES_KEY_8=iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii" >> .env | |
echo "AES_KEY_9=jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj" >> .env | |
- name: Run lint | |
run: pnpm run lint | |
- name: Run tests | |
run: pnpm run test | |
- name: Run build | |
run: pnpm run build | |
# 환경 변수 이슈로 잠깐 disable | |
# docker-deploy: | |
# runs-on: ubuntu-latest | |
# needs: build-and-test | |
# # 하나의 버전이라도 성공하면 실행 (일부 실패해도 진행) | |
# if: ${{ !cancelled() && contains(needs.build-and-test.result, 'success') }} | |
# steps: | |
# - name: Checkout repository | |
# uses: actions/checkout@v4 | |
# # Docker 로그인 | |
# - name: Log in to Docker Hub | |
# uses: docker/login-action@v3 | |
# with: | |
# username: ${{ secrets.DOCKER_USERNAME }} | |
# password: ${{ secrets.DOCKER_PASSWORD }} | |
# # Docker 이미지 빌드 | |
# - name: Build Docker Image | |
# run: | | |
# docker build -t velog-dashboard-v2-api:latest . | |
# # Docker Hub에 푸시 | |
# - name: Push Docker Image | |
# run: | | |
# docker tag velog-dashboard-v2-api:latest ${{ secrets.DOCKER_USERNAME }}/velog-dashboard-v2-api:latest | |
# docker push ${{ secrets.DOCKER_USERNAME }}/velog-dashboard-v2-api:latest |