# Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. # Documentation: https://docs.github.com/en/actions name: build concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: push: branches: - main - develop - next - release/* pull_request: branches: - main - develop - next jobs: lint: runs-on: ubuntu-latest strategy: matrix: node-version: [20] steps: - uses: actions/checkout@v4.1.4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.0 with: node-version: ${{ matrix.node-version }} - name: Load cached dependencies uses: actions/cache@v4.0.2 id: cache with: path: | **/node_modules **/.turbo /home/runner/.cache/Cypress key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} - name: Install dependencies id: install-dependencies if: steps.cache.outputs.cache-hit != 'true' run: npm install # - name: Fix code style linting errors # id: lint-fix # run: npm run lint:fix # continue-on-error: true # # - name: Commit fixed linting errors # id: commit # uses: stefanzweifel/git-auto-commit-action@v4 # with: # commit_message: "ci: fix code style linting errors" - name: Lint code id: lint run: npm run lint test: runs-on: ubuntu-latest strategy: matrix: node-version: [20] test-spec: - { name: "Integration", spec: "./tests/cypress/integration/**/*.spec.{js,ts}" } #- { name: "Demos/Commands", spec: "./demos/src/Commands/**/*.spec.{js,ts}" } - { name: "Demos/Examples", spec: "./demos/src/Examples/**/*.spec.{js,ts}" } - { name: "Demos/Experiments", spec: "./demos/src/Experiments/**/*.spec.{js,ts}" } - { name: "Demos/Extensions", spec: "./demos/src/Extensions/**/*.spec.{js,ts}" } - { name: "Demos/GuideContent", spec: "./demos/src/GuideContent/**/*.spec.{js,ts}" } - { name: "Demos/GuideGettingStarted", spec: "./demos/src/GuideGettingStarted/**/*.spec.{js,ts}" } #- { name: "Demos/GuideNodeViews", "./demos/src/GuideNodeViews/**/*.spec.{js,ts}" } - { name: "Demos/Marks", spec: "./demos/src/Marks/**/*.spec.{js,ts}" } - { name: "Demos/Nodes", spec: "./demos/src/Nodes/**/*.spec.{js,ts}" } #- { name: "Demos/Overview", spec: "./demos/src/Overview/**/*.spec.{js,ts}" } steps: - uses: actions/checkout@v4.1.4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.0 with: node-version: ${{ matrix.node-version }} - name: Install dependencies id: install-dependencies run: npm install - name: Try to build the packages id: build-packages run: npm run build:pm - name: Test ${{ matrix.test-spec.name }} id: cypress uses: cypress-io/github-action@v6.7.1 with: cache-key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} start: npm run serve wait-on: 'http://localhost:3000' spec: ${{ matrix.test-spec.spec }} project: ./tests browser: chrome quiet: true - name: Export screenshots (on failure only) uses: actions/upload-artifact@v4.3.3 if: failure() with: name: cypress-screenshots path: tests/cypress/screenshots retention-days: 7 - name: Export screen recordings (on failure only) uses: actions/upload-artifact@v4.3.3 if: failure() with: name: cypress-videos path: tests/cypress/videos retention-days: 7 build: runs-on: ubuntu-latest needs: lint strategy: matrix: node-version: [20] steps: - uses: actions/checkout@v4.1.4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.0 with: node-version: ${{ matrix.node-version }} - name: Load cached dependencies uses: actions/cache@v4.0.2 id: cache with: path: | **/node_modules /home/runner/.cache/Cypress key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} - name: Install dependencies id: install-dependencies if: steps.cache.outputs.cache-hit != 'true' run: npm install - name: Try to build the packages id: build-packages run: npm run build:ci