chore: update TSR dep #10471
Workflow file for this run
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: Node CI | |
| on: | |
| push: | |
| branches: | |
| - "**" | |
| tags: | |
| - "v**" | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| lint-core: | |
| name: Typecheck and Lint Core | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - uses: ./.github/actions/setup-meteor | |
| - name: restore node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| node_modules | |
| meteor/node_modules | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('yarn.lock', 'meteor/yarn.lock', 'meteor/.meteor/release', 'packages/yarn.lock') }} | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| yarn config set cacheFolder /home/runner/lint-core-cache | |
| yarn | |
| yarn build:packages | |
| env: | |
| CI: true | |
| - name: Run typecheck and linter | |
| run: | | |
| cd meteor | |
| # setup zodern:types. No linters are setup, so this simply installs the packages | |
| meteor lint | |
| yarn ci:lint | |
| env: | |
| CI: true | |
| test-core: | |
| name: Test Core | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - uses: ./.github/actions/setup-meteor | |
| - name: restore node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| node_modules | |
| meteor/node_modules | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('yarn.lock', 'meteor/yarn.lock', 'meteor/.meteor/release', 'packages/yarn.lock') }} | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| yarn config set cacheFolder /home/runner/test-core-cache | |
| yarn | |
| yarn build:packages | |
| env: | |
| CI: true | |
| - name: Run Tests | |
| run: | | |
| cd meteor | |
| # setup zodern:types. No linters are setup, so this simply installs the packages | |
| meteor lint | |
| NODE_OPTIONS="--max-old-space-size=6144" yarn unitci --force-exit | |
| env: | |
| CI: true | |
| - name: Send coverage | |
| if: ((github.event_name == 'pull_request') && (!startsWith(github.head_ref, 'release'))) || ((github.event_name == 'push') && (!startsWith(github.ref_name, 'release'))) | |
| uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| build-core: | |
| name: Build Core and publish docker image | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Get the Docker tag for GHCR | |
| id: ghcr-tag | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: | | |
| ghcr.io/${{ github.repository }}-server-core | |
| tags: | | |
| type=schedule | |
| type=ref,event=branch | |
| type=ref,event=tag | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| - name: Use Node.js | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - uses: ./.github/actions/setup-meteor | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| - name: restore node_modules | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| node_modules | |
| meteor/node_modules | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('yarn.lock', 'meteor/yarn.lock', 'meteor/.meteor/release', 'packages/yarn.lock') }} | |
| - name: Prepare Environment | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| run: | | |
| corepack enable | |
| yarn install | |
| - name: Build libs | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| run: | | |
| yarn build:packages | |
| - name: Persist Built Version information | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| run: | | |
| cd meteor | |
| yarn inject-git-hash | |
| - name: Prepare webui for meteor build | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| run: | | |
| rm -Rf meteor/public | |
| cp -R packages/webui/dist meteor/public | |
| - name: Meteor Build | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| run: | | |
| cd meteor | |
| NODE_OPTIONS="--max-old-space-size=4096" METEOR_DEBUG_BUILD=1 meteor build --allow-superuser --directory . | |
| mv bundle/programs/web.browser/assets/ bundle/programs/web.browser/app/assets/ || true | |
| - name: Meteor Bundle NPM Build | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| run: | | |
| cd meteor/bundle/programs/server | |
| meteor npm install | |
| - name: Set up Docker Buildx | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to GitHub Container Registry | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push to GHCR | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ./meteor/Dockerfile.circle | |
| push: true | |
| provenance: false | |
| labels: ${{ steps.ghcr-tag.outputs.labels }} | |
| tags: "${{ steps.ghcr-tag.outputs.tags }}" | |
| github-token: ${{ github.token }} | |
| - name: Get image for Trivy scanning | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| id: trivy-image | |
| run: | | |
| image=$(echo ${{ steps.ghcr-tag.outputs.tags }} | head -n 1) | |
| echo "image=$image" >> $GITHUB_OUTPUT | |
| - name: Trivy scanning | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: aquasecurity/[email protected] | |
| env: | |
| TRIVY_DB_REPOSITORY: public.ecr.aws/aquasecurity/trivy-db | |
| with: | |
| image-ref: "${{ steps.trivy-image.outputs.image }}" | |
| format: "table" | |
| output: trivy-scan-result.txt | |
| ignore-unfixed: true | |
| severity: "CRITICAL,HIGH" | |
| - name: Post all Trivy scan results to Github Summary as a table | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| env: | |
| CODE_BLOCK: "```" | |
| run: | | |
| echo "# Trivy scan results ~ core" >> $GITHUB_STEP_SUMMARY | |
| echo $CODE_BLOCK >> $GITHUB_STEP_SUMMARY | |
| cat trivy-scan-result.txt >> $GITHUB_STEP_SUMMARY | |
| echo $CODE_BLOCK >> $GITHUB_STEP_SUMMARY | |
| build-gateways: | |
| name: Build gateways | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| gateway-name: [playout-gateway, mos-gateway, "live-status-gateway"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Get the Docker tag for GHCR | |
| id: ghcr-tag | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: | | |
| ghcr.io/${{ github.repository }}-${{ matrix.gateway-name }} | |
| tags: | | |
| type=schedule | |
| type=ref,event=branch | |
| type=ref,event=tag | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| - name: Use Node.js | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - name: restore node_modules | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('packages/yarn.lock') }} | |
| - name: Build | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| run: | | |
| corepack enable | |
| cd packages | |
| yarn install | |
| yarn lerna run --scope \*\*/${{ matrix.gateway-name }} --include-dependencies --stream build | |
| yarn run pinst --disable | |
| yarn workspaces focus ${{ matrix.gateway-name }} --production | |
| - name: Set up Docker Buildx | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to GitHub Container Registry | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push to GHCR | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: ./packages | |
| file: ./packages/${{ matrix.gateway-name }}/Dockerfile.circle | |
| push: true | |
| provenance: false | |
| labels: ${{ steps.ghcr-tag.outputs.labels }} | |
| tags: "${{ steps.ghcr-tag.outputs.tags }}" | |
| - name: Get image for Trivy scanning | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| id: trivy-image | |
| run: | | |
| image=$(echo ${{ steps.ghcr-tag.outputs.tags }} | head -n 1) | |
| echo "image=$image" >> $GITHUB_OUTPUT | |
| - name: Trivy scanning | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| uses: aquasecurity/[email protected] | |
| env: | |
| TRIVY_DB_REPOSITORY: public.ecr.aws/aquasecurity/trivy-db | |
| with: | |
| image-ref: "${{ steps.trivy-image.outputs.image }}" | |
| format: "table" | |
| output: ${{ matrix.gateway-name }}-trivy-scan-result.txt | |
| ignore-unfixed: true | |
| severity: "CRITICAL,HIGH" | |
| - name: Post all Trivy scan results to Github Summary as a table | |
| if: steps.ghcr-tag.outputs.tags != 0 | |
| env: | |
| CODE_BLOCK: "```" | |
| run: | | |
| echo "# Trivy scan results ~ ${{ matrix.gateway-name }}" >> $GITHUB_STEP_SUMMARY | |
| echo $CODE_BLOCK >> $GITHUB_STEP_SUMMARY | |
| cat ${{ matrix.gateway-name }}-trivy-scan-result.txt >> $GITHUB_STEP_SUMMARY | |
| echo $CODE_BLOCK >> $GITHUB_STEP_SUMMARY | |
| lint-packages: | |
| name: Lint Package | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| timeout-minutes: 15 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package-name: | |
| - blueprints-integration | |
| - server-core-integration | |
| - playout-gateway | |
| - mos-gateway | |
| - corelib | |
| - shared-lib | |
| - meteor-lib | |
| - job-worker | |
| - openapi | |
| - live-status-gateway | |
| - webui | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - name: restore node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('packages/yarn.lock') }} | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| cd packages | |
| yarn config set cacheFolder /home/runner/${{ matrix.package-name }}-cache | |
| yarn install | |
| yarn lerna run --scope \*\*/${{ matrix.package-name }} --include-dependencies --stream build | |
| env: | |
| CI: true | |
| - name: Run typecheck and linter | |
| run: | | |
| cd packages/${{ matrix.package-name }} | |
| yarn lint | |
| env: | |
| CI: true | |
| test-packages: | |
| name: Test Package (main) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package-name: | |
| - blueprints-integration | |
| - server-core-integration | |
| - shared-lib | |
| - openapi | |
| node-version: [22.x] | |
| include: | |
| # include additional configs, to run certain packages only for a certain version of node | |
| - node-version: 22.x | |
| package-name: corelib | |
| send-coverage: true | |
| - node-version: 22.x | |
| package-name: job-worker | |
| send-coverage: true | |
| # No tests for the gateways yet | |
| # - node-version: 22.x | |
| # package-name: playout-gateway | |
| # - node-version: 22.x | |
| # package-name: mos-gateway | |
| - node-version: 22.x | |
| package-name: live-status-gateway | |
| send-coverage: true | |
| - node-version: 22.x | |
| package-name: webui | |
| # manual meteor-lib as it only needs a couple of versions | |
| - node-version: 22.x | |
| package-name: meteor-lib | |
| send-coverage: true | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| - name: restore node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('packages/yarn.lock') }} | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| cd packages | |
| yarn config set cacheFolder /home/runner/test-packages-cache | |
| yarn install | |
| yarn lerna run --scope \*\*/${{ matrix.package-name }} --include-dependencies --stream build | |
| env: | |
| CI: true | |
| - name: Run tests | |
| run: | | |
| cd packages/${{ matrix.package-name }} | |
| yarn unit | |
| env: | |
| CI: true | |
| - name: Send coverage | |
| if: (matrix.node-version == '18.x' || matrix.send-coverage == true) && ((github.event_name == 'pull_request') && ((!startsWith(github.head_ref, 'release'))) || ((github.event_name == 'push') && (!startsWith(github.ref_name, 'release')))) | |
| uses: codecov/codecov-action@v4 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| asyncapi-generation: | |
| name: AsyncAPI Generation | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| cd packages | |
| yarn | |
| env: | |
| CI: true | |
| - name: Run generator | |
| run: | | |
| cd packages/live-status-gateway | |
| yarn gendocs | |
| yarn genserver | |
| env: | |
| CI: true | |
| openapi-generation: | |
| name: OpenAPI Generation | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| cd packages | |
| yarn | |
| env: | |
| CI: true | |
| - name: Build OpenAPI client library | |
| run: | | |
| cd packages/openapi | |
| yarn build | |
| env: | |
| CI: true | |
| - name: Generate OpenAPI docs and server | |
| run: | | |
| cd packages/openapi | |
| yarn gendocs | |
| yarn genserver | |
| env: | |
| CI: true | |
| publish-docs: | |
| name: Publish Docs | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - name: restore node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('packages/yarn.lock') }} | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| cd packages | |
| yarn config set cacheFolder /home/runner/publish-docs-cache | |
| yarn install | |
| yarn build:all | |
| env: | |
| CI: true | |
| - name: Run docusaurus | |
| run: | | |
| cd packages/documentation | |
| yarn docs:build | |
| env: | |
| CI: true | |
| - name: Run typedoc | |
| run: | | |
| cd packages | |
| yarn docs:typedoc | |
| cp docs documentation/build/typedoc -R | |
| env: | |
| CI: true | |
| - name: Publish | |
| if: github.ref == 'refs/heads/main' # always publish for just the main branch | |
| uses: peaceiris/actions-gh-pages@v4 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: ./packages/documentation/build | |
| check-for-multiple-library-versions: | |
| name: Check for multiple library versions | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".node-version" | |
| - uses: ./.github/actions/setup-meteor | |
| - name: restore node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| node_modules | |
| meteor/node_modules | |
| packages/node_modules | |
| key: ${{ runner.os }}-${{ hashFiles('yarn.lock', 'meteor/yarn.lock', 'meteor/.meteor/release', 'packages/yarn.lock') }} | |
| - name: Prepare Environment | |
| run: | | |
| corepack enable | |
| yarn config set cacheFolder /home/runner/check-for-multiple-library-versions-cache | |
| yarn | |
| env: | |
| CI: true | |
| - name: Run check | |
| run: | | |
| yarn validate:versions | |
| env: | |
| CI: true |