Samsara Workflow #298
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: Samsara Workflow | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '30 7 * * MON,WED,FRI' | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
branches: | |
- 'main' | |
- 'v2-trunk' | |
push: | |
branches: | |
- 'main' | |
- 'v2-trunk' | |
paths-ignore: | |
- '**.md' # ignore docs, they don't contribute to the build process | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [ 17.x ] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: pnpm/action-setup@v2 | |
with: | |
version: 8 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'pnpm' | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Store Playwright's Version | |
run: | | |
PLAYWRIGHT_VERSION=$(pnpm ls @playwright/test | grep @playwright | sed 's/.* //') | |
echo "Playwright's Version: $PLAYWRIGHT_VERSION" | |
echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV | |
- name: Cache Playwright Browsers for Playwright's Version | |
id: cache-playwright-browsers | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cache/ms-playwright | |
key: playwright-browsers-${{ env.PLAYWRIGHT_VERSION }} | |
- name: Setup Playwright | |
if: steps.cache-playwright-browsers.outputs.cache-hit != 'true' | |
run: npx playwright install --with-deps | |
- name: unit tests | |
run: pnpm test | |
- name: build static pages | |
run: pnpm build | |
- name: e2e tests | |
run: xvfb-run -a pnpm playwright test --headed | |
- name: archive test results | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: test-results | |
path: | | |
test-results/**/*.png | |
test-results/**/*.webm | |
deploy: | |
if: ${{ github.ref_name == 'main' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') }} | |
needs: 'build' | |
runs-on: ubuntu-latest | |
name: Deploy | |
steps: | |
- name: Trigger Deploy Hook | |
run: | | |
curl -X POST "${{ secrets.CLOUDFLARE_HOOK }}" | grep success | grep true |