Create sonarqube.yml #1
This file contains 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 | |
# Declare default permissions as read only. | |
permissions: read-all | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- '**' | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
inspect-code: | |
name: Inspect code | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3.4.1 | |
with: | |
node-version: 18 | |
- name: Setup cache for Chromium binary | |
uses: actions/cache@v3 | |
with: | |
path: .local-chromium | |
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }} | |
- name: Install dependencies | |
run: npm ci | |
- name: Check code | |
run: npm run check | |
- name: Lint code | |
run: npm run lint | |
- name: Lint commits | |
run: npm run commitlint | |
if: github.event_name != 'pull_request' | |
check-docs: | |
name: Check documentation | |
runs-on: ubuntu-latest | |
outputs: | |
needs_deploying: ${{ steps.needs_deploying.outputs.value }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3.4.1 | |
with: | |
cache: npm | |
- name: Setup cache for Chromium binary | |
uses: actions/cache@v3 | |
with: | |
path: .local-chromium | |
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }} | |
- name: Install dependencies | |
run: npm ci | |
- name: Build | |
run: npm run docs | |
- name: Check if autogenerated docs differ | |
run: | | |
if [[ $(git diff) ]]; then | |
echo "Please update the documentation by running 'npm run docs'" | |
exit 1 | |
fi | |
- name: Check if docs need to be deployed | |
id: needs_deploying | |
run: | | |
if [[ $(git diff HEAD^ -- ./docs ./website) ]]; then | |
needs_deploying=true | |
else | |
needs_deploying=false | |
fi | |
echo "::set-output name=value::$needs_deploying" | |
deploy-docs: | |
needs: check-docs | |
name: Deploy docs (if needed) | |
if: ${{ needs.check-docs.outputs.needs_deploying == 'true' && github.event_name != 'pull_request' }} | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3.4.1 | |
with: | |
cache: npm | |
- name: Install dependencies | |
working-directory: ./website | |
run: npm ci | |
- name: Increase swap space | |
uses: pierotofy/set-swap-space@49819abfb41bd9b44fb781159c033dba90353a7c | |
with: | |
swap-size-gb: 10 | |
- name: Build website | |
working-directory: ./website | |
env: | |
NODE_OPTIONS: --max-old-space-size=6144 | |
run: npm run build | |
- name: Deploy to GitHub Pages | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./website/build | |
user_name: release-please[bot] | |
user_email: 55107282+release-please[bot]@users.noreply.github.com | |
tests: | |
name: ${{ matrix.spec.name }} tests (${{ matrix.spec.node }}) | |
runs-on: ${{ matrix.spec.machine }} | |
continue-on-error: true | |
strategy: | |
matrix: | |
spec: | |
- name: Linux | |
machine: ubuntu-latest | |
node: 14 | |
- name: Linux | |
machine: ubuntu-latest | |
node: 16 | |
- name: Linux | |
machine: ubuntu-latest | |
node: 18 | |
- name: macOS | |
machine: macos-latest | |
node: 14 | |
- name: Windows | |
machine: windows-latest | |
node: 14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup cache for Chromium binary | |
uses: actions/cache@v3 | |
with: | |
path: .local-chromium | |
key: ${{ runner.os }}-chromium-${{ hashFiles('src/revisions.ts') }} | |
- name: Setup cache for Firefox binary | |
uses: actions/cache@v3 | |
with: | |
path: .local-firefox | |
key: ${{ runner.os }}-firefox-${{ hashFiles('src/revisions.ts') }} | |
- name: Set up Node.js | |
uses: actions/setup-node@v3.4.1 | |
with: | |
node-version: ${{ matrix.spec.node }} | |
- name: Install dependencies with Chromium | |
run: npm install | |
- name: Install Firefox | |
env: | |
PUPPETEER_PRODUCT: firefox | |
run: npm install | |
- name: Install linux dependencies. | |
if: ${{ matrix.spec.name == 'Linux' }} | |
run: sudo apt-get install xvfb | |
- name: Build | |
run: npm run build | |
- name: Test types | |
run: npm run test:types | |
- name: Run all tests (only on Linux) | |
id: full-test | |
if: ${{ matrix.spec.name == 'Linux' }} | |
run: xvfb-run --auto-servernum npm test | |
- name: Test Chrome | |
id: test-chrome | |
if: ${{ steps.full-test.conclusion == 'skipped' }} | |
run: npm run test:chrome | |
- name: Test Firefox | |
if: ${{ steps.test-chrome.conclusion != 'skipped' }} | |
continue-on-error: true | |
run: npm run test:firefox | |
- name: Test bundling and installation | |
if: ${{ matrix.spec.name == 'Linux' }} | |
run: | | |
# Note: this modifies package.json to test puppeteer-core, so we test this last. | |
npm run test:install | |
docker-tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
node: [16] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3.4.1 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
npm install | |
ls .local-chromium | |
- name: Build | |
run: | | |
npm run build | |
docker/pack.sh | |
- name: Build docker image | |
working-directory: ./docker | |
run: | | |
docker build -t puppeteer-test-image . | |
- name: Run smoke test | |
working-directory: ./docker | |
run: | | |
docker run -i --init --cap-add=SYS_ADMIN --rm puppeteer-test-image node -e "`cat test/smoke-test.js`" |