Update base comunica to work with changes in link traversal #516
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, pull_request] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| NODE_VERSION_LOWEST: 20.x | |
| NODE_VERSION_HIGHEST: 24.x | |
| jobs: | |
| misc: | |
| name: Tooling checks | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - macos-latest | |
| - ubuntu-latest | |
| - windows-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ env.NODE_VERSION_LOWEST }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION_LOWEST }} | |
| cache: yarn | |
| - name: Install dependencies | |
| run: yarn install --frozen-lockfile | |
| - name: Build TypeScript with esModuleInterop flag | |
| run: yarn run build:ts --esModuleInterop true | |
| - name: Run linter | |
| run: yarn run lint | |
| - name: Run depcheck | |
| run: yarn run depcheck | |
| - name: Test clean script | |
| run: yarn run clean | |
| test: | |
| name: Jest tests | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - macos-latest | |
| - ubuntu-latest | |
| - windows-latest | |
| node-version: | |
| - 20.x | |
| - 22.x | |
| - 24.x | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: yarn | |
| - name: Install dependencies and build | |
| run: yarn install --frozen-lockfile | |
| - name: Run tests | |
| run: yarn run test:ci | |
| - name: Submit coverage results | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.github_token }} | |
| flag-name: ${{ matrix.os }}-${{ matrix.node-version }} | |
| parallel: true | |
| fail-on-error: false | |
| spectest: | |
| name: Specification tests | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - macos-latest | |
| - ubuntu-latest | |
| - windows-latest | |
| node-version: | |
| - 20.x | |
| - 22.x | |
| - 24.x | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: yarn | |
| - name: Install dependencies and build | |
| run: yarn install --frozen-lockfile --network-timeout 36000 | |
| - name: Load RDF test suite cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| .rdf-test-suite-cache | |
| .rdf-test-suite-ldf-cache | |
| key: ${{ runner.os }}-rdftestsuite-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
| - name: Run specification tests | |
| uses: nick-fields/retry@v4 | |
| with: | |
| timeout_minutes: 5 | |
| max_attempts: 3 | |
| # Retry because of https://github.com/rubensworks/rdf-test-suite.js/issues/64 | |
| command: yarn run test:spec | |
| - name: Run integration tests | |
| uses: nick-fields/retry@v4 | |
| with: | |
| timeout_minutes: 5 | |
| max_attempts: 3 | |
| # Retry because of https://github.com/rubensworks/rdf-test-suite.js/issues/64 | |
| command: yarn run test:integration | |
| browsertest: | |
| name: Browser tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ env.NODE_VERSION_LOWEST }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION_LOWEST }} | |
| cache: yarn | |
| - name: Install dependencies and build | |
| run: yarn install --frozen-lockfile | |
| - name: Build browser bundles | |
| run: yarn run build:browser | |
| - name: Install Playwright browsers | |
| run: yarn playwright install --with-deps | |
| - name: Run browser tests | |
| run: yarn run test:browser | |
| coveralls: | |
| name: Coverage check | |
| needs: test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Consolidate test coverage from different jobs | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.github_token }} | |
| parallel-finished: true | |
| fail-on-error: false | |
| browserbuilds: | |
| name: Browser builds | |
| needs: | |
| - misc | |
| - test | |
| - spectest | |
| - browsertest | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ env.NODE_VERSION_LOWEST }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION_LOWEST }} | |
| cache: yarn | |
| - name: Install dependencies and build | |
| run: yarn install --frozen-lockfile | |
| - name: Build browser bundles | |
| run: yarn run build:browser | |
| - name: Deploy browser builds | |
| if: startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/tags/') | |
| run: ./.github/deploy_browser.sh | |
| env: | |
| GH_TOKEN: ${{ secrets.PAT }} | |
| dockerimages: | |
| name: Docker images | |
| needs: | |
| - misc | |
| - test | |
| - spectest | |
| - browsertest | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ env.NODE_VERSION_LOWEST }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION_LOWEST }} | |
| cache: yarn | |
| - name: Install dependencies and build monorepo | |
| run: yarn install --frozen-lockfile | |
| - name: Install Lerna Docker | |
| run: sh -c "`curl -fsSl https://raw.githubusercontent.com/rubensworks/lerna-docker/master/install.sh`" | |
| - name: Build Docker images | |
| run: ~/.lerna-docker/bin/lerna-docker comunica build | |
| - name: Test Docker images | |
| run: yarn run test:docker | |
| - name: Deploy Docker images | |
| if: startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/tags/') | |
| run: ~/.lerna-docker/bin/lerna-docker comunica push | |
| env: | |
| DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
| DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Deploy Docker images (next/major) | |
| if: startsWith(github.ref, 'refs/heads/next') | |
| run: ~/.lerna-docker/bin/lerna-docker comunica push next | |
| env: | |
| DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
| DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | |
| performance: | |
| name: Performance benchmarks | |
| if: startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/feature') || startsWith(github.ref, 'refs/heads/next') | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| benchmark: | |
| - watdiv-file | |
| - watdiv-tpf | |
| - bsbm-file | |
| - bsbm-tpf | |
| - web | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ env.NODE_VERSION_HIGHEST }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION_HIGHEST }} | |
| cache: yarn | |
| - name: Install dependencies and build monorepo | |
| run: yarn install --frozen-lockfile | |
| - name: Run benchmarks | |
| run: cd performance/benchmark-${{ matrix.benchmark }}/ && yarn run performance:ci | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: performance-benchmark-${{ matrix.benchmark }} | |
| path: performance/benchmark-${{ matrix.benchmark }}/combinations/combination_0/output/ | |
| - name: Print raw output | |
| run: cat performance/benchmark-${{ matrix.benchmark }}/combinations/combination_0/output/query-times.csv | |
| performance-consolidate: | |
| name: Performance analysis | |
| needs: | |
| - misc | |
| - test | |
| - spectest | |
| - browsertest | |
| - performance | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ env.NODE_VERSION_HIGHEST }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION_HIGHEST }} | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: performance-benchmark-watdiv-file | |
| path: performance/benchmark-watdiv-file/combinations/combination_0/output/ | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: performance-benchmark-watdiv-tpf | |
| path: performance/benchmark-watdiv-tpf/combinations/combination_0/output/ | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: performance-benchmark-bsbm-file | |
| path: performance/benchmark-bsbm-file/combinations/combination_0/output/ | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: performance-benchmark-bsbm-tpf | |
| path: performance/benchmark-bsbm-tpf/combinations/combination_0/output/ | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: performance-benchmark-web | |
| path: performance/benchmark-web/combinations/combination_0/output/ | |
| - name: Process benchmark detailed results | |
| run: npx -p @rubensworks/process-sparql-benchmark-results psbr csv ghbench performance/benchmark-watdiv-file/combinations/combination_0/output/ performance/benchmark-watdiv-tpf/combinations/combination_0/output/ performance/benchmark-bsbm-file/combinations/combination_0/output/ performance/benchmark-bsbm-tpf/combinations/combination_0/output/ performance/benchmark-web/combinations/combination_0/output/ --overrideCombinationLabels WatDiv-File,WatDiv-TPF,BSBM-File,BSBM-TPF,Web --total false --detailed true --name ghbench-detail.json | |
| - name: Process benchmark total results | |
| run: npx -p @rubensworks/process-sparql-benchmark-results psbr csv ghbench performance/benchmark-watdiv-file/combinations/combination_0/output/ performance/benchmark-watdiv-tpf/combinations/combination_0/output/ performance/benchmark-bsbm-file/combinations/combination_0/output/ performance/benchmark-bsbm-tpf/combinations/combination_0/output/ performance/benchmark-web/combinations/combination_0/output/ --overrideCombinationLabels WatDiv-File,WatDiv-TPF,BSBM-File,BSBM-TPF,Web --total true --detailed false --name ghbench-total.json | |
| - name: Determine benchmark detailed results target directory name | |
| run: echo "BENCHMARK_DATA_DIR_PATH_DETAIL=comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-detail" >> $GITHUB_ENV | |
| - name: Determine benchmarks total results target directory name | |
| run: echo "BENCHMARK_DATA_DIR_PATH_TOTAL=comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-total" >> $GITHUB_ENV | |
| - name: Finalize benchmarks detailed results | |
| uses: benchmark-action/github-action-benchmark@v1 | |
| with: | |
| name: Benchmarks detailed results | |
| tool: customSmallerIsBetter | |
| output-file-path: ghbench-detail.json | |
| github-token: ${{ secrets.PAT }} | |
| auto-push: true | |
| alert-comment-cc-users: '@rubensworks' | |
| gh-repository: github.com/comunica/comunica-performance-results | |
| gh-pages-branch: master | |
| benchmark-data-dir-path: ${{ env.BENCHMARK_DATA_DIR_PATH_DETAIL }} | |
| - name: Cleanup benchmark-action data | |
| run: rm -rf ./benchmark-data-repository | |
| - name: Finalize benchmarks total results | |
| uses: benchmark-action/github-action-benchmark@v1 | |
| with: | |
| name: Benchmarks total results | |
| tool: customSmallerIsBetter | |
| output-file-path: ghbench-total.json | |
| github-token: ${{ secrets.PAT }} | |
| auto-push: true | |
| alert-threshold: '150%' | |
| comment-always: true | |
| comment-on-alert: true | |
| alert-comment-cc-users: '@rubensworks' | |
| summary-always: true | |
| gh-repository: github.com/comunica/comunica-performance-results | |
| gh-pages-branch: master | |
| benchmark-data-dir-path: ${{ env.BENCHMARK_DATA_DIR_PATH_TOTAL }} | |
| - name: Prepare comment on commit with link to performance results | |
| run: echo -e "Performance benchmarks succeeded! 🚀\n\n\[[Summarized results](https://comunica.github.io/comunica-performance-results/comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-total/)\] \[[Detailed results](https://comunica.github.io/comunica-performance-results/comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-detail/)\]" > ./commit-comment-body.txt | |
| - name: Comment on commit with link to performance results | |
| uses: peter-evans/commit-comment@v4 | |
| with: | |
| body-path: ./commit-comment-body.txt | |
| documentation: | |
| name: Prepare documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Ensure line endings are consistent | |
| run: git config --global core.autocrlf input | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Use Node.js ${{ env.NODE_VERSION_LOWEST }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION_LOWEST }} | |
| cache: yarn | |
| - name: Install dependencies | |
| run: yarn install --ignore-scripts --frozen-lockfile | |
| - name: Build documentation | |
| run: yarn run doc | |
| - name: Prepare artifact | |
| uses: actions/upload-pages-artifact@v5 | |
| with: | |
| path: documentation | |
| name: documentation | |
| documentation-publish: | |
| name: Publish documentation | |
| needs: | |
| - misc | |
| - test | |
| - spectest | |
| - browsertest | |
| - documentation | |
| runs-on: ubuntu-latest | |
| # The documentation is only published for master branch | |
| if: startsWith(github.ref, 'refs/heads/master') | |
| permissions: | |
| pages: write | |
| id-token: write | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v5 | |
| with: | |
| artifact_name: documentation |