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