Skip to content

Transition to Yarn Workspaces #30

Transition to Yarn Workspaces

Transition to Yarn Workspaces #30

Workflow file for this run

name: new-workflow
permissions:
contents: read
on:
pull_request:
branches:
- master
jobs:
setup-repo:
name: Setup Repository Tooling
runs-on: ubuntu-latest
steps:
- name: Check out source code
uses: actions/checkout@v4
- name: Enable Corepack
run: corepack enable
- name: Use Node.js 💻
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: yarn
- name: Check cache for repotools
uses: actions/cache/restore@v4
id: cache-repotools
with:
path: ./lib/repotools/dist
key: repotools
- name: Install Repotools Dependencies
run: yarn workspaces focus @sourceacademy/modules-repotools
- name: Build Repotools
if: steps.cache-repotools.outputs.cache-hit != 'true'
run: yarn workspaces foreach -A --include @sourceacademy/modules-repotools run build
- name: Cache Repotools
if: steps.cache-repotools.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ./lib/repotools/dist
key: repotools
- name: Install Buildtools Dependencies
run: yarn workspaces focus @sourceacademy/modules-buildtools
- name: Check cache for buildtools
uses: actions/cache/restore@v4
id: cache-buildtools
with:
path: ./lib/buildtools/bin/index.js
key: buildtools
- name: Build Buildtools
if: steps.cache-buildtools.outputs.cache-hit != 'true'
run: yarn workspaces foreach -A --include @sourceacademy/modules-buildtools run build
- name: Cache Buildtools
if: steps.cache-repotools.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ./lib/buildtools/bin/index.js
key: buildtools
find-packages:
name: Determine the packages present in the repo for the given type
needs: setup-repo
runs-on: ubuntu-latest
strategy:
matrix:
type: ['libs', 'bundles', 'tabs']
outputs:
libs: ${{ steps.find.outputs.libs }}
bundles: ${{ steps.find.outputs.bundles }}
tabs: ${{ steps.find.outputs.tabs }}
steps:
- name: Check out source code
uses: actions/checkout@v4
- name: Enable Corepack
run: corepack enable
- name: Use Node.js 💻
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: yarn
- name: Setup actions
run: yarn workspaces focus @sourceacademy/modules-github-actions --production
- name: Find Packages
id: find
uses: ./.github/actions/src/info
with:
type: ${{ matrix.type }}
test-libs:
name: Test and Typecheck libraries
runs-on: ubuntu-latest
needs: find-packages
strategy:
matrix:
package: ${{ fromJson(needs.find-packages.outputs.tabs) }}
steps:
- name: Check out source code
uses: actions/checkout@v4
- name: Enable Corepack
run: corepack enable
- name: Use Node.js 💻
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: yarn
- name: Install dependencies
run: yarn workspaces focus ${{ matrix.package.name }}
- name: Restore repotools
uses: actions/cache/restore@v4
with:
key: repotools
- name: tsc and test
run: |
cd ${{ matrix.package.directory }}
yarn tsc
yarn test
test-tabs:
name: Test and Typecheck tabs
runs-on: ubuntu-latest
needs: find-packages
strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.find-packages.outputs.tabs) }}
steps:
- name: Check out source code
uses: actions/checkout@v4
- name: Enable Corepack
run: corepack enable
- name: Use Node.js 💻
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: yarn
- name: Setup actions
run: yarn workspaces focus @sourceacademy/modules-github-actions --production
- name: Filter paths
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
changed:
- ${{ matrix.package.directory }}/**
- name: Change into directory for ${{ matrix.package.name }}
run: cd ${{ matrix.package.directory }}
- name: Restore buildtools
uses: actions/cache/restore@v4
with:
key: buildtools
path: ./lib/buildtools/bin/index.js
- name: Install dependencies
uses: ./.github/actions/src/install-deps
with:
directory: ${{ matrix.package.directory }}
packageName: ${{ matrix.package.name }}
testRequired: ${{ steps.filter.outputs.changed == 'true' }}
- name: tsc and test
if: steps.filter.outputs.changed == 'true'
run: |
yarn tsc
yarn test
- name: Build
run: yarn build