From 5eca019967b8fcd76062386d834ddea96b5669d2 Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Sun, 31 May 2026 15:48:57 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20Gitea=20Actions=20=EC=9B=8C=ED=81=AC?= =?UTF-8?q?=ED=94=8C=EB=A1=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ci.yaml: Node 22 설치 → npm ci → 린트(보고용) → vite build → dist 아티팩트 - deploy.yaml: 수동 실행(workflow_dispatch) 배포 템플릿(SSH/rsync 예시) Co-Authored-By: Claude Opus 4.8 --- .gitea/workflows/ci.yaml | 40 ++++++++++++++++++++++++++++++++++ .gitea/workflows/deploy.yaml | 42 ++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 .gitea/workflows/ci.yaml create mode 100644 .gitea/workflows/deploy.yaml diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..79ecedd --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,40 @@ +name: CI + +on: + push: + branches: [main, dev] + pull_request: + branches: [main, dev] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '22' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + # 린트는 결과만 보고하고 빌드를 막지 않음 (--fix 없이 검사만) + - name: Lint (report only) + continue-on-error: true + run: | + npx oxlint . + npx eslint . + + - name: Build + run: npm run build + + - name: Upload build output + uses: actions/upload-artifact@v3 + with: + name: dist + path: dist + retention-days: 7 diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml new file mode 100644 index 0000000..03270b6 --- /dev/null +++ b/.gitea/workflows/deploy.yaml @@ -0,0 +1,42 @@ +name: Deploy (manual) + +# 배포 대상이 정해지면 아래 단계의 주석을 풀고 시크릿을 등록하세요. +# 저장소 Settings > Actions > Secrets 에 등록 필요: +# DEPLOY_HOST, DEPLOY_USER, DEPLOY_SSH_KEY, DEPLOY_PATH +on: + workflow_dispatch: {} + # push: + # tags: ['v*'] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '22' + cache: 'npm' + + - name: Build + run: | + npm ci + npm run build + + # ===== 배포 예시 (택1) — 사용 시 주석 해제 ===== + # 1) 정적 파일을 원격 서버로 rsync (Nginx 등 정적 호스팅) + # - name: Deploy via SSH/rsync + # uses: appleboy/scp-action@v0.1.7 + # with: + # host: ${{ secrets.DEPLOY_HOST }} + # username: ${{ secrets.DEPLOY_USER }} + # key: ${{ secrets.DEPLOY_SSH_KEY }} + # source: "dist/*" + # target: ${{ secrets.DEPLOY_PATH }} + # strip_components: 1 + + - name: Notice + run: echo "dist 빌드 완료. 배포 대상 지정 후 위 단계를 활성화하세요."