name: CI on: push: branches: - 'main' - 'versions/*' tags: - 'v*' pull_request: branches: - '**' jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '16.x' - run: npm ci --ignore-scripts - run: npm run lint validate-components: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '16.x' - run: npm ci - run: npm run validate test-unit: runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: - ubuntu-latest - windows-latest node-version: - '12.17' - '12.x' - '14.2' - '14.x' - '16.0' - '16.x' - '17.0' - '17.x' timeout-minutes: 10 steps: - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - name: Ensure line endings are consistent run: git config --global core.autocrlf input - name: Check out repository uses: actions/checkout@v2 - name: Install dependencies and run build scripts run: npm ci - name: Type-check tests run: npm run test:ts - name: Run unit tests run: npm run test:unit - name: Submit unit test coverage uses: coverallsapp/github-action@master with: github-token: ${{ secrets.github_token }} flag-name: test-unit-${{ matrix.node-version }}-${{ matrix.operating-system }} parallel: true - name: Run deployment tests run: npm run test:deploy test-integration: runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: - ubuntu-latest node-version: - '12.x' - '14.x' - '16.x' env: TEST_DOCKER: true services: sparql-endpoint: image: tenforce/virtuoso env: SPARQL_UPDATE: true ports: - 4000:8890 redis: image: redis ports: - 6379:6379 timeout-minutes: 10 steps: - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - name: Check out repository uses: actions/checkout@v2 - name: Install dependencies and run build scripts run: npm ci - name: Run integration tests run: npm run test:integration coveralls: needs: test-unit runs-on: ubuntu-latest steps: - name: Consolidate test coverage from different jobs uses: coverallsapp/github-action@master with: github-token: ${{ secrets.github_token }} parallel-finished: true docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '16.x' - run: npm ci --ignore-scripts - run: npm run docs - name: Save docs uses: actions/upload-artifact@v2 with: name: docs path: docs retention-days: 1 publish-docs: needs: - docs - lint - test-unit - test-integration - validate-components runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/download-artifact@v2 with: name: docs path: docs - uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: .