Skip to content

[CORE-214] Validate Condition Node Pattern in Form Workflow #484

[CORE-214] Validate Condition Node Pattern in Form Workflow

[CORE-214] Validate Condition Node Pattern in Form Workflow #484

Workflow file for this run

name: Snapshot Backend
on:
pull_request:
branches:
- main
- feat/CORE-36-implement-response-CRUD
jobs:
Lint:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: "1.24"
- name: Lint
uses: golangci/golangci-lint-action@v7
with:
version: v2.0
Test:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: "1.24"
- name: Setup Sqlc
uses: sqlc-dev/setup-sqlc@v4
with:
sqlc-version: "1.28.0"
- name: Setup mockery
uses: brokeyourbike/go-mockery-action@v0
with:
mockery-version: "3.5.5"
- name: Test
run: make test
Build:
needs: Test
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: "1.24"
- name: Setup Sqlc
uses: sqlc-dev/setup-sqlc@v4
with:
sqlc-version: "1.25.0"
- name: Setup mockery
uses: brokeyourbike/go-mockery-action@v0
with:
mockery-version: "3.5.5"
- name: Build
run: |
go mod download
make gen
env GOOS=linux go build -ldflags="-X 'main.BuildTime=$(date --utc '+%FT%TZ')' -X 'main.CommitHash=${{ github.sha }}'" -o bin/backend cmd/backend/main.go
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- 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
with:
cache-from: type=gha
cache-to: type=gha,mode=max
push: true
tags: |
nycusdc/core-system-backend:pr-${{ github.event.number }}
nycusdc/core-system-backend:${{ github.sha }}
context: .
Deploy:
needs: Build
runs-on: ubuntu-latest
steps:
- name: Extract PR body for webhook
uses: NYCU-SDC/Extract-PRbody@V1.0
id: extract
with:
pr_body: ${{ github.event.pull_request.body }}
- name: Process PR body for webhook
run: |
PR_TYPE=$(echo '${{ steps.extract.outputs.type_block }}' | jq -R -s @json)
PR_PURPOSE=$(echo '${{ steps.extract.outputs.purpose_block }}' | jq -R -s @json)
echo "PR_TYPE=$PR_TYPE" >> $GITHUB_ENV
echo "PR_PURPOSE=$PR_PURPOSE" >> $GITHUB_ENV
- name: Trigger n8n Snapshot Webhook
run: |
curl --location --fail-with-body -X POST https://webhook.sdc.nycu.club/webhook/deploy \
-H "Content-Type: application/json" \
-H "x-deploy-token: ${{ secrets.N8N_DEPLOY_TOKEN }}" \
-d '{
"source": {
"title": "Core System",
"repo": "${{ github.repository }}",
"branch": "${{ github.head_ref || github.ref_name }}",
"commit": "${{ github.sha }}",
"pr_number": "${{ github.event.pull_request.number }}",
"pr_title": "${{ github.event.pull_request.title }}",
"pr_type": ${{ env.PR_TYPE }},
"pr_purpose": ${{ env.PR_PURPOSE }}
},
"method": "deploy",
"metadata": {
"environment": "snapshot",
"component": "backend"
},
"setup": {
"inject_secret": {
"enable": true,
"project": "core-system",
"environment": "snapshot",
"secrets": [
{
"path": "/",
"secret_name": "OAUTH_PROXY_TOKEN",
"env_name": "OAUTH_PROXY_TOKEN"
},
{
"path": "/",
"secret_name": "DEFAULT_GLOBAL_ROLES",
"env_name": "DEFAULT_GLOBAL_ROLES"
},
{
"path": "/",
"secret_name": "DEFAULT_ORG_ROLES",
"env_name": "DEFAULT_ORG_ROLES"
},
{
"path": "/google-oauth",
"secret_name": "CLIENT_ID",
"env_name": "GOOGLE_OAUTH_CLIENT_ID"
},
{
"path": "/google-oauth",
"secret_name": "CLIENT_SECRET",
"env_name": "GOOGLE_OAUTH_CLIENT_SECRET"
},
{
"path": "/nycu-oauth",
"secret_name": "CLIENT_ID",
"env_name": "NYCU_OAUTH_CLIENT_ID"
},
{
"path": "/nycu-oauth",
"secret_name": "CLIENT_SECRET",
"env_name": "NYCU_OAUTH_CLIENT_SECRET"
},
{
"path": "/github-oauth",
"secret_name": "CLIENT_ID",
"env_name": "GITHUB_OAUTH_CLIENT_ID"
},
{
"path": "/github-oauth",
"secret_name": "CLIENT_SECRET",
"env_name": "GITHUB_OAUTH_CLIENT_SECRET"
}
]
}
},
"post": {
"notify_discord": {
"enable": true,
"channel": "core-system-activity"
},
"setup_domain": {
"enable": true,
"title": "Endpoint",
"name": "pr-${{ github.event.pull_request.number }}.core-system.sdc.nycu.club",
"value": "default-eng-deploy:internal"
}
}
}'