Chore(deps): Bump the npm_and_yarn group across 7 directories with 12 updates #2351
Workflow file for this run
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"] | |
| 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) }} | |
| permissions: {} | |
| jobs: | |
| set-build-info: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| branch: ${{ steps.build-info.outputs.branch }} | |
| 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 "${{ 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 "${{ 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 "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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: build-info | |
| path: | | |
| branch | |
| head-sha | |
| trigger-sha | |
| pr-number | |
| changesets: | |
| if: ${{ github.event_name == 'push' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| submodules: true | |
| # `fetch-depth: 0` is required to create tags for new releases by Changesets. | |
| fetch-depth: 0 | |
| # `persist-credentials: false` is important not only for security reasons | |
| # but also to ensure that `git push --follow-tags` run by the Changesets action in the later step | |
| # don't use the default GITHUB_TOKEN, which doesn't trigger other workflows such as the release workflow. | |
| # Ref: https://github.com/orgs/community/discussions/26220 | |
| persist-credentials: false | |
| - uses: ./.github/actions/init-all | |
| with: | |
| node-version-file: ".nvmrc" | |
| protoc: false | |
| # Generate a token using a GitHub App that the author owns, whitphx-changesets-bot. | |
| - name: Generate a token | |
| id: generate-token | |
| uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 | |
| with: | |
| app-id: ${{ vars.CHANGESETS_APP_ID }} | |
| private-key: ${{ secrets.CHANGESETS_APP_PRIVATE_KEY }} | |
| permission-contents: write | |
| permission-pull-requests: write | |
| - name: Create Release Pull Request or Tag | |
| id: changesets | |
| uses: changesets/action@63a615b9cd06ba9a3e6d13796c7fbcb080a60a0b # v1.8.0 | |
| with: | |
| publish: npm run changeset:release | |
| env: | |
| # PRs created using `GITHUB_TOKEN` doesn't trigger CI workflows, so we need to use a PAT or app token. | |
| # - The PAT should be fine-grained and its permissions are properly configured (R/W for Contents and Pull Requests). | |
| # - The app token should be generated using a GitHub App that has proper permissions (R/W for Contents and Pull Requests). | |
| # Ref: https://github.com/orgs/community/discussions/55906 | |
| GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} | |
| # GITHUB_TOKEN: ${{ secrets.CHANGESETS_PAT }} | |
| - name: Save published packages info | |
| if: steps.changesets.outputs.published == 'true' | |
| run: echo '${{ steps.changesets.outputs.publishedPackages }}' > changesets-published-packages | |
| - name: Upload published packages info | |
| if: steps.changesets.outputs.published == 'true' | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: changesets-published-packages | |
| path: changesets-published-packages | |
| 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. | |
| react: ${{ steps.filter.outputs.react == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
| 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' }} | |
| cli: ${{ steps.filter.outputs.cli == 'true' || steps.filter.outputs.gha == 'true' || env.RUN_ALL_TESTS == 'true' }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1 | |
| 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/**/*' | |
| react: | |
| - 'packages/react/**/*' | |
| browser: | |
| - 'packages/browser/**/*' | |
| sharing: | |
| - 'packages/sharing/**/*' | |
| sharing-editor: | |
| - 'packages/sharing-editor/**/*' | |
| sharing-common: | |
| - 'packages/sharing-common/**/*' | |
| desktop: | |
| - 'packages/desktop/**/*' | |
| - 'packages/app-packager/**/*' | |
| cli: | |
| - 'packages/cli/**/*' | |
| - 'packages/app-packager/**/*' | |
| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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:lint | |
| yarn check:format | |
| - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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:lint | |
| yarn check:format | |
| - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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: 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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:lint | |
| yarn check:format | |
| - run: yarn test | |
| test-react: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.react == 'true' }} | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: packages/react | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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:lint | |
| yarn check:format | |
| - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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:lint | |
| yarn check:format | |
| # - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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:lint | |
| yarn check:format | |
| - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| submodules: true | |
| persist-credentials: false | |
| - uses: ./.github/actions/init-all | |
| with: | |
| node-version-file: ${{ env.node-version-file }} | |
| - name: Lint | |
| run: | | |
| yarn check:lint | |
| yarn check:format | |
| - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| submodules: true | |
| persist-credentials: false | |
| - uses: ./.github/actions/init-all | |
| with: | |
| node-version-file: ${{ env.node-version-file }} | |
| protoc: false | |
| - name: Lint | |
| # Skip on non-Linux because `git checkout` on Windows converts LF -> CRLF | |
| # (autocrlf default) and oxfmt 0.45.0 rejects `endOfLine: "auto"` (only | |
| # `lf`/`crlf`/`cr` are accepted), so `yarn check:format` fails on every | |
| # file. Lint/format correctness is platform-independent, so running on | |
| # ubuntu-latest is sufficient. Revisit if oxfmt adds `"auto"` support. | |
| if: ${{ matrix.os == 'ubuntu-latest' }} | |
| run: | | |
| yarn check:lint | |
| yarn check:format | |
| - run: yarn test | |
| test-cli: | |
| needs: changes | |
| if: ${{ needs.changes.outputs.cli == 'true' }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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 }} | |
| # Generate `_proto/models.py` and `_runtime_version.py` first β pyright | |
| # follows imports through them, and the parity test exec's both bins | |
| # which import them at runtime. The JS bundle (`make cli`) is also | |
| # needed for the parity test, so build it here in one shot. | |
| - name: Build cli + Python proto + Python runtime-version | |
| run: | | |
| . .venv/bin/activate | |
| make cli cli-py-proto cli-py-runtime-version | |
| - name: Lint (TS) | |
| run: | | |
| yarn workspace @stlite/cli check:lint | |
| yarn workspace @stlite/cli check:format | |
| - name: Lint (Python) | |
| run: | | |
| . .venv/bin/activate | |
| uv run --project packages/cli/py ruff check packages/cli/py | |
| uv run --project packages/cli/py ruff format --check packages/cli/py | |
| - name: Pyright (Python) | |
| run: | | |
| . .venv/bin/activate | |
| uv run --project packages/cli/py pyright packages/cli/py | |
| - name: Pytest (Python) | |
| run: | | |
| . .venv/bin/activate | |
| uv run --project packages/cli/py pytest packages/cli/py/tests | |
| - name: Vitest (TS, includes cross-runtime parity) | |
| # vitest auto-detects CI=true and runs once instead of watching, so | |
| # no explicit `--run` flag needed. | |
| run: yarn workspace @stlite/cli 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 | |
| id-token: write | |
| attestations: write | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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: Upload bundle visualizer report (@stlite/browser) | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/browser/stats/browser.html | |
| name: visualizer-browser | |
| if-no-files-found: error | |
| - name: Package | |
| working-directory: packages/browser | |
| run: yarn pack | |
| - name: Upload the built tar ball as an artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/browser/package.tgz | |
| name: stlite-browser | |
| - name: Generate artifact attestation | |
| uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0 | |
| with: | |
| subject-path: packages/browser/package.tgz | |
| # This step may fail when the PR is created by an external contributor and the CI is run in their scope. | |
| # We can ignore such failures because the following jobs such as E2E-testing in the post-build workflow don't necessarily need the attestation, | |
| # while the verification is done when publishing the artifact. | |
| continue-on-error: true | |
| - 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 | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| # 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 | |
| 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 }} | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| - 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 }} | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| build-react: | |
| if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed. | |
| needs: | |
| [ | |
| set-build-info, | |
| test-kernel, | |
| test-stlite-lib, | |
| test-build-common, | |
| test-react, | |
| ] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| pull-requests: write | |
| id-token: write | |
| attestations: write | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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/react | |
| run: | | |
| . .venv/bin/activate | |
| make react | |
| - name: Package | |
| working-directory: packages/react | |
| run: yarn pack | |
| - name: Upload the built tar ball as an artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/react/package.tgz | |
| name: stlite-react | |
| - name: Generate artifact attestation | |
| uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0 | |
| with: | |
| subject-path: packages/react/package.tgz | |
| continue-on-error: true | |
| - name: "Inform the package stats of @stlite/react" | |
| uses: ./.github/actions/set-package-stats | |
| continue-on-error: true | |
| with: | |
| key: react | |
| name: "@stlite/react" | |
| input-path: packages/react/package.tgz | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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 bundle visualizer report (@stlite/sharing) | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/sharing/stats/sharing.html | |
| name: visualizer-sharing | |
| if-no-files-found: error | |
| - name: Upload the built directory as an artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| 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 | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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 bundle visualizer report (@stlite/sharing-editor) | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/sharing-editor/stats/sharing-editor.html | |
| name: visualizer-sharing-editor | |
| if-no-files-found: error | |
| - name: Upload the built directory as an artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| 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 | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| 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 | |
| id-token: write | |
| attestations: write | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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: Upload bundle visualizer report (@stlite/desktop) | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/desktop/stats/desktop.html | |
| name: visualizer-desktop | |
| if-no-files-found: error | |
| - name: Package | |
| working-directory: packages/desktop | |
| run: yarn pack | |
| - name: Upload the built tar ball as an artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/desktop/package.tgz | |
| name: stlite-desktop | |
| - name: Generate artifact attestation | |
| uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0 | |
| with: | |
| subject-path: packages/desktop/package.tgz | |
| # This step may fail when the PR is created by an external contributor and the CI is run in their scope. | |
| # We can ignore such failures because the following jobs such as E2E-testing in the post-build workflow don't necessarily need the attestation, | |
| # while the verification is done when publishing the artifact. | |
| continue-on-error: true | |
| - 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 | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| build-cli: | |
| if: ${{ ! failure() }} # This job should run even if the depending jobs are skipped, but not when those jobs failed. | |
| needs: [set-build-info, test-build-common, test-cli] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| pull-requests: write | |
| id-token: write | |
| attestations: write | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| 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/cli | |
| run: | | |
| . .venv/bin/activate | |
| make cli | |
| - name: Package | |
| working-directory: packages/cli | |
| run: yarn pack | |
| - name: Upload the built tar ball as an artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: packages/cli/package.tgz | |
| name: stlite-cli | |
| - name: Generate artifact attestation | |
| uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0 | |
| with: | |
| subject-path: packages/cli/package.tgz | |
| continue-on-error: true | |
| - name: "Inform the package stats of @stlite/cli" | |
| uses: ./.github/actions/set-package-stats | |
| continue-on-error: true | |
| with: | |
| key: cli | |
| name: "@stlite/cli" | |
| input-path: packages/cli/package.tgz | |
| pr-number: ${{ needs.set-build-info.outputs.pr-number }} | |
| sticky-id: ${{ needs.set-build-info.outputs.head-sha }} | |
| build-docs: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| pull-requests: write | |
| id-token: write | |
| attestations: write | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| submodules: true | |
| persist-credentials: false | |
| - uses: ./.github/actions/init-all | |
| with: | |
| node-version-file: ${{ env.node-version-file }} | |
| - name: Build docs | |
| run: yarn build | |
| working-directory: docs | |
| - name: Upload the built directory as an artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| path: docs/dist | |
| name: stlite-docs | |
| - name: Generate artifact attestation | |
| uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0 | |
| with: | |
| subject-path: docs/dist | |
| continue-on-error: true |