Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
6f3ef9c
Add CD workflow for ParakhAI frontend deployment
Mar 25, 2026
43109f4
Add react-leaflet peer dependency for opub-ui MapChart
Mar 25, 2026
26f2542
Trigger CD workflow
Mar 25, 2026
fb3ff46
Fix pm2 path to node v24
Mar 25, 2026
b18e0c6
Prepend node bin to PATH for pm2
Mar 25, 2026
9c25003
Remove react-leaflet, rely on opub-ui's bundled version
Mar 25, 2026
917fd4a
Add react-leaflet as devDependency to satisfy opub-ui build
Mar 25, 2026
22388ef
Dynamically import AuditResults to prevent leaflet SSR error
Mar 25, 2026
4f0a973
Exclude leaflet packages from server bundle
Mar 25, 2026
a030ba0
Stub react-leaflet-fullscreen via webpack alias to fix Nn error
Mar 25, 2026
6215c06
Revert changes after b18e0c6
Mar 25, 2026
c6cd7dd
Revert package.json and update deployment workflow
Mar 26, 2026
d3c1685
Merge origin/dev into CD
Mar 26, 2026
62427dd
Remove .claude/settings.json from repo and add to .gitignore
Apr 22, 2026
90f38dc
Added modal with know more
UdayRajSahai2 Jul 31, 2026
f6faeff
Merge pull request #445 from CivicDataLab/fix/ui-changes
Abhishekfm Aug 3, 2026
e791c82
Merge remote-tracking branch 'origin/dev' into CD
Aug 3, 2026
d83e505
Harden CD deploy workflow: fix cascading-failure bug, add rollback an…
Aug 3, 2026
3b79a03
Fix package-lock.json drift so npm ci works
Aug 3, 2026
7e7b18e
Guard husky prepare script for --omit=dev installs
Aug 3, 2026
ad746ef
Remove redundant Generate step from CD workflow
Aug 3, 2026
63eb335
chore: update dependencies and refactor evaluation components
Abhishekfm Aug 3, 2026
34f221c
refactor: update audit type handling in evaluation components
Abhishekfm Aug 3, 2026
58aebfc
Fix critical/high npm audit findings via non-breaking updates
Aug 3, 2026
d7a8ff0
Switch CD deploy trigger from push:CD to push:dev
Aug 3, 2026
ce14045
Merge pull request #448 from CivicDataLab/CD
saqibmanan Aug 3, 2026
fa0f70f
Wire smoke-test dispatch with auto-rollback into CD deploy pipeline
Aug 3, 2026
6949bf3
Fix job-result condition syntax: needs.smoke-tests -> needs['smoke-te…
Aug 3, 2026
99d1b4f
Switch rollback/finalize gating to failure()/success() builtins
Aug 3, 2026
22a4a66
Declare environment on smoke-tests job so it can access env secrets
Aug 4, 2026
1509451
Revert environment: on smoke-tests job - invalid with uses:
Aug 4, 2026
130b5ac
refactor: update evaluation method handling in ModelSelectionModal
Abhishekfm Aug 4, 2026
cfe7e72
Merge branch 'dev' into evaluation-table-listing
Abhishekfm Aug 4, 2026
2f7b40c
Switch CD deploy trigger back to push:dev for real
Aug 4, 2026
c3eeee3
Merge pull request #449 from CivicDataLab/CD
saqibmanan Aug 4, 2026
f3db9bf
Merge pull request #446 from CivicDataLab/evaluation-table-listing
Abhishekfm Aug 5, 2026
8caa3cd
style: enhance evaluations page layout and alignment
Abhishekfm Aug 7, 2026
a1c5b84
Merge pull request #452 from CivicDataLab/evaluation-table-listing
Abhishekfm Aug 7, 2026
dc0d037
style: refine evaluations page CSS for improved layout and alignment
Abhishekfm Aug 24, 2026
15d6157
Merge pull request #457 from CivicDataLab/evaluation-table-listing
Abhishekfm Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 187 additions & 0 deletions .github/workflows/deploy-parakh-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
name: Update ParakhAI Dev

on:
push:
branches: ['dev']
workflow_dispatch: {}

concurrency:
group: parakh-dev-deploy
cancel-in-progress: false

jobs:
deploy:
runs-on: ubuntu-latest
environment: development
timeout-minutes: 15
env:
KEYCLOAK_CLIENT_ID: ${{ secrets.KEYCLOAK_CLIENT_ID }}
KEYCLOAK_CLIENT_SECRET: ${{ secrets.KEYCLOAK_CLIENT_SECRET }}
AUTH_ISSUER: ${{ secrets.AUTH_ISSUER }}
NEXTAUTH_URL: ${{ vars.NEXTAUTH_URL }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
END_SESSION_URL: ${{ secrets.END_SESSION_URL }}
REFRESH_TOKEN_URL: ${{ secrets.REFRESH_TOKEN_URL }}
NEXT_PUBLIC_BACKEND_URL: ${{ vars.NEXT_PUBLIC_BACKEND_URL }}
NEXT_PUBLIC_BACKEND_BASE_URL: ${{ vars.NEXT_PUBLIC_BACKEND_BASE_URL }}
NEXT_PUBLIC_AI_MAKER_URL: ${{ vars.NEXT_PUBLIC_AI_MAKER_URL }}
NEXT_PUBLIC_DATASPACE_API_URL: ${{ vars.NEXT_PUBLIC_DATASPACE_API_URL }}
NEXT_PUBLIC_USI_GRAPHQL_ENDPOINT: ${{ vars.NEXT_PUBLIC_USI_GRAPHQL_ENDPOINT }}

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci --legacy-peer-deps

- name: Build
run: npm run build

- name: Rename .next to .next2
run: mv .next .next2

- name: Rename public to public2
run: mv public public2

- name: Send files to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ vars.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
source: .next2,public2,package.json,package-lock.json
target: platform/ParakhAI-frontend

- name: Update with new build
uses: appleboy/ssh-action@v1.0.3
continue-on-error: false
env:
HEALTH_CHECK_URL: ${{ vars.HEALTH_CHECK_URL || 'http://localhost:3000' }}
with:
host: ${{ vars.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
envs: HEALTH_CHECK_URL
script: |
set -e
export PATH="/home/ubuntu/.nvm/versions/node/v24.11.1/bin:$PATH"
cd platform/ParakhAI-frontend

npm ci --legacy-peer-deps --omit=dev

rm -rf .next.bak public.bak
if [ -d .next ]; then mv .next .next.bak; fi
if [ -d public ]; then mv public public.bak; fi

mv .next2 .next
mv public2 public

rollback() {
echo "Deploy failed - rolling back to previous build"
rm -rf .next public
if [ -d .next.bak ]; then mv .next.bak .next; fi
if [ -d public.bak ]; then mv public.bak public; fi
pm2 restart parakh || true
exit 1
}

pm2 restart parakh || rollback

attempts=0
until curl -sf -o /dev/null "$HEALTH_CHECK_URL"; do
attempts=$((attempts + 1))
if [ "$attempts" -ge 10 ]; then
echo "Health check failed after $attempts attempts"
rollback
fi
sleep 3
done

echo "Deploy verified healthy - keeping backup until smoke tests confirm"

smoke-tests:
name: Smoke Tests
needs: deploy
uses: CivicDataLab/ParakhAI_test/.github/workflows/run-smoke.yml@main
secrets:
TEST_EMAIL_1: ${{ secrets.TEST_EMAIL_1 }}
TEST_PASSWORD_1: ${{ secrets.TEST_PASSWORD_1 }}
TEST_EMAIL_2: ${{ secrets.TEST_EMAIL_2 }}
TEST_PASSWORD_2: ${{ secrets.TEST_PASSWORD_2 }}
SANDBOX_ORG_SLUG: ${{ secrets.SANDBOX_ORG_SLUG }}

rollback-on-smoke-failure:
name: Rollback (smoke tests failed)
needs: smoke-tests
if: failure() && needs.deploy.result == 'success'
runs-on: ubuntu-latest
environment: development
timeout-minutes: 10
steps:
- name: Restore previous build and restart
uses: appleboy/ssh-action@v1.0.3
env:
HEALTH_CHECK_URL: ${{ vars.HEALTH_CHECK_URL || 'http://localhost:3000' }}
with:
host: ${{ vars.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
envs: HEALTH_CHECK_URL
script: |
set -e
export PATH="/home/ubuntu/.nvm/versions/node/v24.11.1/bin:$PATH"
cd platform/ParakhAI-frontend

if [ ! -d .next.bak ] || [ ! -d public.bak ]; then
echo "No backup found to roll back to - leaving current deploy in place"
exit 1
fi

rm -rf .next public
mv .next.bak .next
mv public.bak public
pm2 restart parakh

attempts=0
until curl -sf -o /dev/null "$HEALTH_CHECK_URL"; do
attempts=$((attempts + 1))
if [ "$attempts" -ge 10 ]; then
echo "Rollback restart did not become healthy after $attempts attempts"
exit 1
fi
sleep 3
done

echo "Rolled back to previous build after failed smoke tests"

- name: Mark this run as failed
run: |
echo "::error::Smoke tests failed after deploy - rolled back to the previous build."
exit 1

finalize-deploy:
name: Finalize Deploy
needs: smoke-tests
if: success()
runs-on: ubuntu-latest
environment: development
timeout-minutes: 5
steps:
- name: Clean up backup build
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ vars.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
script: |
set -e
cd platform/ParakhAI-frontend
rm -rf .next.bak public.bak
echo "Deploy confirmed healthy by smoke tests - backup cleared"
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@ next-env.d.ts
/gql/generated/

# graphql-codegen output (auto-generated on npm install via postinstall)
/generated/
/generated/
Loading
Loading