Skip to content

Merge pull request #34 from NYCU-SDC/refactor/CORE-220-seperate-form-… #126

Merge pull request #34 from NYCU-SDC/refactor/CORE-220-seperate-form-…

Merge pull request #34 from NYCU-SDC/refactor/CORE-220-seperate-form-… #126

Workflow file for this run

name: Dev
on:
push:
branches:
- main
tags:
- v*
jobs:
Lint:
name: Lint with ESLint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run ESLint
run: pnpm eslint .
Format:
name: Check formatting with Prettier
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run Prettier
run: pnpm prettier . --check
Build:
name: Build Vite production
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build Vite production
run: pnpm run build
Push-Image:
name: Build Docker image
runs-on: ubuntu-latest
needs: [Lint, Format, Build]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
- name: Build and Push Docker image
uses: docker/build-push-action@v6
if: ${{ contains(github.ref, 'refs/heads/main') }}
with:
cache-from: type=gha
cache-to: type=gha,mode=max
push: true
tags: |
nycusdc/core-system-frontend:dev
nycusdc/core-system-frontend:${{ github.sha }}
context: .
- name: Build and Push Docker image
uses: docker/build-push-action@v6
if: ${{ contains(github.ref, 'refs/tags/') }}
with:
cache-from: type=gha
cache-to: type=gha,mode=max
push: true
tags: |
nycusdc/core-system-frontend:stage
nycusdc/core-system-frontend:${{ github.sha }}
context: .
Deploy-Dev:
if: ${{ contains(github.ref, 'refs/heads/main') }}
needs: Push-Image
runs-on: ubuntu-latest
steps:
- name: Trigger n8n Deploy Webhook
run: |
curl --location --fail-with-body --request POST 'https://webhook.sdc.nycu.club/webhook/deploy' \
--header 'Content-Type: application/json' \
--header "x-deploy-token: ${{ secrets.N8N_DEPLOY_TOKEN }}" \
--data-raw '{
"source": {
"title": "Core System",
"repo": "${{ github.repository }}",
"branch": "${{ github.head_ref || github.ref_name }}",
"commit": "${{ github.sha }}"
},
"method": "deploy",
"metadata": {
"environment": "dev",
"component": "frontend"
},
"post": {
"notify_discord": {
"enable": true,
"channel": "core-system-activity"
},
"setup_domain": {
"enable": true,
"title": "Endpoint",
"name": "dev.core-system.sdc.nycu.club",
"value": "default-eng-deploy:internal"
}
}
}'
Deploy-Stage:
if: ${{ contains(github.ref, 'refs/tags/') }}
needs: Push-Image
runs-on: ubuntu-latest
steps:
- name: Trigger n8n Deploy Webhook
run: |
curl --location --fail-with-body --request POST 'https://webhook.sdc.nycu.club/webhook/deploy' \
--header 'Content-Type: application/json' \
--header "x-deploy-token: ${{ secrets.N8N_DEPLOY_TOKEN }}" \
--data-raw '{
"source": {
"title": "Core System",
"repo": "${{ github.repository }}",
"branch": "${{ github.head_ref || github.ref_name }}",
"commit": "${{ github.sha }}"
},
"method": "deploy",
"metadata": {
"environment": "stage",
"component": "frontend"
},
"post": {
"notify_discord": {
"enable": true,
"channel": "core-system-activity"
},
"setup_domain": {
"enable": true,
"title": "Endpoint",
"name": "dev.core-system.sdc.nycu.club",
"value": "default-eng-deploy:internal"
}
}
}'