docs: rewrite signalr README, fix remaining broken links #146
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: CI | |
| on: | |
| push: | |
| branches: [master, dev] | |
| pull_request: | |
| branches: [master] | |
| env: | |
| REGISTRY: ghcr.io | |
| DOTNET_VERSION: '10.0.x' | |
| NODE_VERSION: '22' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Quick validation that everything builds | |
| validate: | |
| name: Validate | |
| runs-on: ubuntu-latest | |
| services: | |
| postgres: | |
| image: postgres:16 | |
| ports: | |
| - 5432:5432 | |
| env: | |
| POSTGRES_USER: conduit | |
| POSTGRES_PASSWORD: conduitpass | |
| POSTGRES_DB: conduitdb | |
| options: >- | |
| --health-cmd "pg_isready -U conduit -d conduitdb" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| redis: | |
| image: redis:7-alpine | |
| ports: | |
| - 6379:6379 | |
| options: >- | |
| --health-cmd "redis-cli ping" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: ${{ env.DOTNET_VERSION }} | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: npm | |
| cache-dependency-path: | | |
| SDKs/Node/package-lock.json | |
| SDKs/Node/Admin/package-lock.json | |
| SDKs/Node/Gateway/package-lock.json | |
| SDKs/Node/Common/package-lock.json | |
| WebAdmin/package-lock.json | |
| - name: .NET Build & Test | |
| run: | | |
| dotnet restore | |
| dotnet build --no-restore | |
| # Run tests but exclude integration tests and timing-sensitive tests | |
| dotnet test --no-build --verbosity normal --filter "FullyQualifiedName!~IntegrationTests&Category!=TimingSensitive" | |
| env: | |
| TEST_REDIS_CONNECTION: localhost:6379 | |
| DATABASE_URL: postgresql://conduit:conduitpass@localhost:5432/conduitdb | |
| - name: NPM Build | |
| run: | | |
| cd SDKs/Node | |
| npm ci | |
| npm run build | |
| npm run test:ci | |
| - name: WebAdmin Lint & Type Check | |
| run: | | |
| cd WebAdmin | |
| npm ci | |
| # Clean any stale .next directory before type checking | |
| rm -rf .next | |
| npm run lint | |
| npm run type-check | |
| # Build Docker images (push only from master) | |
| docker: | |
| name: Docker - ${{ matrix.service }} | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| permissions: | |
| contents: read | |
| packages: write | |
| strategy: | |
| matrix: | |
| include: | |
| - service: webadmin | |
| context: . | |
| dockerfile: WebAdmin/Dockerfile | |
| - service: http | |
| context: . | |
| dockerfile: Services/ConduitLLM.Gateway/Dockerfile | |
| - service: admin | |
| context: . | |
| dockerfile: Services/ConduitLLM.Admin/Dockerfile | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/knnlabs/conduit-${{ matrix.service }} | |
| tags: | | |
| type=ref,event=branch | |
| type=ref,event=pr | |
| type=sha,prefix={{branch}}- | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Log in to GitHub Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: ${{ matrix.context }} | |
| file: ${{ matrix.dockerfile }} | |
| platforms: linux/amd64 | |
| push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha,scope=${{ matrix.service }} | |
| cache-to: type=gha,scope=${{ matrix.service }},mode=max | |
| # Publish NPM packages (only from master) | |
| npm-publish: | |
| name: NPM Publish | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| registry-url: 'https://registry.npmjs.org' | |
| cache: npm | |
| cache-dependency-path: | | |
| SDKs/Node/package-lock.json | |
| SDKs/Node/Admin/package-lock.json | |
| SDKs/Node/Gateway/package-lock.json | |
| SDKs/Node/Common/package-lock.json | |
| - name: Build and Publish | |
| run: | | |
| cd SDKs/Node | |
| npm ci | |
| npm run build | |
| # Generate unique timestamp suffix for continuous releases | |
| TIMESTAMP=$(date +%s) | |
| # Update version and publish Common first (others depend on it) | |
| cd Common | |
| CURRENT_VERSION=$(node -p "require('./package.json').version") | |
| npm version "${CURRENT_VERSION}-next.${TIMESTAMP}" --no-git-tag-version | |
| npm publish --tag next --access public | |
| # Update version and publish Admin | |
| cd ../Admin | |
| CURRENT_VERSION=$(node -p "require('./package.json').version") | |
| npm version "${CURRENT_VERSION}-next.${TIMESTAMP}" --no-git-tag-version | |
| npm publish --tag next --access public | |
| # Update version and publish Gateway | |
| cd ../Gateway | |
| CURRENT_VERSION=$(node -p "require('./package.json').version") | |
| npm version "${CURRENT_VERSION}-next.${TIMESTAMP}" --no-git-tag-version | |
| npm publish --tag next --access public | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |