avoid lazy race conditions (#1364)

We had a few issues with lazy race conditions failing CI. This came from
scripts configured to invoke lazy again, rather than through expressing
dependencies between scripts.

This diff reconfigures lazy to articulate these sorts of things as
dependencies instead of through self-invocation. Instead of having lots
of separate `build-package`, `build-docs`, etc commands, we now just
have a build command with package overrides to express more specific
options

### Change Type
- [x] `internal` — Any other changes that don't affect the published
package (will not publish a new version)

### Release Notes
[internal only]
pull/1367/head
alex 2023-05-12 16:41:40 +01:00 zatwierdzone przez GitHub
rodzic 6aa7f9957f
commit 0bd6410d9f
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
19 zmienionych plików z 44 dodań i 52 usunięć

Wyświetl plik

@ -49,13 +49,13 @@ jobs:
- name: Check API declarations and docs work as intended
run: yarn api-check
- name: Pack public packages
run: "yarn lazy pack-tarball | sed -E 's/^.*? ::/::/'"
- name: Build all projects
# the sed pipe makes sure that github annotations come through without
# turbo's prefix
run: "yarn build | sed -E 's/^.*? ::/::/'"
- name: Pack public packages
run: "yarn lazy pack-tarball | sed -E 's/^.*? ::/::/'"
- name: Test
run: yarn test

Wyświetl plik

@ -27,10 +27,8 @@
"infinite"
],
"scripts": {
"dev": "lazy dev-docs",
"dev-docs": "next dev",
"build": "lazy build-docs",
"build-docs": "next build",
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "yarn run -T tsx ../../scripts/lint.ts",
"docs-content": "ts-node --project tsconfig.content.json ./scripts/index.ts",

Wyświetl plik

@ -28,7 +28,6 @@
],
"scripts": {
"build": "yarn run -T tsx scripts/build.ts",
"build:vscode-editor": "yarn run -T tsx scripts/build.ts",
"dev": "yarn run -T tsx scripts/dev.ts",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
"lint": "yarn run -T tsx ../../../scripts/lint.ts"

Wyświetl plik

@ -25,7 +25,7 @@
"infinite"
],
"scripts": {
"dev-webdriver": "concurrently --names \"tsc,esbuild\" \"yarn run -T tsx ../../scripts/typecheck.ts --build --watch --preserveWatchOutput\" \"node ./scripts/dev.mjs\"",
"dev": "concurrently --names \"tsc,esbuild\" \"yarn run -T tsx ../../scripts/typecheck.ts --build --watch --preserveWatchOutput\" \"node ./scripts/dev.mjs\"",
"lint": "yarn run -T tsx ../../scripts/lint.ts"
},
"devDependencies": {

Wyświetl plik

@ -3,23 +3,31 @@ import { LazyConfig } from 'lazyrepo'
export function generateSharedScripts(bublic: '<rootDir>' | '<rootDir>/bublic') {
return {
build: {
runsAfter: { 'build-package': {}, prebuild: {} },
},
'build:vscode-editor': {
runsAfter: { 'refresh-assets': {} },
baseCommand: 'exit 0',
runsAfter: { prebuild: {}, 'refresh-assets': {} },
workspaceOverrides: {
'{bublic/,}apps/docs': { runsAfter: { 'docs-content': {} } },
'{bublic/,}apps/vscode/*': { runsAfter: { 'refresh-assets': {} } },
'{bublic/,}packages/*': {
runsAfter: { 'build-api': { in: 'self-only' }, prebuild: { in: 'self-only' } },
cache: {
inputs: ['api/**/*', 'src/**/*'],
},
},
},
},
dev: {
execution: 'independent',
runsAfter: { 'refresh-assets': {} },
cache: 'none',
},
'dev-vscode': {
runsAfter: { 'build:vscode-editor': {} },
},
'dev-webdriver': {
execution: 'independent',
runsAfter: { 'refresh-assets': {}, prebuild: {}, 'build:vscode-editor': {} },
cache: 'none',
workspaceOverrides: {
'{bublic/,}apps/docs': { runsAfter: { 'docs-content': { in: 'self-only' } } },
'{bublic/,}apps/vscode/*': { runsAfter: { build: { in: 'self-only' } } },
'{bublic/,}apps/webdriver': {
runsAfter: { 'refresh-assets': {}, prebuild: {} },
cache: 'none',
},
},
},
test: {
baseCommand: 'yarn run -T jest',
@ -27,6 +35,7 @@ export function generateSharedScripts(bublic: '<rootDir>' | '<rootDir>/bublic')
},
'test-coverage': {
baseCommand: 'yarn run -T jest --coverage',
runsAfter: { 'refresh-assets': {} },
},
lint: {
execution: 'independent',
@ -37,12 +46,6 @@ export function generateSharedScripts(bublic: '<rootDir>' | '<rootDir>/bublic')
},
},
},
'build-package': {
runsAfter: { 'build-api': {}, prebuild: {} },
cache: {
inputs: ['api/**/*', 'src/**/*'],
},
},
'pack-tarball': {
parallel: false,
},
@ -84,12 +87,6 @@ export function generateSharedScripts(bublic: '<rootDir>' | '<rootDir>/bublic')
},
},
},
'build-docs': {
runsAfter: { 'docs-content': {} },
},
'dev-docs': {
runsAfter: { 'docs-content': {} },
},
'docs-content': {
runsAfter: { 'build-api': {} },
cache: {

Wyświetl plik

@ -37,11 +37,11 @@
"postinstall": "husky install && yarn refresh-assets",
"refresh-assets": "lazy refresh-assets",
"build": "lazy build",
"build-docs": "lazy build-docs",
"build-docs": "lazy build --filter='apps/docs'",
"dev": "lazy run dev --filter='{,bublic/}apps/examples' --filter='{,bublic/}packages/tldraw'",
"dev-docs": "lazy run dev-docs",
"dev-docs": "lazy run dev --filter='apps/docs'",
"dev-vscode": "code ./apps/vscode/extension && lazy run dev --filter='{,bublic/}apps/vscode/{extension,editor}'",
"dev-webdriver": "lazy run dev-webdriver --filter='apps/webdriver'",
"dev-webdriver": "lazy run dev --filter='apps/webdriver' --filter='{,bublic/}apps/vscode/*'",
"build-types": "lazy inherit",
"build-api": "lazy build-api",
"build-package": "lazy build-package",

Wyświetl plik

@ -37,8 +37,7 @@
"test": "lazy inherit",
"benchmark": "yarn run -T tsx ./scripts/benchmark.ts",
"test-coverage": "lazy inherit",
"build": "lazy build-package",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -33,7 +33,7 @@
"scripts": {
"test": "lazy inherit",
"test-coverage": "lazy inherit",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -31,7 +31,7 @@
"/* GOTCHA */": "files will include ./dist and index.d.ts by default, add any others you want to include in here",
"files": [],
"scripts": {
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -33,7 +33,7 @@
"scripts": {
"test": "lazy inherit",
"test-coverage": "lazy inherit",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -33,8 +33,7 @@
"test-coverage": "lazy inherit",
"dev": "chokidar '../{editor,ui}/*.css' -c 'node ./scripts/copy-css-files.mjs' --initial",
"prebuild": "node ./scripts/copy-css-files.mjs",
"build": "node ./scripts/copy-css-files.mjs",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -38,7 +38,7 @@
"new-asset": "node ./scripts/new-asset.js",
"index": "node ./scripts/build-index.js && yarn format",
"format": "yarn run -T prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -33,7 +33,7 @@
"scripts": {
"test": "lazy inherit",
"test-coverage": "lazy inherit",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -33,7 +33,7 @@
"scripts": {
"test": "lazy inherit",
"test-coverage": "lazy inherit",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -33,7 +33,7 @@
"scripts": {
"test": "lazy inherit",
"test-coverage": "lazy inherit",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -36,7 +36,7 @@
"scripts": {
"test": "lazy inherit --passWithNoTests",
"test-coverage": "yarn run -T jest --passWithNoTests --coverage",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -33,7 +33,7 @@
"scripts": {
"test": "lazy inherit",
"test-coverage": "lazy inherit",
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
"build": "yarn run -T tsx ../../scripts/build-package.ts",
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
"postpack": "../../scripts/postpack.sh",

Wyświetl plik

@ -25,7 +25,7 @@ const expectedPackageScripts = {
// published packages should have these scripts
const expectedPublishedPackageScripts = {
...expectedPackageScripts,
'build-package': tsScript('build-package.ts'),
build: tsScript('build-package.ts'),
'build-api': tsScript('build-api.ts'),
prepack: tsScript('prepack.ts'),
postpack: (packageDir: string) => scriptPath(packageDir, 'postpack.sh'),
@ -57,7 +57,7 @@ const perPackageExceptions: Record<string, Record<string, () => string | undefin
},
'@tldraw/assets': {
test: () => undefined,
'build-package': () => undefined,
build: () => undefined,
'build-api': () => undefined,
prepack: () => undefined,
postpack: () => undefined,

Wyświetl plik

@ -12,7 +12,7 @@ export async function preparePackage({ sourcePackageDir }: { sourcePackageDir: s
const manifest = JSON.parse(readFileSync(path.join(sourcePackageDir, 'package.json'), 'utf8'))
execSync('yarn run -T lazy build-package', { cwd: sourcePackageDir, stdio: 'inherit' })
execSync('yarn run -T lazy build', { cwd: sourcePackageDir, stdio: 'inherit' })
// save package.json and reinstate it in postpack
copyFileSync(