Skip to content

ci: pin and bump GH actions#1596

Merged
wochinge merged 2 commits intomainfrom
tobias/lfe-9077-pin-python-sdk
Mar 31, 2026
Merged

ci: pin and bump GH actions#1596
wochinge merged 2 commits intomainfrom
tobias/lfe-9077-pin-python-sdk

Conversation

@wochinge
Copy link
Copy Markdown
Contributor

@wochinge wochinge commented Mar 31, 2026

Proposed Changes

  • pin GH actions to immutable SHA (to avoid supply chain attacks)
  • bump versions of GH actions to their latest

Disclaimer: Experimental PR review

Greptile Summary

This PR improves supply chain security by pinning all GitHub Actions to immutable SHA commits and bumping several actions to newer major versions. The approach is sound and covers all 7 workflow files. However, one of the version bumps introduces a breaking change that wasn't accounted for in the configuration.

Key changes:

  • All actions pinned to full commit SHAs to prevent tag mutation attacks
  • actions/checkout: v3 → v6 (in ci.yml), v4 SHA-pinned in release.yml/codeql.yml
  • astral-sh/setup-uv: v7 → v8
  • actions/cache: v3 → v5
  • actions/setup-python: v2 → v6
  • dependabot/fetch-metadata: v1 → v3
  • slackapi/slack-github-action: v1.26.0 → v3 (breaking configuration required)
  • pnpm/action-setup, softprops/action-gh-release, actions/github-script, others: SHA-pinned at current versions

Issue found:

  • The slackapi/slack-github-action bump from v1.26.0 to v3 has documented breaking changes for the incoming webhook technique used here. In v3, webhook-type and webhook must be provided as step with: inputs — the v1-style SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK env var is no longer supported. Both Slack notification steps in release.yml need to be migrated to the v3 input syntax before this will work correctly.

Confidence Score: 4/5

Safe to merge after fixing the Slack action configuration in release.yml; CI and CodeQL workflows are unaffected but Slack release notifications will fail as-is.

One P1 issue: the slackapi/slack-github-action bump to v3 breaks Slack notifications because the v1-style SLACK_WEBHOOK_TYPE env var is no longer supported — webhook-type and webhook must now be step inputs. All other action bumps look correct with no API-breaking changes. The inconsistent checkout versions (v6 in ci.yml vs v4 in release.yml/codeql.yml) is P2.

.github/workflows/release.yml — both Slack notification steps need migration to v3 input syntax

Important Files Changed

Filename Overview
.github/workflows/release.yml SHA-pins actions/checkout (v4), astral-sh/setup-uv (v8), softprops/action-gh-release (v2), and slackapi/slack-github-action (v3), but the Slack steps still use the v1-style SLACK_WEBHOOK_TYPE env var which is a breaking change in v3 — Slack notifications will silently fail.
.github/workflows/ci.yml All actions SHA-pinned and bumped; actions/checkout moved to v6 (latest), astral-sh/setup-uv to v8, pnpm/action-setup to v6, actions/cache to v5. Minor inconsistency: uses checkout v6 while release.yml/codeql.yml remain on v4.
.github/workflows/codeql.yml SHA-pinned actions/checkout (v4) and github/codeql-action/init + analyze (v3); no breaking changes, stays on v4 checkout inconsistently with ci.yml.
.github/workflows/dependabot-merge.yml SHA-pins dependabot/fetch-metadata, bumped from v1 to v3; output names (update-type) are unchanged between versions, no breaking impact.
.github/workflows/dependabot-rebase-stale.yml SHA-pins orange-buffalo/dependabot-auto-rebase at the same v1 tag; no version bump, no API changes.
.github/workflows/package-availability-check.yml SHA-pins actions/setup-python, bumped from v2 to v6; no breaking changes for the simple Python setup usage here.
.github/workflows/claude-review-maintainer-prs.yml SHA-pins actions/github-script at v7 (same major version, just pinned); no breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[GH Action Reference] --> B{Pinning Strategy}
    B --> C[SHA-pinned ✅]
    C --> D[actions/checkout v6\nde0fac2e - ci.yml]
    C --> E[actions/checkout v4\n34e114876b - release/codeql]
    C --> F[astral-sh/setup-uv v8\ncec208311d]
    C --> G[slackapi/slack-github-action v3\naf78098f]
    C --> H[Other actions\nSHA-pinned at current ver]
    G --> I{v3 config compatible?}
    I -->|No ❌| J["SLACK_WEBHOOK_TYPE env var\nno longer supported in v3\n\nNeeds:\nwith:\n  webhook: secrets.SLACK_WEBHOOK_URL\n  webhook-type: incoming-webhook"]
    I -->|Expected| K[Slack notifications work]
    D -.->|Inconsistent version| E
Loading

Comments Outside Diff (1)

  1. .github/workflows/release.yml, line 300-383 (link)

    P1 Slack action v3 breaking change: SLACK_WEBHOOK_TYPE env var no longer works

    The action was bumped from v1.26.0 to v3, but the configuration still uses the v1-style SLACK_WEBHOOK_TYPE environment variable. In v3, the webhook type is a required step input (webhook-type: incoming-webhook), not an env var. The v3 migration guide explicitly lists this as a breaking change: "The webhook type must be specified for incoming webhooks" (as a with: input, not env:). The official v3 docs show:

    - name: Post a message in a channel
      uses: slackapi/slack-github-action@v3.0.1
      with:
        webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
        webhook-type: incoming-webhook
        payload: |
          ...

    Both the success and failure notification steps need to be updated. For example, the success step should become:

          - name: Notify Slack on success
            if: success()
            uses: slackapi/slack-github-action@af78098f536edbc4de71162a307590698245be95 # v3
            with:
              webhook: ${{ secrets.SLACK_WEBHOOK_RELEASES }}
              webhook-type: incoming-webhook
              payload: |
                {
                  ...
                }

    The env: block with SLACK_WEBHOOK_URL and SLACK_WEBHOOK_TYPE should be removed entirely for both steps. As-is, Slack notifications will not be sent when the release workflow runs.

Reviews (1): Last reviewed commit: "ci: pin and bump GH actions" | Re-trigger Greptile

@github-actions
Copy link
Copy Markdown

@claude review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0c225fd194

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@wochinge wochinge force-pushed the tobias/lfe-9077-pin-python-sdk branch from 0c225fd to f024c10 Compare March 31, 2026 09:17
@wochinge wochinge force-pushed the tobias/lfe-9077-pin-python-sdk branch from f024c10 to 06f5409 Compare March 31, 2026 09:24
@wochinge
Copy link
Copy Markdown
Contributor Author

@claude review

@wochinge
Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@wochinge wochinge merged commit 0ddf3bc into main Mar 31, 2026
14 checks passed
@wochinge wochinge deleted the tobias/lfe-9077-pin-python-sdk branch March 31, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant