From d69489891db078039721fb02526db2bb26967ac1 Mon Sep 17 00:00:00 2001 From: Mish Ushakov <10400064+mishushakov@users.noreply.github.com> Date: Thu, 6 Aug 2026 17:25:55 +0200 Subject: [PATCH 1/2] ci: pin GitHub Actions to full commit SHAs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every external action in `.github/` is now referenced by a 40-character commit SHA with the release tag as a trailing comment, so a compromised or retagged upstream release cannot silently change what runs in CI. 78 `uses:` refs across 15 files are covered; in-repo `./.github/...` composite-action and reusable-workflow refs are left as tags since they are not a supply-chain surface. Each SHA was resolved from the tag the workflow already floated on and re-verified against the GitHub API, so this is behaviour-preserving. Two exceptions worth calling out: - `pnpm/action-setup@v4` is pinned to v4.3.0, not v4.4.0. Upstream's `v4.4.0` tag points at the same commit as `v5.0.0`, while the floating `v4` tag still resolves to v4.3.0 — pinning to v4.4.0 would silently jump a major. - `actions/checkout@v3` and `actions/create-github-app-token@v1` are pinned at their latest v3/v1 SHAs rather than bumped to v4/v2, keeping this change to pinning alone. Co-Authored-By: Claude Opus 5 (1M context) --- .github/actions/build-cli/action.yml | 4 ++-- .github/workflows/cli_tests.yml | 8 ++++---- .github/workflows/codegen_image_cache.yml | 8 ++++---- .github/workflows/dependabot_changeset.yml | 6 +++--- .github/workflows/generated_files.yml | 18 +++++++++--------- .github/workflows/js_sdk_tests.yml | 14 +++++++------- .github/workflows/lint.yml | 12 ++++++------ .github/workflows/pkg_artifacts.yml | 16 ++++++++-------- .github/workflows/publish_candidates.yml | 10 +++++----- .github/workflows/publish_packages.yml | 14 +++++++------- .github/workflows/python_sdk_tests.yml | 6 +++--- .github/workflows/release.yml | 8 ++++---- .github/workflows/sdk_tests.yml | 2 +- .github/workflows/templates.yml | 8 ++++---- .github/workflows/typecheck.yml | 12 ++++++------ 15 files changed, 73 insertions(+), 73 deletions(-) diff --git a/.github/actions/build-cli/action.yml b/.github/actions/build-cli/action.yml index 0bfa71d203..39a4e2cce4 100644 --- a/.github/actions/build-cli/action.yml +++ b/.github/actions/build-cli/action.yml @@ -15,12 +15,12 @@ runs: prefix: 'tool_version_' - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' cache: pnpm diff --git a/.github/workflows/cli_tests.yml b/.github/workflows/cli_tests.yml index bdea52e9c1..a5c8bb5fc1 100644 --- a/.github/workflows/cli_tests.yml +++ b/.github/workflows/cli_tests.yml @@ -27,22 +27,22 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/codegen_image_cache.yml b/.github/workflows/codegen_image_cache.yml index 0155533b50..1bb8c9e3cb 100644 --- a/.github/workflows/codegen_image_cache.yml +++ b/.github/workflows/codegen_image_cache.yml @@ -22,13 +22,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 - name: Build codegen image and export cache - uses: docker/build-push-action@v6 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: . file: codegen.Dockerfile @@ -36,7 +36,7 @@ jobs: cache-to: type=gha,mode=max - name: Build copybara image and export cache - uses: docker/build-push-action@v6 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: . file: copybara.Dockerfile diff --git a/.github/workflows/dependabot_changeset.yml b/.github/workflows/dependabot_changeset.yml index 71034fd8c9..a48e4c4348 100644 --- a/.github/workflows/dependabot_changeset.yml +++ b/.github/workflows/dependabot_changeset.yml @@ -78,7 +78,7 @@ jobs: # the action only reports metadata for a pull request whose commits are # all Dependabot's. if: steps.filter.outputs.changeset != 'true' - uses: dependabot/fetch-metadata@v2 + uses: dependabot/fetch-metadata@21025c705c08248db411dc16f3619e6b5f9ea21a # v2.5.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} @@ -95,14 +95,14 @@ jobs: # commit and the pull request would be unmergeable. - name: Generate token to push to the pull request branch id: app-token - uses: actions/create-github-app-token@v2 + uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2.2.2 with: app-id: ${{ vars.VERSION_BUMPER_APPID }} private-key: ${{ secrets.VERSION_BUMPER_SECRET }} permission-contents: write - name: Checkout the pull request branch - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: ref: ${{ github.event.pull_request.head.ref }} token: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/generated_files.yml b/.github/workflows/generated_files.yml index 83cb845b52..620d29321b 100644 --- a/.github/workflows/generated_files.yml +++ b/.github/workflows/generated_files.yml @@ -17,7 +17,7 @@ jobs: generated: ${{ steps.filter.outputs.generated }} steps: - name: Filter changed paths - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@0e4a8c6effa4802afeda77dc8d303f8176d7dfad # v3.0.4 id: filter with: # `**/!(*.md)` excludes Markdown so docs-only changes don't trigger codegen checks. @@ -44,23 +44,23 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 id: pnpm-install with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' registry-url: 'https://registry.npmjs.org' @@ -76,10 +76,10 @@ jobs: run: pnpm install --frozen-lockfile - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 - name: Build codegen image with caching - uses: docker/build-push-action@v6 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: . file: codegen.Dockerfile @@ -91,7 +91,7 @@ jobs: cache-from: type=gha - name: Build copybara image with caching - uses: docker/build-push-action@v6 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: . file: copybara.Dockerfile @@ -112,7 +112,7 @@ jobs: - name: Generate token for spec repos id: spec-repos-token if: github.event.pull_request.head.repo.full_name == github.repository - uses: actions/create-github-app-token@v2 + uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2.2.2 with: app-id: ${{ vars.AUTOFIXER_APP_ID }} private-key: ${{ secrets.AUTOFIXER_APP_SECRET }} diff --git a/.github/workflows/js_sdk_tests.yml b/.github/workflows/js_sdk_tests.yml index 5d718ace66..a54f151cbc 100644 --- a/.github/workflows/js_sdk_tests.yml +++ b/.github/workflows/js_sdk_tests.yml @@ -50,23 +50,23 @@ jobs: continue-on-error: ${{ matrix.runtime == 'cloudflare-deploy' }} steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 id: pnpm-install with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' registry-url: 'https://registry.npmjs.org' @@ -91,7 +91,7 @@ jobs: - name: Cache Playwright browsers if: matrix.runtime == 'node' - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ matrix.os == 'windows-latest' && '~/AppData/Local/ms-playwright' || '~/.cache/ms-playwright' }} key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} @@ -110,7 +110,7 @@ jobs: - name: Install Bun if: matrix.runtime == 'bun' - uses: oven-sh/setup-bun@v2 + uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 - name: Run test suite under Bun if: matrix.runtime == 'bun' @@ -121,7 +121,7 @@ jobs: - name: Install Deno if: matrix.runtime == 'deno' - uses: denoland/setup-deno@v2 + uses: denoland/setup-deno@22d081ff2d3a40755e97629de92e3bcbfa7cf2ed # v2.0.5 with: deno-version: v${{ env.TOOL_VERSION_DENO }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 06e8c1e355..2a8c6530ab 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -16,7 +16,7 @@ jobs: code: ${{ steps.filter.outputs.code }} steps: - name: Filter changed paths - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@0e4a8c6effa4802afeda77dc8d303f8176d7dfad # v3.0.4 id: filter with: # `**/!(*.md)` excludes Markdown so docs-only changes don't trigger linting. @@ -42,21 +42,21 @@ jobs: steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' cache: pnpm @@ -70,7 +70,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 with: version: '${{ env.TOOL_VERSION_UV }}' python-version: '${{ env.TOOL_VERSION_PYTHON }}' diff --git a/.github/workflows/pkg_artifacts.yml b/.github/workflows/pkg_artifacts.yml index c59b4dfb67..ea953011f3 100644 --- a/.github/workflows/pkg_artifacts.yml +++ b/.github/workflows/pkg_artifacts.yml @@ -15,21 +15,21 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' cache: pnpm @@ -66,7 +66,7 @@ jobs: pnpm pack - name: Upload CLI artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: e2b-cli path: packages/cli/*.tgz @@ -82,13 +82,13 @@ jobs: - name: Upload JS SDK artifact if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: e2b-js-sdk path: packages/js-sdk/*.tgz - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 with: version: '${{ env.TOOL_VERSION_UV }}' python-version: '${{ env.TOOL_VERSION_PYTHON }}' @@ -102,7 +102,7 @@ jobs: uv build - name: Upload Python SDK artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: e2b-python-sdk path: packages/python-sdk/dist/* diff --git a/.github/workflows/publish_candidates.yml b/.github/workflows/publish_candidates.yml index f3d3608d4c..53b847f08d 100644 --- a/.github/workflows/publish_candidates.yml +++ b/.github/workflows/publish_candidates.yml @@ -32,22 +32,22 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 if: ${{ inputs.js-sdk || inputs.cli }} with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 if: ${{ inputs.js-sdk || inputs.cli }} with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' @@ -67,7 +67,7 @@ jobs: npm --version - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 if: ${{ inputs.python-sdk }} with: version: '${{ env.TOOL_VERSION_UV }}' diff --git a/.github/workflows/publish_packages.yml b/.github/workflows/publish_packages.yml index 84a3d0ff83..cf0bdd7865 100644 --- a/.github/workflows/publish_packages.yml +++ b/.github/workflows/publish_packages.yml @@ -17,37 +17,37 @@ jobs: name: Build and test SDK runs-on: ubuntu-22.04 steps: - - uses: actions/create-github-app-token@v1 + - uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 id: app-token with: app-id: ${{ vars.VERSION_BUMPER_APPID }} private-key: ${{ secrets.VERSION_BUMPER_SECRET }} - name: Checkout Repo - uses: actions/checkout@v3 + uses: actions/checkout@a37ce9120846195fa4ece8f58b268e6043cb2f26 # v3.7.0 with: token: ${{ steps.app-token.outputs.token }} - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 with: version: '${{ env.TOOL_VERSION_UV }}' python-version: '${{ env.TOOL_VERSION_PYTHON }}' enable-cache: true - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' registry-url: 'https://registry.npmjs.org' @@ -94,7 +94,7 @@ jobs: - name: Release new versions id: release - uses: changesets/action@v1 + uses: changesets/action@a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d # v1.9.0 with: publish: pnpm run publish createGithubReleases: true diff --git a/.github/workflows/python_sdk_tests.yml b/.github/workflows/python_sdk_tests.yml index dab4506c2d..741d24246b 100644 --- a/.github/workflows/python_sdk_tests.yml +++ b/.github/workflows/python_sdk_tests.yml @@ -28,17 +28,17 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 with: version: '${{ env.TOOL_VERSION_UV }}' python-version: '${{ env.TOOL_VERSION_PYTHON }}' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a35b8384a1..f824976c69 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,23 +22,23 @@ jobs: itinerary: ${{ steps.itinerary.outputs.itinerary }} steps: - name: Checkout Repo - uses: actions/checkout@v3 + uses: actions/checkout@a37ce9120846195fa4ece8f58b268e6043cb2f26 # v3.7.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 id: pnpm-install with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/sdk_tests.yml b/.github/workflows/sdk_tests.yml index f342f58366..8e488c25c9 100644 --- a/.github/workflows/sdk_tests.yml +++ b/.github/workflows/sdk_tests.yml @@ -26,7 +26,7 @@ jobs: # back to git (failing without a checkout); the job-level `if`s below # force a full run for that event instead, so we only filter on pull_request. if: github.event_name == 'pull_request' - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@0e4a8c6effa4802afeda77dc8d303f8176d7dfad # v3.0.4 id: filter with: # `**/!(*.md)` excludes Markdown so docs-only changes don't trigger the suites. diff --git a/.github/workflows/templates.yml b/.github/workflows/templates.yml index 144c115bce..f5cb0aea65 100644 --- a/.github/workflows/templates.yml +++ b/.github/workflows/templates.yml @@ -28,13 +28,13 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@a37ce9120846195fa4ece8f58b268e6043cb2f26 # v3.7.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 - name: Log in to DockerHub - uses: docker/login-action@v3 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} @@ -52,7 +52,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Build and install E2B CLI uses: ./.github/actions/build-cli diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml index 4ae251189d..e17126ad64 100644 --- a/.github/workflows/typecheck.yml +++ b/.github/workflows/typecheck.yml @@ -14,7 +14,7 @@ jobs: code: ${{ steps.filter.outputs.code }} steps: - name: Filter changed paths - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@0e4a8c6effa4802afeda77dc8d303f8176d7dfad # v3.0.4 id: filter with: # `**/!(*.md)` excludes Markdown so docs-only changes don't trigger typecheck. @@ -38,21 +38,21 @@ jobs: steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Parse .tool-versions - uses: wistia/parse-tool-versions@v2.1.1 + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 with: filename: '.tool-versions' uppercase: 'true' prefix: 'tool_version_' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: version: '${{ env.TOOL_VERSION_PNPM }}' - name: Setup Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: '${{ env.TOOL_VERSION_NODEJS }}' cache: pnpm @@ -66,7 +66,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 with: version: '${{ env.TOOL_VERSION_UV }}' python-version: '${{ env.TOOL_VERSION_PYTHON }}' From acef3360212797da0de4f8f3194406c2a24b242b Mon Sep 17 00:00:00 2001 From: Mish Ushakov <10400064+mishushakov@users.noreply.github.com> Date: Thu, 6 Aug 2026 19:55:58 +0200 Subject: [PATCH 2/2] ci: unify the dorny/paths-filter pin on v3.0.4 The Dependabot changeset workflow was the one place already pinned, at v3.0.4's predecessor v3.0.3, leaving the repository with two SHAs for the same action. Move it to v3.0.4 to match every other workflow. Its comment justified the pin as being "rather than floating on `v3`", which no longer distinguishes it now that every action is pinned; the note about the `pull_request_target` trigger is the part still worth keeping, so it is rewritten to say why that makes this pin more sensitive than most. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/dependabot_changeset.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dependabot_changeset.yml b/.github/workflows/dependabot_changeset.yml index a48e4c4348..2d9dd3a22e 100644 --- a/.github/workflows/dependabot_changeset.yml +++ b/.github/workflows/dependabot_changeset.yml @@ -54,9 +54,9 @@ jobs: steps.metadata.outputs.dependency-names, steps.metadata.outputs.new-version) }} steps: - name: Filter changed paths - # Pinned rather than floating on `v3`: this is the one third-party - # action reached by a `pull_request_target` trigger. - uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590 # v3.0.3 + # Reached by a `pull_request_target` trigger, so this action sees a + # privileged token — scrutinise any bump here more closely than most. + uses: dorny/paths-filter@0e4a8c6effa4802afeda77dc8d303f8176d7dfad # v3.0.4 id: filter with: # Dependabot edits the manifest of every workspace package it updates,