Bump esbuild from 0.25.3 to 0.25.5 (#1503) #510
This file contains hidden or 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: Test and Build | |
on: | |
push: | |
branches: [ "main" ] | |
tags: [ "v*" ] | |
pull_request: | |
branches: [ "main" ] | |
concurrency: | |
# https://stackoverflow.com/a/72408109 | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: ${{ github.ref != format('refs/heads/{0}', github.event.repository.default_branch) }} | |
env: | |
python-version-file: ".python-version" | |
node-version-file: ".nvmrc" | |
RUN_ALL_TESTS: ${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || startsWith(github.ref, 'refs/tags/v') }} | |
permissions: {} | |
jobs: | |
set-build-info: | |
runs-on: ubuntu-latest | |
outputs: | |
branch: ${{ steps.build-info.outputs.branch }} | |
tag: ${{ steps.build-info.outputs.tag }} | |
trigger-sha: ${{ steps.build-info.outputs.trigger-sha }} | |
head-sha: ${{ steps.build-info.outputs.head-sha }} | |
pr-number: ${{ steps.build-info.outputs.pr-number }} | |
steps: | |
- name: Save build info (pull_request) | |
if: github.event_name == 'pull_request' | |
run: | | |
echo "${{ github.event.pull_request.head.ref }}" > branch | |
echo "" > tag | |
echo "${{ github.event.pull_request.head.sha }}" > head-sha | |
echo "${{ github.sha }}" > trigger-sha | |
echo "${{ github.event.pull_request.number }}" > pr-number | |
- name: Save build info (push, branch) | |
if: github.event_name == 'push' && github.ref_type == 'branch' | |
run: | | |
echo "${{ github.ref_name }}" > branch | |
echo "" > tag | |
echo "${{ github.sha }}" > head-sha | |
echo "${{ github.sha }}" > trigger-sha | |
echo "" > pr-number | |
- name: Save build info (push, tag) | |
if: github.event_name == 'push' && github.ref_type == 'tag' | |
run: | | |
echo "" > branch | |
echo "${{ github.ref_name }}" > tag | |
echo "${{ github.sha }}" > head-sha | |
echo "${{ github.sha }}" > trigger-sha | |
echo "" > pr-number | |
- name: Output build info | |
id: build-info | |
run: | | |
echo "branch=$(cat branch)" >> $GITHUB_OUTPUT | |
echo "tag=$(cat tag)" >> $GITHUB_OUTPUT | |
echo "trigger-sha=$(cat trigger-sha)" >> $GITHUB_OUTPUT | |
echo "head-sha=$(cat head-sha)" >> $GITHUB_OUTPUT | |
echo "pr-number=$(cat pr-number)" >> $GITHUB_OUTPUT | |
- name: Upload build info | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-info | |
path: | | |
branch | |
tag | |
head-sha | |
trigger-sha | |
pr-number | |
changes: # See https://github.com/dorny/paths-filter#examples | |
runs-on: ubuntu-latest | |
outputs: | |
common: ${{ steps.filter.outputs.common == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
kernel: ${{ steps.filter.outputs.kernel == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
# stlite-lib: ${{ steps.filter.outputs.stlite-lib == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
stlite-lib: true # This step does not detect changes in the `streamlit` submodule that is needed to trigger the test-stlite-lib job (https://github.com/dorny/paths-filter/issues/143), so skip checking and make it always return true as a workaround. | |
browser: ${{ steps.filter.outputs.browser == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
sharing: ${{ steps.filter.outputs.sharing == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
sharing-editor: ${{ steps.filter.outputs.sharing-editor == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
sharing-common: ${{ steps.filter.outputs.sharing-common == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
desktop: ${{ steps.filter.outputs.desktop == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
gha: | |
- '.github/workflows/**/*' | |
- '.github/actions/**/*' | |
common: | |
- 'packages/common/**/*' | |
kernel: | |
- 'packages/kernel/**/*' | |
# - '!packages/kernel/py/**/*' # Not supported by paths-filter now: https://github.com/dorny/paths-filter/issues/106 | |
# stlite-lib: # We run this job anytime. See above. | |
# - 'packages/kernel/py/stlite-lib/**/*' | |
# - 'streamlit/**/*' | |
browser: | |
- 'packages/browser/**/*' | |
sharing: | |
- 'packages/sharing/**/*' | |
sharing-editor: | |
- 'packages/sharing-editor/**/*' | |
sharing-common: | |
- 'packages/sharing-common/**/*' | |
desktop: | |
- 'packages/desktop/**/*' | |
test-build-common: | |
needs: changes | |
if: ${{ needs.changes.outputs.common == 'true' }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: packages/common | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
protoc: false | |
- name: Lint | |
run: | | |
yarn check:eslint | |
yarn check:prettier | |
- run: yarn test | |
- run: yarn build | |
test-kernel: | |
needs: changes | |
if: ${{ needs.changes.outputs.kernel == 'true' }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: packages/kernel | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
python-version-file: ${{ env.python-version-file }} | |
node-version-file: ${{ env.node-version-file }} | |
- name: Lint | |
run: | | |
yarn check:eslint | |
yarn check:prettier | |
- run: make kernel-test | |
working-directory: . | |
test-stlite-lib: | |
needs: changes | |
if: ${{ needs.changes.outputs.stlite-lib == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
python-version-file: ${{ env.python-version-file }} | |
node-version-file: ${{ env.node-version-file }} | |
- name: Install dependencies | |
shell: bash | |
run: | | |
. .venv/bin/activate | |
cd packages/kernel/py/stlite-lib | |
uv sync | |
- name: Set up Streamlit and build proto | |
run: | | |
. .venv/bin/activate | |
make streamlit-proto | |
- name: Run Ruff | |
run: | | |
. .venv/bin/activate | |
cd packages/kernel/py/stlite-lib | |
uv run ruff check --output-format=github . | |
uv run ruff format . --check | |
- name: Run pyright | |
run: | | |
. .venv/bin/activate | |
cd packages/kernel/py/stlite-lib | |
uv run pyright | |
- name: Run pytest | |
shell: bash | |
run: | | |
. .venv/bin/activate | |
cd packages/kernel/py/stlite-lib | |
uv run pytest -v | |
test-browser: | |
needs: changes | |
if: ${{ needs.changes.outputs.browser == 'true' }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: packages/browser | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
python-version-file: ${{ env.python-version-file }} | |
node-version-file: ${{ env.node-version-file }} | |
- run: make common | |
working-directory: . | |
- name: Lint | |
run: | | |
yarn check:eslint | |
yarn check:prettier | |
- run: yarn test | |
test-sharing: | |
needs: changes | |
if: ${{ needs.changes.outputs.sharing == 'true' }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: packages/sharing | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
protoc: false | |
- name: Lint | |
run: | | |
yarn check:eslint | |
yarn check:prettier | |
# - run: yarn test | |
test-sharing-editor: | |
needs: changes | |
if: ${{ needs.changes.outputs.sharing-editor == 'true' }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: packages/sharing-editor | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
- run: make sharing-common | |
working-directory: . | |
- name: Lint | |
run: | | |
yarn check:eslint | |
yarn check:prettier | |
- run: yarn test | |
test-sharing-common: | |
needs: changes | |
if: ${{ needs.changes.outputs.sharing-common == 'true' }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: packages/sharing-common | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
- name: Lint | |
run: | | |
yarn check:eslint | |
yarn check:prettier | |
- run: yarn build:proto | |
- run: yarn test | |
test-desktop: | |
needs: changes | |
if: ${{ needs.changes.outputs.desktop == 'true' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] # The desktop package contains OS-dependent file paths manipulations differing between POSIX and Windows. | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
working-directory: packages/desktop | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
protoc: false | |
- run: make common | |
working-directory: . | |
- name: Lint | |
if: ${{ matrix.os == 'ubuntu-latest' }} # The glob pattern passed to ESLint is hardcoded as POSIX, so it does not work on Windows. | |
run: | | |
yarn check:eslint | |
yarn check:prettier | |
- run: yarn test | |
build-browser: | |
if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed: https://qiita.com/abetomo/items/d9ede7dbeeb24f723fc5#%E8%A8%AD%E5%AE%9A%E4%BE%8B4 | |
needs: [set-build-info, test-kernel, test-stlite-lib, test-build-common, test-browser] | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
python-version-file: ${{ env.python-version-file }} | |
node-version-file: ${{ env.node-version-file }} | |
# PUBLIC_URL here is set as a relative path, which is possible to the trick introduced at https://github.com/whitphx/stlite/pull/143. | |
- name: Set PUBLIC_URL | |
run: echo "PUBLIC_URL=." >> $GITHUB_ENV | |
- name: Build @stlite/browser | |
run: | | |
. .venv/bin/activate | |
make browser | |
- name: Package | |
working-directory: packages/browser | |
run: yarn pack | |
- name: Upload the built tar ball as an artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
path: packages/browser/package.tgz | |
name: stlite-browser | |
- name: "Inform the package stats of @stlite/browser" | |
uses: ./.github/actions/set-package-stats | |
continue-on-error: true | |
with: | |
key: browser | |
name: "@stlite/browser" | |
input-path: packages/browser/package.tgz | |
# Also get stats of the built wheel files of stlite-lib and streamlit in this job. | |
- name: Get the built wheel file path | |
id: get-wheel-file-path | |
working-directory: | |
run: | | |
pushd packages/kernel/py/stlite-lib/dist | |
echo "STLITE_LIB_WHEEL_FILEPATH=$(find $(pwd) -name "stlite_lib-*-py3-none-any.whl" -print -quit)" >> $GITHUB_OUTPUT | |
popd | |
pushd packages/kernel/py/streamlit/lib/dist | |
echo "STREAMLIT_WHEEL_FILEPATH=$(find $(pwd) -name "streamlit-*.whl" -print -quit)" >> $GITHUB_OUTPUT | |
popd | |
- name: "Inform the package stats of stlite-lib wheel" | |
uses: ./.github/actions/set-package-stats | |
continue-on-error: true | |
with: | |
key: stlite-lib-wheel | |
name: "stlite-lib wheel (built as a part of @stlite/browser)" | |
input-path: ${{ steps.get-wheel-file-path.outputs.STLITE_LIB_WHEEL_FILEPATH }} | |
- name: "Inform the package stats of streamlit wheel" | |
uses: ./.github/actions/set-package-stats | |
continue-on-error: true | |
with: | |
key: streamlit-wheel | |
name: "streamlit wheel (built as a part of @stlite/browser)" | |
input-path: ${{ steps.get-wheel-file-path.outputs.STREAMLIT_WHEEL_FILEPATH }} | |
build-sharing: | |
if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed: https://qiita.com/abetomo/items/d9ede7dbeeb24f723fc5#%E8%A8%AD%E5%AE%9A%E4%BE%8B4 | |
needs: [set-build-info, test-kernel, test-stlite-lib, test-sharing-common, test-sharing] | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
python-version-file: ${{ env.python-version-file }} | |
node-version-file: ${{ env.node-version-file }} | |
## Build and upload @stlite/sharing | |
- name: Set EDITOR_APP_ORIGIN (preview) | |
if: ${{ needs.set-build-info.outputs.branch != github.event.repository.default_branch }} | |
run: echo "EDITOR_APP_ORIGIN_REGEX=^https://[a-z0-9-]+\.stlite-sharing-editor\.pages\.dev$" >> $GITHUB_ENV | |
- name: Set EDITOR_APP_ORIGIN (main branch) | |
if: ${{ needs.set-build-info.outputs.branch == github.event.repository.default_branch }} | |
run: echo "EDITOR_APP_ORIGIN=https://edit.share.stlite.net" >> $GITHUB_ENV | |
- name: Build @stlite/sharing | |
run: | | |
. .venv/bin/activate | |
make sharing | |
- name: Upload the built directory as an artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
path: packages/sharing/build | |
name: stlite-sharing | |
- name: "Inform the package stats" | |
uses: ./.github/actions/set-package-stats | |
continue-on-error: true | |
with: | |
key: sharing | |
name: "stlite sharing" | |
input-path: packages/sharing/build | |
build-sharing-editor: | |
if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed: https://qiita.com/abetomo/items/d9ede7dbeeb24f723fc5#%E8%A8%AD%E5%AE%9A%E4%BE%8B4 | |
needs: [set-build-info, test-build-common, test-sharing-editor, test-sharing-common] | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
- name: Set build option envvar for the preview build | |
if: ${{ needs.set-build-info.outputs.branch != github.event.repository.default_branch }} | |
run: echo "RESOLVE_SHARING_APP_URL_RUNTIME_FROM_EXTERNAL_FILE=true" >> $GITHUB_ENV | |
- name: Set SHARING_APP_URL (main branch) | |
if: ${{ needs.set-build-info.outputs.branch == github.event.repository.default_branch }} | |
run: echo "SHARING_APP_URL=https://share.stlite.net/" >> $GITHUB_ENV | |
- run: make sharing-editor | |
- name: Upload the built directory as an artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
path: packages/sharing-editor/dist | |
name: stlite-sharing-editor | |
- name: "Inform the package stats" | |
uses: ./.github/actions/set-package-stats | |
continue-on-error: true | |
with: | |
key: sharing-editor | |
name: "stlite sharing editor" | |
input-path: packages/sharing-editor/dist | |
build-desktop: | |
if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed: https://qiita.com/abetomo/items/d9ede7dbeeb24f723fc5#%E8%A8%AD%E5%AE%9A%E4%BE%8B4 | |
needs: [set-build-info, test-build-common, test-kernel, test-stlite-lib, test-desktop] | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
persist-credentials: false | |
- uses: ./.github/actions/init-all | |
with: | |
python-version-file: ${{ env.python-version-file }} | |
node-version-file: ${{ env.node-version-file }} | |
- name: Build @stlite/desktop | |
run: | | |
. .venv/bin/activate | |
make desktop | |
- name: Package | |
working-directory: packages/desktop | |
run: yarn pack | |
- name: Upload the built tar ball as an artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
path: packages/desktop/package.tgz | |
name: stlite-desktop | |
- name: "Inform the package stats of @stlite/desktop" | |
uses: ./.github/actions/set-package-stats | |
continue-on-error: true | |
with: | |
key: desktop | |
name: "@stlite/desktop" | |
input-path: packages/desktop/package.tgz | |
e2e-browser: | |
if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed: https://qiita.com/abetomo/items/d9ede7dbeeb24f723fc5#%E8%A8%AD%E5%AE%9A%E4%BE%8B4 | |
needs: [build-browser] | |
permissions: | |
contents: read | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Enable Corepack | |
run: corepack enable | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
- name: Set up the e2e-tests environment | |
run: | | |
yarn install | |
yarn install:browsers | |
working-directory: packages/browser/e2e-tests | |
- run: mkdir -p ${{ runner.temp }}/artifacts/browser | |
- uses: actions/download-artifact@v4 | |
with: | |
name: stlite-browser | |
path: ${{ runner.temp }}/artifacts/browser | |
- run: tar xzvf package.tgz | |
working-directory: ${{ runner.temp }}/artifacts/browser | |
- name: Run the e2e-tests | |
run: yarn test | |
working-directory: packages/browser/e2e-tests | |
env: | |
BUILD_DIR: ${{ runner.temp }}/artifacts/browser/package/build | |
e2e-browser-browserstack: | |
if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed: https://qiita.com/abetomo/items/d9ede7dbeeb24f723fc5#%E8%A8%AD%E5%AE%9A%E4%BE%8B4 | |
needs: [build-browser] | |
permissions: | |
contents: read | |
runs-on: ubuntu-latest | |
steps: | |
- name: 'BrowserStack Env Setup' | |
uses: browserstack/github-actions/setup-env@master | |
with: | |
username: ${{ secrets.BROWSERSTACK_USERNAME }} | |
access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} | |
- name: 'BrowserStack Local Tunnel Setup' | |
uses: browserstack/github-actions/setup-local@master | |
with: | |
local-testing: start | |
local-identifier: random | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Enable Corepack | |
run: corepack enable | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
- name: Set up the e2e-tests environment | |
run: yarn install | |
working-directory: packages/browser/e2e-tests | |
- run: mkdir -p ${{ runner.temp }}/artifacts/browser | |
- uses: actions/download-artifact@v4 | |
with: | |
name: stlite-browser | |
path: ${{ runner.temp }}/artifacts/browser | |
- run: tar xzvf package.tgz | |
working-directory: ${{ runner.temp }}/artifacts/browser | |
- name: Run the e2e-tests | |
run: yarn test:browserstack | |
working-directory: packages/browser/e2e-tests | |
env: | |
BUILD_DIR: ${{ runner.temp }}/artifacts/browser/package/build | |
- name: 'BrowserStackLocal Stop' | |
uses: browserstack/github-actions/setup-local@master | |
with: | |
local-testing: stop | |
e2e-desktop: | |
if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed: https://qiita.com/abetomo/items/d9ede7dbeeb24f723fc5#%E8%A8%AD%E5%AE%9A%E4%BE%8B4 | |
needs: [build-desktop] | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
permissions: | |
contents: read | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: ${{ env.node-version-file }} | |
- run: cp -r packages/desktop/samples/basic ${{ runner.temp }}/sample_app | |
- name: Download artifact into the temp dir | |
uses: actions/download-artifact@v4 | |
with: | |
name: stlite-desktop | |
path: ${{ runner.temp }}/sample_app | |
- name: Install the tarball | |
run: | | |
npm install file:package.tgz | |
working-directory: ${{ runner.temp }}/sample_app | |
- run: npm run dump | |
working-directory: ${{ runner.temp }}/sample_app | |
# TODO: Run `yarn serve` and check if the app doesn't show any error. | |
- name: Check if electron-builder works | |
run: npm run app:dir | |
working-directory: ${{ runner.temp }}/sample_app |