|
7898
|
6712
|
6
|
5
|
b7eb415d7a9689f1efec941bcb2dcd7d098e9c28
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
6800
|
4
|
1773833278
|
1773833278
|
1773832743
|
1773833279
|
|
1
|
|
0
|
Edit
Delete
|
|
8153
|
6903
|
6
|
5
|
b7eb415d7a9689f1efec941bcb2dcd7d098e9c28
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
7035
|
4
|
1773885833
|
1773885833
|
1773885613
|
1773885833
|
|
1
|
|
0
|
Edit
Delete
|
|
8454
|
7068
|
6
|
5
|
9771b23ae7aaee164f15f9c4ccbdb18eb68fc71f
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
7289
|
4
|
1773929909
|
1773929909
|
1773929407
|
1773929909
|
|
1
|
|
0
|
Edit
Delete
|
|
8563
|
7113
|
6
|
5
|
979d9c81063fbda12f1445bf80b0c0027b0fbac2
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
7388
|
4
|
1773940582
|
1773940582
|
1773939780
|
1773940582
|
|
1
|
|
0
|
Edit
Delete
|
|
8752
|
7231
|
6
|
5
|
0900b15d607e5c78f97fec16a73357ad4f814390
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
7568
|
4
|
1774221657
|
1774221657
|
1774220984
|
1774221657
|
|
1
|
|
0
|
Edit
Delete
|
|
9003
|
7290
|
6
|
5
|
339ea969ec2633756fb1a155d47723d0f61396a4
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
7787
|
4
|
1774229560
|
1774229561
|
1774229062
|
1774229561
|
|
1
|
|
0
|
Edit
Delete
|
|
9076
|
7309
|
6
|
5
|
339ea969ec2633756fb1a155d47723d0f61396a4
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
7842
|
4
|
1774231450
|
1774231450
|
1774231240
|
1774231450
|
|
1
|
|
0
|
Edit
Delete
|
|
9206
|
7415
|
6
|
5
|
67078f9a95f53530156ad27027eafe15a3126e89
|
0
|
🔬 完整安全审计
|
1
|
name: Database Security Audit
"on":
pu name: Database Security Audit
"on":
push:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
pull_request:
branches: [main, develop]
paths:
- 'backend/src/**/*.ts'
- 'backend/prisma/**'
schedule:
# 每天凌晨 2 点执行完整审计
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
full_audit:
description: '执行完整审计(包含 RLS 迁移建议)'
required: false
default: 'false'
type: boolean
env:
NODE_VERSION: "18"
jobs:
full-audit:
name: "\U0001F52C 完整安全审计"
runs-on: ubuntu-latest
if: github.event_name == 'schedule' || github.event.inputs.full_audit == 'true'
steps:
- name: "\U0001F4E5 Checkout code"
uses: actions/checkout@v4
- name: "\U0001F7E2 Setup Node.js"
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: "\U0001F4E6 Setup pnpm"
uses: pnpm/action-setup@v2
with:
version: "8"
- name: "\U0001F4E5 Install dependencies"
run: pnpm install --frozen-lockfile
- name: "\U0001F50D 生成 RLS 迁移脚本"
run: |
cd backend
npm run rls:generate 2>&1 | tee rls-migration.sql
- name: "\U0001F4CA 上传迁移脚本"
uses: actions/upload-artifact@v4
with:
name: rls-migration-scripts
path: |
backend/rls-migration.sql
backend/prisma/rls-policies/
- if: failure()
name: "\U0001F4E7 发送审计通知"
uses: actions/github-script@v7
with:
script: "// 创建 Issue 记录审计失败\ngithub.rest.issues.create({\n owner: context.repo.owner,\n repo: context.repo.repo,\n title: '\U0001F6A8 数据库安全审计失败 - ' + new Date().toISOString().split('T')[0],\n body: `\n ## 审计失败通知\n\n **执行时间**: ${new Date().toISOString()}\n **工作流运行**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n 请立即检查并修复安全问题。\n `,\n labels: ['security', 'urgent']\n});\n"
...
|
full-audit
|
["tenant-security","n1-query-detection ["tenant-security","n1-query-detection","rls-coverage","permission-security"]...
|
["ubuntu-latest"]
|
7979
|
4
|
1774263608
|
1774263608
|
1774262375
|
1774263609
|
|
1
|
|
0
|
Edit
Delete
|
|
25137
|
18563
|
6
|
5
|
3852c841f557d197a777c094ed1243a8198cdf8e
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Verify Prisma schema mirror
run: pnpm run audit:prisma-schema-source
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 prisma/schema 文件夹真源对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
21532
|
2
|
1777427072
|
1777427102
|
1777426590
|
1777427102
|
|
0
|
|
0
|
Edit
Delete
|
|
25284
|
18597
|
6
|
5
|
ec0c3a40069e8b31e369ceb9a13c7fd062040179
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Verify Prisma schema mirror
run: pnpm run audit:prisma-schema-source
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 prisma/schema 文件夹真源对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
21628
|
2
|
1777432567
|
1777440656
|
1777432567
|
1777440656
|
|
0
|
|
0
|
Edit
Delete
|
|
25568
|
18853
|
6
|
5
|
982b47544d9cefb513875cc84c6c36bf1ee27fb2
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Verify Prisma schema mirror
run: pnpm run audit:prisma-schema-source
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 prisma/schema 文件夹真源对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
21909
|
2
|
1777515957
|
1777515988
|
1777515699
|
1777515988
|
|
0
|
|
0
|
Edit
Delete
|
|
25676
|
18899
|
6
|
5
|
00e6c41c98f5eca066cac8efd4dc9e91dfe5f583
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Verify Prisma schema mirror
run: pnpm run audit:prisma-schema-source
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 prisma/schema 文件夹真源对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
22000
|
2
|
1777531878
|
1777534661
|
1777531656
|
1777534661
|
|
0
|
|
0
|
Edit
Delete
|
|
25996
|
19097
|
6
|
5
|
6845ebac54cb057c62116944a21c3a04b78708bf
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Verify Prisma schema mirror
run: pnpm run audit:prisma-schema-source
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 prisma/schema 文件夹真源对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
22270
|
2
|
1777597713
|
1777608854
|
1777597569
|
1777608854
|
|
0
|
|
0
|
Edit
Delete
|
|
29481
|
22434
|
6
|
5
|
cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Verify Prisma schema mirror
run: pnpm run audit:prisma-schema-source
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 prisma/schema 文件夹真源对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
25752
|
2
|
1778598714
|
1778609368
|
1778598488
|
1778609368
|
|
0
|
|
0
|
Edit
Delete
|
|
25010
|
18455
|
6
|
5
|
ed4858a2d074f26e7df34213d9ffcbe86c38a248
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 schema.prisma 对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
../scripts/ci-migration-check.sh
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
21410
|
2
|
1777395369
|
1777395549
|
1777395369
|
1777395549
|
|
0
|
|
0
|
Edit
Delete
|
|
24108
|
18005
|
6
|
5
|
550a263d501f27c775e72e10c2abba3b0b0d963c
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: "8"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Create PostgreSQL extensions
run: |
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
../scripts/ci-migration-check.sh
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Check migration status
run: |
npx prisma migrate status
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Dry-run migration (preview)
run: |
# This shows what migrations would do without actually running them
npx prisma migrate diff --from-migrations ./prisma/migrations --to-schema-datamodel ./prisma/schema.prisma --script || true
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
20723
|
2
|
1777277287
|
1777277420
|
1777277101
|
1777277421
|
|
0
|
|
0
|
Edit
Delete
|
|
30497
|
23142
|
6
|
5
|
230f7616b5f0876ecd095ffd76c841876a8381ce
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
env:
NODE_OPTIONS: --max-old-space-size=8192
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: https://gitea.com/actions/checkout@v4
- name: Install pnpm
uses: https://gitea.com/pnpm/action-setup@v4
- name: Setup Node.js
uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Verify Prisma schema mirror
run: pnpm -C backend run audit:prisma-schema-source
- name: Install psql client
run: |
if ! command -v psql >/dev/null; then
sudo apt-get update -qq && sudo apt-get install -y -qq postgresql-client
fi
- name: Create PostgreSQL extensions on deploy DB
run: |
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
psql -h postgres -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: ./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Validate Prisma schema
run: npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Generate Prisma Client
run: npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: ./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: https://gitea.com/actions/upload-artifact@v3
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
26655
|
2
|
1778829612
|
1778830497
|
1778828542
|
1778830497
|
|
0
|
|
0
|
Edit
Delete
|
|
30580
|
23225
|
6
|
5
|
e8e3ea6b39e0d7d48f888052ef823f11e2327271
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
env:
NODE_OPTIONS: --max-old-space-size=8192
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: https://gitea.com/actions/checkout@v4
- name: Install pnpm
uses: https://gitea.com/pnpm/action-setup@v4
- name: Setup Node.js
uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Verify Prisma schema mirror
run: pnpm -C backend run audit:prisma-schema-source
- name: Install psql client
run: |
if ! command -v psql >/dev/null; then
sudo apt-get update -qq && sudo apt-get install -y -qq postgresql-client
fi
- name: Create PostgreSQL extensions on deploy DB
run: |
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
psql -h postgres -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: ./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Validate Prisma schema
run: npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Generate Prisma Client
run: npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: ./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: https://gitea.com/actions/upload-artifact@v3
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
26740
|
2
|
1778853215
|
1778853277
|
1778853213
|
1778853277
|
|
0
|
|
0
|
Edit
Delete
|
|
30585
|
23227
|
6
|
5
|
e8e3ea6b39e0d7d48f888052ef823f11e2327271
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
env:
NODE_OPTIONS: --max-old-space-size=8192
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: https://gitea.com/actions/checkout@v4
- name: Install pnpm
uses: https://gitea.com/pnpm/action-setup@v4
- name: Setup Node.js
uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Verify Prisma schema mirror
run: pnpm -C backend run audit:prisma-schema-source
- name: Install psql client
run: |
if ! command -v psql >/dev/null; then
sudo apt-get update -qq && sudo apt-get install -y -qq postgresql-client
fi
- name: Create PostgreSQL extensions on deploy DB
run: |
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h postgres -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
psql -h postgres -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h postgres -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: ./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Validate Prisma schema
run: npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Generate Prisma Client
run: npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: ./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@postgres:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@postgres:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: https://gitea.com/actions/upload-artifact@v3
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
26743
|
2
|
1778853562
|
1778853620
|
1778853215
|
1778853620
|
|
0
|
|
0
|
Edit
Delete
|
|
30443
|
23094
|
6
|
5
|
adbaa604f38b6cd3e55859ac5b2f5dd4931b3d4a
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
env:
NODE_OPTIONS: --max-old-space-size=8192
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: https://gitea.com/actions/checkout@v4
- name: Install pnpm
uses: https://gitea.com/pnpm/action-setup@v4
- name: Setup Node.js
uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Verify Prisma schema mirror
run: pnpm -C backend run audit:prisma-schema-source
- name: Install psql client
run: |
if ! command -v psql >/dev/null; then
sudo apt-get update -qq && sudo apt-get install -y -qq postgresql-client
fi
- name: Create PostgreSQL extensions on deploy DB
run: |
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: ./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: ./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: https://gitea.com/actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
26603
|
2
|
1778815336
|
1778815717
|
1778815336
|
1778815717
|
|
0
|
|
0
|
Edit
Delete
|
|
30448
|
23096
|
6
|
5
|
adbaa604f38b6cd3e55859ac5b2f5dd4931b3d4a
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
env:
NODE_OPTIONS: --max-old-space-size=8192
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: https://gitea.com/actions/checkout@v4
- name: Install pnpm
uses: https://gitea.com/pnpm/action-setup@v4
- name: Setup Node.js
uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Verify Prisma schema mirror
run: pnpm -C backend run audit:prisma-schema-source
- name: Install psql client
run: |
if ! command -v psql >/dev/null; then
sudo apt-get update -qq && sudo apt-get install -y -qq postgresql-client
fi
- name: Create PostgreSQL extensions on deploy DB
run: |
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: ./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: ./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: https://gitea.com/actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
26606
|
2
|
1778816784
|
1778816837
|
1778815338
|
1778816838
|
|
0
|
|
0
|
Edit
Delete
|
|
29690
|
22510
|
6
|
5
|
534799e0b1707368df37aff7b3df545a6ca1064a
|
0
|
migration-safety
|
1
|
name: Database Migration Safety Check
"on" name: Database Migration Safety Check
"on":
push:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
pull_request:
paths:
- 'backend/prisma/migrations/**'
- 'backend/prisma/schema.prisma'
- 'backend/prisma/schema/**'
env:
NODE_OPTIONS: --max-old-space-size=8192
jobs:
migration-safety:
name: migration-safety
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: "20"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: ./backend
- name: Verify Prisma schema mirror
run: pnpm run audit:prisma-schema-source
working-directory: ./backend
- name: Create PostgreSQL extensions on deploy DB
run: |
# 主部署库
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_revops_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Create shadow DB for prisma migrate diff
run: |
# prisma migrate diff 在 ephemeral shadow DB 上 replay 历史 migrations,
# 然后与 prisma/schema 文件夹真源对比生成 drift SQL。必须是独立空库,不能用 deploy DB
psql -h localhost -U juhi -d postgres -c "CREATE DATABASE juhi_shadow_test;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -h localhost -U juhi -d juhi_shadow_test -c "CREATE EXTENSION IF NOT EXISTS vector;"
env:
PGPASSWORD: test_password
- name: Run migration safety checks
run: |
# Run the comprehensive migration safety check
./scripts/ci-migration-check.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Validate Prisma schema
run: |
npx prisma validate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Generate Prisma Client
run: |
npx prisma generate
working-directory: ./backend
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
- name: Migration deploy gate (HARD)
run: |
./scripts/ci-migration-deploy-gate.sh
env:
DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
DIRECT_URL: postgresql://juhi:test_password@localhost:5432/juhi_revops_test
SHADOW_DATABASE_URL: postgresql://juhi:test_password@localhost:5432/juhi_shadow_test
- if: always()
name: Upload migration drift artifacts
uses: actions/upload-artifact@v4
with:
if-no-files-found: warn
name: migration-drift-reports
path: |
reports/migration-drift-diff.latest.sql
reports/migration-drift-summary.latest.json
retention-days: "14"
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: juhi_revops_test
POSTGRES_PASSWORD: test_password
POSTGRES_USER: juhi
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
...
|
migration-safety
|
null
|
["ubuntu-latest"]
|
25873
|
2
|
1778639248
|
1778639279
|
1778624987
|
1778639279
|
|
0
|
|
0
|
Edit
Delete
|
|
46125
|
26797
|
116
|
5
|
e301a4946cefeacf45b23728550703c67ef0c65c
|
0
|
validate
|
1
|
name: Create sealed database snapshot for isolated name: Create sealed database snapshot for isolated restoration
"on":
push:
branches: [codex/runner-maintenance-diagnostic-20261101]
paths: [.gitea/workflows/gitea-database-snapshot.yml]
workflow_dispatch:
jobs:
validate:
name: validate
runs-on: ubuntu-latest
if: github.repository == 'luoanwu/enterprise-platform'
steps:
- name: Validate fixed reviewed inputs in private resource limited units
run: |
set -eu
python3 <<'PY'
import os,re,subprocess,json
maintenanceLoaderSha=os.environ.get('GITHUB_SHA','')
if not re.fullmatch('[0-9a-f]{40}',maintenanceLoaderSha):raise RuntimeError('FIXED_SHA_REQUIRED')
command=['git','-c','safe.directory=/home/git/repositories/luoanwu/enterprise-platform.git','-c','core.hooksPath=/dev/null','-C','/home/git/repositories/luoanwu/enterprise-platform.git','show',maintenanceLoaderSha+':ops/gitea-r1/snapshot-database.py']
result=subprocess.run(command,capture_output=True,timeout=30)
if result.returncode:raise RuntimeError('FIXED_SCRIPT_UNAVAILABLE')
try:exec(compile(result.stdout,'snapshot-database.py','exec'))
except Exception as error:
message=str(error)
safe=message if isinstance(error,RuntimeError) and re.fullmatch(r'[A-Z_]+(?::[A-Za-z0-9_./,:]+)?',message) else type(error).__name__
print('GITEA_DATABASE_SNAPSHOT_JSON '+json.dumps({'kind':'GiteaDatabaseSnapshot','ci':{'sourceSha':maintenanceLoaderSha,'runId':os.environ.get('GITHUB_RUN_ID')},'status':'FAILED_PREPARATION','error':safe,'releaseEligible':False,'liveServicesChanged':False,'liveDatabaseChanged':False}),flush=True)
raise SystemExit(1)
PY
shell: bash
timeout-minutes: "95"
permissions:
contents: read
...
|
validate
|
null
|
["ubuntu-latest"]
|
37578
|
2
|
1793529338
|
1793529338
|
1793529279
|
1793529338
|
|
0
|
|
0
|
Edit
Delete
|
|
46336
|
26882
|
116
|
5
|
9e4041b4399c64c96e1ac03bc570df7a004ec3da
|
0
|
validate
|
1
|
name: Create requested minimal repository maintena name: Create requested minimal repository maintenance token with encrypted owner handoff
"on":
push:
branches: [codex/runner-maintenance-diagnostic-20261101]
paths: [.gitea/workflows/gitea-owner-token-bootstrap.yml]
workflow_dispatch:
jobs:
validate:
name: validate
runs-on: ubuntu-latest
if: github.repository == 'luoanwu/enterprise-platform'
steps:
- name: Validate fixed reviewed inputs in private resource limited units
run: |
set -eu
python3 <<'PY'
import os,re,subprocess,json
maintenanceLoaderSha=os.environ.get('GITHUB_SHA','')
if not re.fullmatch('[0-9a-f]{40}',maintenanceLoaderSha):raise RuntimeError('FIXED_SHA_REQUIRED')
command=['git','-c','safe.directory=/home/git/repositories/luoanwu/enterprise-platform.git','-c','core.hooksPath=/dev/null','-C','/home/git/repositories/luoanwu/enterprise-platform.git','show',maintenanceLoaderSha+':ops/gitea-r1/create-repository-maintenance-token.py']
result=subprocess.run(command,capture_output=True,timeout=30)
if result.returncode:raise RuntimeError('FIXED_SCRIPT_UNAVAILABLE')
try:exec(compile(result.stdout,'create-repository-maintenance-token.py','exec'))
except Exception as error:
message=str(error)
safe=message if isinstance(error,RuntimeError) and re.fullmatch(r'[A-Z_]+(?::[A-Za-z0-9_./,:]+)?',message) else type(error).__name__
print('GITEA_OWNER_TOKEN_HANDOFF_JSON '+json.dumps({'kind':'RequestedRepositoryMaintenanceCredential','ci':{'sourceSha':maintenanceLoaderSha,'runId':os.environ.get('GITHUB_RUN_ID')},'status':'FAILED_PREPARATION','error':safe,'releaseEligible':False,'liveServicesChanged':False,'liveDatabaseChanged':False}),flush=True)
raise SystemExit(1)
PY
shell: bash
timeout-minutes: "95"
permissions:
contents: read
...
|
validate
|
null
|
["ubuntu-latest"]
|
37727
|
1
|
1793545631
|
1793545632
|
1793545527
|
1793545632
|
|
0
|
|
0
|
Edit
Delete
|
|
46128
|
26800
|
116
|
5
|
14b408aad51b82532a3f3c4fc5f95053073b6179
|
0
|
validate
|
1
|
name: Create read only snapshot as database owner name: Create read only snapshot as database owner with isolated output
"on":
push:
branches: [codex/runner-maintenance-diagnostic-20261101]
paths: [.gitea/workflows/gitea-database-snapshot.yml]
workflow_dispatch:
jobs:
validate:
name: validate
runs-on: ubuntu-latest
if: github.repository == 'luoanwu/enterprise-platform'
steps:
- name: Validate fixed reviewed inputs in private resource limited units
run: |
set -eu
python3 <<'PY'
import os,re,subprocess,json
maintenanceLoaderSha=os.environ.get('GITHUB_SHA','')
if not re.fullmatch('[0-9a-f]{40}',maintenanceLoaderSha):raise RuntimeError('FIXED_SHA_REQUIRED')
command=['git','-c','safe.directory=/home/git/repositories/luoanwu/enterprise-platform.git','-c','core.hooksPath=/dev/null','-C','/home/git/repositories/luoanwu/enterprise-platform.git','show',maintenanceLoaderSha+':ops/gitea-r1/snapshot-database.py']
result=subprocess.run(command,capture_output=True,timeout=30)
if result.returncode:raise RuntimeError('FIXED_SCRIPT_UNAVAILABLE')
try:exec(compile(result.stdout,'snapshot-database.py','exec'))
except Exception as error:
message=str(error)
safe=message if isinstance(error,RuntimeError) and re.fullmatch(r'[A-Z_]+(?::[A-Za-z0-9_./,:]+)?',message) else type(error).__name__
print('GITEA_DATABASE_SNAPSHOT_JSON '+json.dumps({'kind':'GiteaDatabaseSnapshot','ci':{'sourceSha':maintenanceLoaderSha,'runId':os.environ.get('GITHUB_RUN_ID')},'status':'FAILED_PREPARATION','error':safe,'releaseEligible':False,'liveServicesChanged':False,'liveDatabaseChanged':False}),flush=True)
raise SystemExit(1)
PY
shell: bash
timeout-minutes: "95"
permissions:
contents: read
...
|
validate
|
null
|
["ubuntu-latest"]
|
37581
|
1
|
1793529554
|
1793529630
|
1793529489
|
1793529630
|
|
0
|
|
0
|
Edit
Delete
|
|
39895
|
25664
|
137
|
5
|
949feb2413d6458794dcd2491c4babbbce0c15c1
|
0
|
CodeQL analysis
|
1
|
name: CodeQL analysis
"on":
push:
name: CodeQL analysis
"on":
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 3 * * 0'
jobs:
call-codeQL-analysis:
name: CodeQL analysis
runs-on: []
uses: actions/reusable-workflows/.github/workflows/codeql-analysis.yml@main
...
|
call-codeQL-analysis
|
null
|
[]
|
33230
|
2
|
1791845106
|
1791845106
|
1791844715
|
1791845107
|
|
0
|
|
0
|
Edit
Delete
|
|
8729
|
7229
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
7538
|
2
|
1774206041
|
1774206127
|
1774206040
|
1774206127
|
|
0
|
|
0
|
Edit
Delete
|
|
9089
|
7322
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
7856
|
2
|
1774234842
|
1774234854
|
1774234840
|
1774234854
|
|
0
|
|
0
|
Edit
Delete
|
|
12953
|
9535
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
10950
|
2
|
1774839621
|
1774839661
|
1774839618
|
1774839661
|
|
0
|
|
0
|
Edit
Delete
|
|
16476
|
11711
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
13769
|
2
|
1775444420
|
1775444445
|
1775444418
|
1775444445
|
|
0
|
|
0
|
Edit
Delete
|
|
18701
|
13753
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
15939
|
2
|
1776049253
|
1776049279
|
1776049250
|
1776049279
|
|
0
|
|
0
|
Edit
Delete
|
|
21265
|
15838
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
18279
|
2
|
1776654052
|
1776655070
|
1776654050
|
1776655070
|
|
0
|
|
0
|
Edit
Delete
|
|
24034
|
17942
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
20653
|
2
|
1777258852
|
1777258943
|
1777258850
|
1777258943
|
|
0
|
|
0
|
Edit
Delete
|
|
26937
|
19964
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
23213
|
2
|
1777863643
|
1777863692
|
1777863640
|
1777863692
|
|
0
|
|
0
|
Edit
Delete
|
|
29023
|
21995
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
25299
|
2
|
1778468442
|
1778468473
|
1778468440
|
1778468473
|
|
0
|
|
0
|
Edit
Delete
|
|
30821
|
23381
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
26963
|
2
|
1779073403
|
1779073438
|
1779073228
|
1779073438
|
|
0
|
|
0
|
Edit
Delete
|
|
30844
|
23387
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
26984
|
2
|
1779678028
|
1779678118
|
1779678028
|
1779678119
|
|
0
|
|
0
|
Edit
Delete
|
|
30860
|
23391
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27000
|
2
|
1780282828
|
1780282919
|
1780282828
|
1780282919
|
|
0
|
|
0
|
Edit
Delete
|
|
30861
|
23392
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27001
|
2
|
1780887629
|
1780887670
|
1780887628
|
1780887670
|
|
0
|
|
0
|
Edit
Delete
|
|
30868
|
23394
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27008
|
2
|
1781492429
|
1781492519
|
1781492428
|
1781492519
|
|
0
|
|
0
|
Edit
Delete
|
|
30869
|
23395
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27009
|
2
|
1782097229
|
1782097259
|
1782097228
|
1782097259
|
|
0
|
|
0
|
Edit
Delete
|
|
30870
|
23396
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27010
|
2
|
1782702029
|
1782703072
|
1782702028
|
1782703072
|
|
0
|
|
0
|
Edit
Delete
|
|
30879
|
23401
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27019
|
2
|
1783306829
|
1783306920
|
1783306828
|
1783306920
|
|
0
|
|
0
|
Edit
Delete
|
|
30891
|
23409
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27031
|
2
|
1783911629
|
1783911720
|
1783911628
|
1783911720
|
|
0
|
|
0
|
Edit
Delete
|
|
30930
|
23429
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27055
|
2
|
1784516429
|
1784516478
|
1784516428
|
1784516478
|
|
0
|
|
0
|
Edit
Delete
|
|
30978
|
23453
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27094
|
2
|
1785121229
|
1785121279
|
1785121228
|
1785121280
|
|
0
|
|
0
|
Edit
Delete
|
|
31032
|
23477
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27143
|
2
|
1785726000
|
1785726028
|
1785726000
|
1785726028
|
|
0
|
|
0
|
Edit
Delete
|
|
31033
|
23478
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27144
|
2
|
1786330800
|
1786330830
|
1786330800
|
1786330830
|
|
0
|
|
0
|
Edit
Delete
|
|
31050
|
23487
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27159
|
2
|
1786935601
|
1786935627
|
1786935600
|
1786935627
|
|
0
|
|
0
|
Edit
Delete
|
|
31101
|
23513
|
13
|
5
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
Analyze (java)
|
1
|
name: CodeQL Analysis
"on":
push:
name: CodeQL Analysis
"on":
push:
branches: [develop, master, main]
pull_request:
branches: [develop, master, main]
schedule:
# 每周一凌晨3点运行
- cron: '0 3 * * 1'
jobs:
analyze:
name: Analyze (java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
cache: gradle
distribution: temurin
java-version: "17"
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
- name: Grant Execute Permission
run: chmod +x ./gradlew
- name: Build
run: ./gradlew assembleDebug --stacktrace
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
timeout-minutes: "30"
strategy:
fail-fast: "false"
matrix:
language:
- java
permissions:
actions: read
contents: read
security-events: write
...
|
analyze
|
null
|
["ubuntu-latest"]
|
27195
|
2
|
1787540400
|
1787540423
|
1787540400
|
1787540423
|
|
0
|
|
0
|
Edit
Delete
|