Merge pull request #32 from elimuinformatics/RT-2459-lforms-publish-f… #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release Package | |
| on: | |
| push: | |
| branches: | |
| - master | |
| tags: | |
| - 'v*' | |
| # Allow manual triggering from GitHub UI | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: 'Tag to release (e.g., v1.0.0)' | |
| required: true | |
| type: string | |
| # Required for NPM trusted publishing | |
| permissions: | |
| id-token: write | |
| contents: read | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| node-version: [24] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build project for tests | |
| run: npm run build | |
| - name: Run unit tests | |
| run: TZ=America/New_York npm run test:fhir-unit | |
| env: | |
| TZ: America/New_York | |
| build: | |
| needs: test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Build Docker image | |
| run: docker build -t app-build . | |
| - name: Extract build artifacts | |
| run: | | |
| id=$(docker create app-build) | |
| docker cp $id:/app/dist ./dist | |
| docker rm $id | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: dist/ | |
| publish: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: read | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: dist | |
| - name: Setup Node.js (Node 24 for parity with Docker/Jenkins) | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24 | |
| registry-url: https://registry.npmjs.org | |
| cache: npm | |
| - name: Update npm | |
| run: npm install -g npm@latest | |
| - name: Verify npm version | |
| run: npm --version | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Verify package configuration | |
| run: node scripts/verify-package.js | |
| - name: Verify package contents | |
| run: npm pack --dry-run | |
| - name: Publish to NPM | |
| run: npm publish | |
| timeout-minutes: 10 |