mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-05 03:28:59 +09:00
101 lines
3.0 KiB
YAML
101 lines
3.0 KiB
YAML
name: Main workflow
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
|
|
# cancel in-progress runs on new commits to same PR (gitub.event.number)
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
jobs:
|
|
checks:
|
|
timeout-minutes: 20
|
|
|
|
env:
|
|
DATABASE_URL: postgres://
|
|
AUTH_SECRET: test
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }} # HEAD commit instead of merge commit
|
|
|
|
- uses: ./.github/actions/ci-setup
|
|
|
|
- uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
./node_modules/.cache/prettier/.prettier-cache
|
|
./node_modules/.cache/eslint/.eslint-cache
|
|
key: checks-${{ github.sha }}
|
|
restore-keys: checks-
|
|
|
|
- run: echo ===SHA USED=== ${{ github.event.pull_request.head.sha || github.sha }} # todo: remove after check whats happening on main
|
|
|
|
- run: pnpm prettier --cache --check "**/*.{js,md,ts,tsx}"
|
|
|
|
- run: pnpm lint --cache --cache-strategy=content --cache-location=node_modules/.cache/eslint/.eslint-cache
|
|
|
|
- run: pnpm -r test
|
|
- run: pnpm --filter=@webstudio-is/prisma-client build
|
|
- run: pnpm -r typecheck
|
|
|
|
check-size:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }} # HEAD commit instead of merge commit
|
|
|
|
- uses: ./.github/actions/ci-setup
|
|
|
|
- run: pnpm --filter "{./fixtures/*}..." build
|
|
|
|
- uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const assertSize = async (directory, maxSize) => {
|
|
let result = ''
|
|
await exec.exec('du', ['-sk', directory], {
|
|
silent: true,
|
|
listeners: {
|
|
stdout: (data) => {
|
|
result += data.toString()
|
|
}
|
|
}
|
|
})
|
|
const size = Number.parseInt(result, 10)
|
|
return {
|
|
passed: size <= maxSize,
|
|
size,
|
|
diff: size - maxSize,
|
|
directory,
|
|
}
|
|
}
|
|
const results = [
|
|
await assertSize('./fixtures/ssg/dist/client', 308),
|
|
await assertSize('./fixtures/webstudio-remix-netlify-functions/build/client', 568),
|
|
]
|
|
for (const result of results) {
|
|
if (result.passed) {
|
|
console.info(`${result.directory}: ${result.size}kB (${result.diff}kB)`)
|
|
} else {
|
|
console.info('')
|
|
console.error(`${result.directory}: ${result.size}kB (+${result.diff}kB)`)
|
|
}
|
|
}
|
|
if (results.some(result => result.passed === false)) {
|
|
console.error('Some fixtures exceeded limits')
|
|
process.exit(1)
|
|
}
|