aios-core 2.2.1 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aios-core/.session/current-session.json +14 -14
- package/.aios-core/cli/commands/migrate/validate.js +1 -1
- package/.aios-core/core/docs/session-update-pattern.md +17 -10
- package/.aios-core/core/elicitation/elicitation-engine.js +11 -6
- package/.aios-core/core/elicitation/session-manager.js +2 -1
- package/.aios-core/core/registry/registry-schema.json +166 -166
- package/.aios-core/core/registry/service-registry.json +6585 -6585
- package/.aios-core/core-config.yaml +12 -1
- package/.aios-core/data/agent-config-requirements.yaml +5 -5
- package/.aios-core/development/agents/devops.md +12 -0
- package/.aios-core/development/scripts/squad/README.md +112 -0
- package/.aios-core/development/scripts/squad/index.js +41 -0
- package/.aios-core/development/scripts/squad/squad-loader.js +359 -0
- package/.aios-core/development/scripts/squad/squad-validator.js +685 -0
- package/.aios-core/development/tasks/add-mcp.md +11 -5
- package/.aios-core/development/tasks/search-mcp.md +309 -0
- package/.aios-core/development/tasks/setup-mcp-docker.md +11 -8
- package/.aios-core/development/tasks/squad-creator-validate.md +151 -0
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +3 -3
- package/.aios-core/index.d.ts +7 -7
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +1 -1
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
- package/.aios-core/infrastructure/tests/utilities-audit-results.json +500 -500
- package/.aios-core/infrastructure/tools/README.md +1 -1
- package/.aios-core/install-manifest.yaml +4 -1
- package/.aios-core/manifests/schema/manifest-schema.json +190 -190
- package/.aios-core/manifests/workers.csv +203 -203
- package/.aios-core/package.json +102 -102
- package/.aios-core/product/templates/activation-instructions-template.md +7 -7
- package/.aios-core/product/templates/adr.hbs +125 -125
- package/.aios-core/product/templates/component-react-tmpl.tsx +98 -98
- package/.aios-core/product/templates/dbdr.hbs +241 -241
- package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -102
- package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -205
- package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -175
- package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -175
- package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -300
- package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -152
- package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -222
- package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -154
- package/.aios-core/product/templates/epic.hbs +212 -212
- package/.aios-core/product/templates/eslintrc-security.json +32 -32
- package/.aios-core/product/templates/github-actions-cd.yml +212 -212
- package/.aios-core/product/templates/github-actions-ci.yml +172 -172
- package/.aios-core/product/templates/pmdr.hbs +186 -186
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
- package/.aios-core/product/templates/prd.hbs +201 -201
- package/.aios-core/product/templates/shock-report-tmpl.html +502 -502
- package/.aios-core/product/templates/story.hbs +263 -263
- package/.aios-core/product/templates/task.hbs +170 -170
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
- package/.aios-core/product/templates/tmpl-view.sql +177 -177
- package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -240
- package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -233
- package/.aios-core/schemas/squad-schema.json +185 -0
- package/.aios-core/scripts/README.md +90 -322
- package/.aios-core/scripts/migrate-framework-docs.sh +300 -300
- package/.claude/rules/mcp-usage.md +116 -100
- package/LICENSE +48 -48
- package/README.md +3 -4
- package/bin/aios-init.js +11 -6
- package/bin/aios.js +2 -1
- package/package.json +2 -3
- package/packages/installer/package.json +39 -39
- package/packages/installer/tests/integration/environment-configuration.test.js +2 -2
- package/packages/installer/tests/unit/env-template.test.js +4 -3
- package/templates/squad/LICENSE +21 -21
- package/templates/squad/README.md +37 -37
- package/templates/squad/agents/example-agent.yaml +36 -36
- package/templates/squad/package.json +19 -19
- package/templates/squad/squad.yaml +25 -25
- package/templates/squad/tasks/example-task.yaml +46 -46
- package/templates/squad/templates/example-template.md +24 -24
- package/templates/squad/tests/example-agent.test.js +53 -53
- package/templates/squad/workflows/example-workflow.yaml +54 -54
- package/tools/diagnose-npx-issue.ps1 +96 -96
- package/tools/quick-diagnose.cmd +85 -85
- package/tools/quick-diagnose.ps1 +117 -117
- package/.aios-core/core/data/agent-config-requirements.yaml +0 -368
- package/.aios-core/core/data/aios-kb.md +0 -924
- package/.aios-core/core/data/workflow-patterns.yaml +0 -267
- package/.aios-core/product/templates/1mcp-config.yaml +0 -225
- package/.aios-core/scripts/context-detector.js +0 -226
- package/.aios-core/scripts/elicitation-engine.js +0 -385
- package/.aios-core/scripts/elicitation-session-manager.js +0 -300
- package/.claude/CLAUDE.md +0 -221
|
@@ -1,212 +1,212 @@
|
|
|
1
|
-
# GitHub Actions CD Template
|
|
2
|
-
# Purpose: Continuous Deployment workflow for staging and production
|
|
3
|
-
# Generated by: AIOS-FullStack @github-devops agent
|
|
4
|
-
#
|
|
5
|
-
# Usage: Copy to .github/workflows/cd.yml and customize
|
|
6
|
-
|
|
7
|
-
name: CD
|
|
8
|
-
|
|
9
|
-
on:
|
|
10
|
-
push:
|
|
11
|
-
branches: [main]
|
|
12
|
-
tags: ['v*']
|
|
13
|
-
workflow_dispatch:
|
|
14
|
-
inputs:
|
|
15
|
-
environment:
|
|
16
|
-
description: 'Deployment environment'
|
|
17
|
-
required: true
|
|
18
|
-
default: 'staging'
|
|
19
|
-
type: choice
|
|
20
|
-
options:
|
|
21
|
-
- staging
|
|
22
|
-
- production
|
|
23
|
-
|
|
24
|
-
env:
|
|
25
|
-
NODE_VERSION: '20.x'
|
|
26
|
-
# Configure your deployment targets
|
|
27
|
-
# VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
|
28
|
-
# VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
29
|
-
|
|
30
|
-
jobs:
|
|
31
|
-
# ============================================================================
|
|
32
|
-
# DETERMINE ENVIRONMENT
|
|
33
|
-
# ============================================================================
|
|
34
|
-
setup:
|
|
35
|
-
name: Setup Deployment
|
|
36
|
-
runs-on: ubuntu-latest
|
|
37
|
-
outputs:
|
|
38
|
-
environment: ${{ steps.set-env.outputs.environment }}
|
|
39
|
-
version: ${{ steps.set-version.outputs.version }}
|
|
40
|
-
steps:
|
|
41
|
-
- name: Determine environment
|
|
42
|
-
id: set-env
|
|
43
|
-
run: |
|
|
44
|
-
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
45
|
-
echo "environment=${{ github.event.inputs.environment }}" >> $GITHUB_OUTPUT
|
|
46
|
-
elif [[ "${{ github.ref }}" == refs/tags/v* ]]; then
|
|
47
|
-
echo "environment=production" >> $GITHUB_OUTPUT
|
|
48
|
-
else
|
|
49
|
-
echo "environment=staging" >> $GITHUB_OUTPUT
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
- name: Set version
|
|
53
|
-
id: set-version
|
|
54
|
-
run: |
|
|
55
|
-
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
|
|
56
|
-
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
57
|
-
else
|
|
58
|
-
echo "version=${{ github.sha }}" >> $GITHUB_OUTPUT
|
|
59
|
-
fi
|
|
60
|
-
|
|
61
|
-
# ============================================================================
|
|
62
|
-
# BUILD FOR DEPLOYMENT
|
|
63
|
-
# ============================================================================
|
|
64
|
-
build:
|
|
65
|
-
name: Build for ${{ needs.setup.outputs.environment }}
|
|
66
|
-
runs-on: ubuntu-latest
|
|
67
|
-
needs: setup
|
|
68
|
-
environment: ${{ needs.setup.outputs.environment }}
|
|
69
|
-
steps:
|
|
70
|
-
- name: Checkout code
|
|
71
|
-
uses: actions/checkout@v4
|
|
72
|
-
|
|
73
|
-
- name: Setup Node.js
|
|
74
|
-
uses: actions/setup-node@v4
|
|
75
|
-
with:
|
|
76
|
-
node-version: ${{ env.NODE_VERSION }}
|
|
77
|
-
cache: 'npm'
|
|
78
|
-
|
|
79
|
-
- name: Install dependencies
|
|
80
|
-
run: npm ci
|
|
81
|
-
|
|
82
|
-
- name: Build project
|
|
83
|
-
run: npm run build
|
|
84
|
-
env:
|
|
85
|
-
NODE_ENV: production
|
|
86
|
-
# Add environment-specific build vars
|
|
87
|
-
# NEXT_PUBLIC_API_URL: ${{ vars.API_URL }}
|
|
88
|
-
|
|
89
|
-
- name: Upload build artifacts
|
|
90
|
-
uses: actions/upload-artifact@v4
|
|
91
|
-
with:
|
|
92
|
-
name: build-${{ needs.setup.outputs.environment }}
|
|
93
|
-
path: dist/
|
|
94
|
-
retention-days: 7
|
|
95
|
-
|
|
96
|
-
# ============================================================================
|
|
97
|
-
# DEPLOY TO STAGING
|
|
98
|
-
# ============================================================================
|
|
99
|
-
deploy-staging:
|
|
100
|
-
name: Deploy to Staging
|
|
101
|
-
runs-on: ubuntu-latest
|
|
102
|
-
needs: [setup, build]
|
|
103
|
-
if: needs.setup.outputs.environment == 'staging'
|
|
104
|
-
environment:
|
|
105
|
-
name: staging
|
|
106
|
-
url: ${{ steps.deploy.outputs.url }}
|
|
107
|
-
steps:
|
|
108
|
-
- name: Checkout code
|
|
109
|
-
uses: actions/checkout@v4
|
|
110
|
-
|
|
111
|
-
- name: Download build artifacts
|
|
112
|
-
uses: actions/download-artifact@v4
|
|
113
|
-
with:
|
|
114
|
-
name: build-staging
|
|
115
|
-
path: dist/
|
|
116
|
-
|
|
117
|
-
# Vercel deployment example
|
|
118
|
-
# - name: Deploy to Vercel
|
|
119
|
-
# id: deploy
|
|
120
|
-
# uses: amondnet/vercel-action@v25
|
|
121
|
-
# with:
|
|
122
|
-
# vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
123
|
-
# vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
|
|
124
|
-
# vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
125
|
-
|
|
126
|
-
- name: Deploy (placeholder)
|
|
127
|
-
id: deploy
|
|
128
|
-
run: |
|
|
129
|
-
echo "Deploying to staging..."
|
|
130
|
-
echo "url=https://staging.example.com" >> $GITHUB_OUTPUT
|
|
131
|
-
echo "::notice::Deployed to staging at https://staging.example.com"
|
|
132
|
-
|
|
133
|
-
# ============================================================================
|
|
134
|
-
# DEPLOY TO PRODUCTION
|
|
135
|
-
# ============================================================================
|
|
136
|
-
deploy-production:
|
|
137
|
-
name: Deploy to Production
|
|
138
|
-
runs-on: ubuntu-latest
|
|
139
|
-
needs: [setup, build]
|
|
140
|
-
if: needs.setup.outputs.environment == 'production'
|
|
141
|
-
environment:
|
|
142
|
-
name: production
|
|
143
|
-
url: ${{ steps.deploy.outputs.url }}
|
|
144
|
-
steps:
|
|
145
|
-
- name: Checkout code
|
|
146
|
-
uses: actions/checkout@v4
|
|
147
|
-
|
|
148
|
-
- name: Download build artifacts
|
|
149
|
-
uses: actions/download-artifact@v4
|
|
150
|
-
with:
|
|
151
|
-
name: build-production
|
|
152
|
-
path: dist/
|
|
153
|
-
|
|
154
|
-
# Vercel production deployment
|
|
155
|
-
# - name: Deploy to Vercel Production
|
|
156
|
-
# id: deploy
|
|
157
|
-
# uses: amondnet/vercel-action@v25
|
|
158
|
-
# with:
|
|
159
|
-
# vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
160
|
-
# vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
|
|
161
|
-
# vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
162
|
-
# vercel-args: '--prod'
|
|
163
|
-
|
|
164
|
-
- name: Deploy (placeholder)
|
|
165
|
-
id: deploy
|
|
166
|
-
run: |
|
|
167
|
-
echo "Deploying to production..."
|
|
168
|
-
echo "url=https://example.com" >> $GITHUB_OUTPUT
|
|
169
|
-
echo "::notice::Deployed to production at https://example.com"
|
|
170
|
-
|
|
171
|
-
# ============================================================================
|
|
172
|
-
# DATABASE MIGRATIONS (Optional)
|
|
173
|
-
# ============================================================================
|
|
174
|
-
# migrations:
|
|
175
|
-
# name: Run Database Migrations
|
|
176
|
-
# runs-on: ubuntu-latest
|
|
177
|
-
# needs: [setup, deploy-staging, deploy-production]
|
|
178
|
-
# if: always() && (needs.deploy-staging.result == 'success' || needs.deploy-production.result == 'success')
|
|
179
|
-
# environment: ${{ needs.setup.outputs.environment }}
|
|
180
|
-
# steps:
|
|
181
|
-
# - name: Checkout code
|
|
182
|
-
# uses: actions/checkout@v4
|
|
183
|
-
#
|
|
184
|
-
# - name: Run migrations
|
|
185
|
-
# run: npm run db:migrate
|
|
186
|
-
# env:
|
|
187
|
-
# DATABASE_URL: ${{ secrets.DATABASE_URL }}
|
|
188
|
-
|
|
189
|
-
# ============================================================================
|
|
190
|
-
# POST-DEPLOYMENT VERIFICATION
|
|
191
|
-
# ============================================================================
|
|
192
|
-
verify:
|
|
193
|
-
name: Verify Deployment
|
|
194
|
-
runs-on: ubuntu-latest
|
|
195
|
-
needs: [setup, deploy-staging, deploy-production]
|
|
196
|
-
if: always() && (needs.deploy-staging.result == 'success' || needs.deploy-production.result == 'success')
|
|
197
|
-
steps:
|
|
198
|
-
- name: Health check
|
|
199
|
-
run: |
|
|
200
|
-
# Add your health check endpoint
|
|
201
|
-
# curl -f https://${{ needs.setup.outputs.environment }}.example.com/health
|
|
202
|
-
echo "Deployment verification passed"
|
|
203
|
-
|
|
204
|
-
- name: Notify on success
|
|
205
|
-
if: success()
|
|
206
|
-
run: |
|
|
207
|
-
echo "::notice::Successfully deployed to ${{ needs.setup.outputs.environment }}"
|
|
208
|
-
|
|
209
|
-
- name: Notify on failure
|
|
210
|
-
if: failure()
|
|
211
|
-
run: |
|
|
212
|
-
echo "::error::Deployment verification failed"
|
|
1
|
+
# GitHub Actions CD Template
|
|
2
|
+
# Purpose: Continuous Deployment workflow for staging and production
|
|
3
|
+
# Generated by: AIOS-FullStack @github-devops agent
|
|
4
|
+
#
|
|
5
|
+
# Usage: Copy to .github/workflows/cd.yml and customize
|
|
6
|
+
|
|
7
|
+
name: CD
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
push:
|
|
11
|
+
branches: [main]
|
|
12
|
+
tags: ['v*']
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
inputs:
|
|
15
|
+
environment:
|
|
16
|
+
description: 'Deployment environment'
|
|
17
|
+
required: true
|
|
18
|
+
default: 'staging'
|
|
19
|
+
type: choice
|
|
20
|
+
options:
|
|
21
|
+
- staging
|
|
22
|
+
- production
|
|
23
|
+
|
|
24
|
+
env:
|
|
25
|
+
NODE_VERSION: '20.x'
|
|
26
|
+
# Configure your deployment targets
|
|
27
|
+
# VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
|
28
|
+
# VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
29
|
+
|
|
30
|
+
jobs:
|
|
31
|
+
# ============================================================================
|
|
32
|
+
# DETERMINE ENVIRONMENT
|
|
33
|
+
# ============================================================================
|
|
34
|
+
setup:
|
|
35
|
+
name: Setup Deployment
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
outputs:
|
|
38
|
+
environment: ${{ steps.set-env.outputs.environment }}
|
|
39
|
+
version: ${{ steps.set-version.outputs.version }}
|
|
40
|
+
steps:
|
|
41
|
+
- name: Determine environment
|
|
42
|
+
id: set-env
|
|
43
|
+
run: |
|
|
44
|
+
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
45
|
+
echo "environment=${{ github.event.inputs.environment }}" >> $GITHUB_OUTPUT
|
|
46
|
+
elif [[ "${{ github.ref }}" == refs/tags/v* ]]; then
|
|
47
|
+
echo "environment=production" >> $GITHUB_OUTPUT
|
|
48
|
+
else
|
|
49
|
+
echo "environment=staging" >> $GITHUB_OUTPUT
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
- name: Set version
|
|
53
|
+
id: set-version
|
|
54
|
+
run: |
|
|
55
|
+
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
|
|
56
|
+
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
57
|
+
else
|
|
58
|
+
echo "version=${{ github.sha }}" >> $GITHUB_OUTPUT
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# ============================================================================
|
|
62
|
+
# BUILD FOR DEPLOYMENT
|
|
63
|
+
# ============================================================================
|
|
64
|
+
build:
|
|
65
|
+
name: Build for ${{ needs.setup.outputs.environment }}
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
needs: setup
|
|
68
|
+
environment: ${{ needs.setup.outputs.environment }}
|
|
69
|
+
steps:
|
|
70
|
+
- name: Checkout code
|
|
71
|
+
uses: actions/checkout@v4
|
|
72
|
+
|
|
73
|
+
- name: Setup Node.js
|
|
74
|
+
uses: actions/setup-node@v4
|
|
75
|
+
with:
|
|
76
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
77
|
+
cache: 'npm'
|
|
78
|
+
|
|
79
|
+
- name: Install dependencies
|
|
80
|
+
run: npm ci
|
|
81
|
+
|
|
82
|
+
- name: Build project
|
|
83
|
+
run: npm run build
|
|
84
|
+
env:
|
|
85
|
+
NODE_ENV: production
|
|
86
|
+
# Add environment-specific build vars
|
|
87
|
+
# NEXT_PUBLIC_API_URL: ${{ vars.API_URL }}
|
|
88
|
+
|
|
89
|
+
- name: Upload build artifacts
|
|
90
|
+
uses: actions/upload-artifact@v4
|
|
91
|
+
with:
|
|
92
|
+
name: build-${{ needs.setup.outputs.environment }}
|
|
93
|
+
path: dist/
|
|
94
|
+
retention-days: 7
|
|
95
|
+
|
|
96
|
+
# ============================================================================
|
|
97
|
+
# DEPLOY TO STAGING
|
|
98
|
+
# ============================================================================
|
|
99
|
+
deploy-staging:
|
|
100
|
+
name: Deploy to Staging
|
|
101
|
+
runs-on: ubuntu-latest
|
|
102
|
+
needs: [setup, build]
|
|
103
|
+
if: needs.setup.outputs.environment == 'staging'
|
|
104
|
+
environment:
|
|
105
|
+
name: staging
|
|
106
|
+
url: ${{ steps.deploy.outputs.url }}
|
|
107
|
+
steps:
|
|
108
|
+
- name: Checkout code
|
|
109
|
+
uses: actions/checkout@v4
|
|
110
|
+
|
|
111
|
+
- name: Download build artifacts
|
|
112
|
+
uses: actions/download-artifact@v4
|
|
113
|
+
with:
|
|
114
|
+
name: build-staging
|
|
115
|
+
path: dist/
|
|
116
|
+
|
|
117
|
+
# Vercel deployment example
|
|
118
|
+
# - name: Deploy to Vercel
|
|
119
|
+
# id: deploy
|
|
120
|
+
# uses: amondnet/vercel-action@v25
|
|
121
|
+
# with:
|
|
122
|
+
# vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
123
|
+
# vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
|
|
124
|
+
# vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
125
|
+
|
|
126
|
+
- name: Deploy (placeholder)
|
|
127
|
+
id: deploy
|
|
128
|
+
run: |
|
|
129
|
+
echo "Deploying to staging..."
|
|
130
|
+
echo "url=https://staging.example.com" >> $GITHUB_OUTPUT
|
|
131
|
+
echo "::notice::Deployed to staging at https://staging.example.com"
|
|
132
|
+
|
|
133
|
+
# ============================================================================
|
|
134
|
+
# DEPLOY TO PRODUCTION
|
|
135
|
+
# ============================================================================
|
|
136
|
+
deploy-production:
|
|
137
|
+
name: Deploy to Production
|
|
138
|
+
runs-on: ubuntu-latest
|
|
139
|
+
needs: [setup, build]
|
|
140
|
+
if: needs.setup.outputs.environment == 'production'
|
|
141
|
+
environment:
|
|
142
|
+
name: production
|
|
143
|
+
url: ${{ steps.deploy.outputs.url }}
|
|
144
|
+
steps:
|
|
145
|
+
- name: Checkout code
|
|
146
|
+
uses: actions/checkout@v4
|
|
147
|
+
|
|
148
|
+
- name: Download build artifacts
|
|
149
|
+
uses: actions/download-artifact@v4
|
|
150
|
+
with:
|
|
151
|
+
name: build-production
|
|
152
|
+
path: dist/
|
|
153
|
+
|
|
154
|
+
# Vercel production deployment
|
|
155
|
+
# - name: Deploy to Vercel Production
|
|
156
|
+
# id: deploy
|
|
157
|
+
# uses: amondnet/vercel-action@v25
|
|
158
|
+
# with:
|
|
159
|
+
# vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
160
|
+
# vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
|
|
161
|
+
# vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
162
|
+
# vercel-args: '--prod'
|
|
163
|
+
|
|
164
|
+
- name: Deploy (placeholder)
|
|
165
|
+
id: deploy
|
|
166
|
+
run: |
|
|
167
|
+
echo "Deploying to production..."
|
|
168
|
+
echo "url=https://example.com" >> $GITHUB_OUTPUT
|
|
169
|
+
echo "::notice::Deployed to production at https://example.com"
|
|
170
|
+
|
|
171
|
+
# ============================================================================
|
|
172
|
+
# DATABASE MIGRATIONS (Optional)
|
|
173
|
+
# ============================================================================
|
|
174
|
+
# migrations:
|
|
175
|
+
# name: Run Database Migrations
|
|
176
|
+
# runs-on: ubuntu-latest
|
|
177
|
+
# needs: [setup, deploy-staging, deploy-production]
|
|
178
|
+
# if: always() && (needs.deploy-staging.result == 'success' || needs.deploy-production.result == 'success')
|
|
179
|
+
# environment: ${{ needs.setup.outputs.environment }}
|
|
180
|
+
# steps:
|
|
181
|
+
# - name: Checkout code
|
|
182
|
+
# uses: actions/checkout@v4
|
|
183
|
+
#
|
|
184
|
+
# - name: Run migrations
|
|
185
|
+
# run: npm run db:migrate
|
|
186
|
+
# env:
|
|
187
|
+
# DATABASE_URL: ${{ secrets.DATABASE_URL }}
|
|
188
|
+
|
|
189
|
+
# ============================================================================
|
|
190
|
+
# POST-DEPLOYMENT VERIFICATION
|
|
191
|
+
# ============================================================================
|
|
192
|
+
verify:
|
|
193
|
+
name: Verify Deployment
|
|
194
|
+
runs-on: ubuntu-latest
|
|
195
|
+
needs: [setup, deploy-staging, deploy-production]
|
|
196
|
+
if: always() && (needs.deploy-staging.result == 'success' || needs.deploy-production.result == 'success')
|
|
197
|
+
steps:
|
|
198
|
+
- name: Health check
|
|
199
|
+
run: |
|
|
200
|
+
# Add your health check endpoint
|
|
201
|
+
# curl -f https://${{ needs.setup.outputs.environment }}.example.com/health
|
|
202
|
+
echo "Deployment verification passed"
|
|
203
|
+
|
|
204
|
+
- name: Notify on success
|
|
205
|
+
if: success()
|
|
206
|
+
run: |
|
|
207
|
+
echo "::notice::Successfully deployed to ${{ needs.setup.outputs.environment }}"
|
|
208
|
+
|
|
209
|
+
- name: Notify on failure
|
|
210
|
+
if: failure()
|
|
211
|
+
run: |
|
|
212
|
+
echo "::error::Deployment verification failed"
|