squiggle/.github/workflows/ci.yaml
2022-03-24 11:32:45 -04:00

106 lines
3.0 KiB
YAML

name: Squiggle packages check
on: [push]
jobs:
pre_check:
name: Precheck for skipping redundant jobs
runs-on: ubuntu-latest
outputs:
should_skip_lang: ${{ steps.skip_lang_check.outputs.should_skip }}
should_skip_components: ${{ steps.skip_components_check.outputs.should_skip }}
should_skip_website: ${{ steps.skip_website_check.outputs.should_skip }}
steps:
- id: skip_lang_check
name: Check if the changes are about squiggle-lang src files
uses: fkirc/skip-duplicate-actions@master
with:
paths: '["packages/squiggle-lang/*"]'
- id: skip_components_check
name: Check if the changes are about components src files
uses: fkirc/skip-duplicate-actions@master
with:
paths: '["packages/components/*"]'
- id: skip_website_check
name: Check if the changes are about website src files
uses: fkirc/skip-duplicate-actions@master
with:
paths: '["packages/website/*"]'
lang-build-test:
name: Language build and test
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_lang != 'true' || needs.pre_check.outputs.should_skip_components != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/squiggle-lang
steps:
- uses: actions/checkout@v2
- name: Install packages from monorepo level
run: cd ../../ && yarn
- name: Install packages
run: yarn
- name: Build rescript codebase
run: yarn build
- name: Run tests
run: yarn test
- name: Run tsc and webpack
run: yarn bundle
- name: Cache lang build and bundle outputs
uses: actions/cache@v3
id: lang-outputs
with:
path: |
lib
dist
node_modules
key: ${{ github.sha }}
components-build-test:
name: Components build and test
runs-on: ubuntu-latest
needs: [pre_check, lang-build-test]
if: ${{ needs.pre_check.outputs.should_skip_components != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/components
steps:
- uses: actions/checkout@v2
- name: Gain lang build and bundle outputs from cache
uses: actions/cache@v3
id: lang-outputs
with:
path: |
lib
dist
node_modules
key: ${{ github.sha }}
- name: Install packages from monorepo level
run: cd ../../ && yarn
- name: Install packages for components package
run: yarn
- name: Run tsc and webpack
run: yarn bundle
- name: Build storybook
run: yarn build
website-dry-build:
name: Website dry build
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_website != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/website
steps:
- uses: actions/checkout@v2
- name: Install packages
run: yarn
- name: Build website assets
run: yarn build