Skip to content

Update base comunica to work with changes in link traversal #516

Update base comunica to work with changes in link traversal

Update base comunica to work with changes in link traversal #516

Workflow file for this run

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