name: CI on: pull_request: types: [opened, synchronize] push: branches: [main, v3, v4] concurrency: group: "${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}" cancel-in-progress: true jobs: format: runs-on: ubuntu-latest permissions: # Give the default GITHUB_TOKEN write permission to commit and push the # added or changed files to the repository. contents: write steps: - name: Checkout code uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} - name: Use node uses: actions/setup-node@v4 with: node-version: 20 cache: npm - name: Install dependencies run: npm ci - name: Build run: npm run @ci:build - name: Format Code run: npm run @ci:format - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "[ci] format" commit_user_name: "github-actions[bot]" commit_user_email: "github-actions[bot]@users.noreply.github.com" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} test: runs-on: ubuntu-latest name: "test: node@${{ matrix.node }}" strategy: fail-fast: false matrix: node: [18, 20] steps: - name: Checkout code uses: actions/checkout@v4 - name: Use node@${{ matrix.node }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} cache: npm - name: Install dependencies run: npm ci - name: Run tests run: npm run @ci:test - name: Report code coverage uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} release: runs-on: ubuntu-latest needs: [format, test] if: "${{ github.repository_owner == 'marko-js' && github.event_name == 'push' }}" steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v4 with: node-version: 20 cache: npm - name: Install dependencies run: npm ci - name: Release id: changesets uses: changesets/action@v1 with: version: npm run @ci:version publish: npm run @ci:release commit: "[ci] release" title: "[ci] release" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}