Release: [email protected] #7577
Workflow file for this run
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: CI | |
on: | |
push: | |
branches: [main, 3.x] | |
paths-ignore: | |
- '**.md' | |
- 'assets/**' | |
- 'e2e/**' | |
- 'examples/**' | |
- 'private/**' | |
- 'website/**' | |
- '.github/**' | |
- '!.github/workflows/ci.yml' | |
pull_request: | |
# We want all branches so we configure types to be the GH default again | |
types: [opened, synchronize, reopened] | |
paths-ignore: | |
- '**.md' | |
- 'assets/**' | |
- 'e2e/**' | |
- 'examples/**' | |
- 'private/**' | |
- 'website/**' | |
- '.github/**' | |
- '!.github/workflows/ci.yml' | |
env: | |
YARN_ENABLE_GLOBAL_CACHE: false | |
jobs: | |
unit_tests: | |
name: Unit tests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [18.x, 20.x] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: | |
echo "dir=$(corepack yarn config get cacheFolder)" >> $GITHUB_OUTPUT | |
- uses: actions/cache@v4 | |
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{matrix.node-version}} | |
- name: Install dependencies | |
run: | |
corepack yarn workspaces focus $(corepack yarn workspaces list --json | |
| jq -r .name | awk '/^@uppy-example/{ next } { if ($0!="uppy.io") | |
print $0 }') | |
env: | |
# https://docs.cypress.io/guides/references/advanced-installation#Skipping-installation | |
CYPRESS_INSTALL_BINARY: 0 | |
- name: Run tests | |
run: corepack yarn run test:unit | |
types: | |
name: Type tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: | |
echo "dir=$(corepack yarn config get cacheFolder)" >> $GITHUB_OUTPUT | |
- uses: actions/cache@v4 | |
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
- name: Install dependencies | |
run: | |
corepack yarn workspaces focus $(corepack yarn workspaces list --json | |
| jq -r .name | awk '/^@uppy-example/{ next } { if ($0!="uppy.io") | |
print $0 }') | |
env: | |
# https://docs.cypress.io/guides/references/advanced-installation#Skipping-installation | |
CYPRESS_INSTALL_BINARY: 0 | |
# Need to do a bunch of work to generate the locale typings 🙃 | |
- name: Prepare type declarations | |
run: | | |
corepack yarn run build:lib | |
corepack yarn run build:companion | |
corepack yarn run build:locale-pack | |
find packages/@uppy -name 'tsconfig.json' -delete | |
- name: Run type tests | |
run: corepack yarn run test:type | |
- name: Drop manual tyoes | |
# For backward compatiblity reasons, Uppy plugins ship a manual crafted d.ts file. | |
# We don't want to remove that file to not break users. | |
# However, we want to validate the types based on the types inferred from source. | |
run: | | |
git checkout -- packages/@uppy | |
node --input-type=module <<'EOF' | |
import { existsSync } from 'node:fs'; | |
import { opendir, readFile, writeFile } from 'node:fs/promises'; | |
for await (const dirent of await opendir('./packages/@uppy')) { | |
if (existsSync(`./packages/@uppy/${dirent.name}/tsconfig.build.json`)) { | |
const pjsonPath = `./packages/@uppy/${dirent.name}/package.json` | |
const pjson = JSON.parse(await readFile(pjsonPath)); | |
delete pjson.types | |
await writeFile(pjsonPath, JSON.stringify(pjson)) | |
} | |
} | |
const pjsonPath = `./packages/uppy/package.json` | |
const pjson = JSON.parse(await readFile(pjsonPath)); | |
delete pjson.types | |
await writeFile(pjsonPath, JSON.stringify(pjson)) | |
EOF | |
echo > packages/uppy/types/index.test-d.ts | |
rm -r packages/@uppy/*/types | |
- name: Attempt building TS packages | |
run: corepack yarn run build:ts |