.github/workflows/continuous-integration.yml
name: Continuous Integration
on:
push:
branches:
- main
pull_request:
concurrency:
group: continuous-integration-${{ github.head_ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: '16'
cache: 'yarn'
- name: Turbo cache
if: ${{ github.ref_name != 'main' }}
id: turbo-cache
uses: actions/cache@v4
with:
path: node_modules/.cache/turbo
key: turbo-${{ github.job }}-${{ github.ref_name }}-${{ github.sha }}
restore-keys: |
turbo-${{ github.job }}-${{ github.ref_name }}-
- run: yarn run install-frozen-lockfile
- run: yarn svgr
- run: yarn run lint
- name: Run Coverage Report
if: '!github.event.pull_request.head.repo.fork'
uses: paambaati/codeclimate-action@v9.0.0
env:
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
with:
coverageCommand: xvfb-run -a yarn run cover
coverageLocations: ${{github.workspace}}/coverage/lcov.info:lcov
- name: Run Fork Coverage
if: 'github.event.pull_request.head.repo.fork'
run: xvfb-run -a yarn run cover
- name: Publish to Chromatic
if: '!github.event.pull_request.head.repo.fork'
uses: chromaui/action@v11
with:
token: ${{ secrets.GITHUB_TOKEN }}
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
workingDir: 'webview'
exitOnceUploaded: true
autoAcceptChanges: 'main'
onlyChanged: true
externals: '**/*.scss'