Skip to content

Commit c460708

Browse files
authored
chore: pin third-party GitHub Actions to commit SHAs (#59)
## Summary Pin all third-party GitHub Actions to full-length commit SHAs to prevent supply chain attacks. Addresses findings from the [`third-party-action-not-pinned-to-commit-sha`](https://github.com/launchdarkly/semgrep-rules/blob/main/github-actions/third-party-action-not-pinned-to-commit-sha.yml) Semgrep rule. ## Test plan - [ ] Verify CI passes with pinned action SHAs <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: workflow-only changes that pin action references; main risk is CI/release breakage if a pinned SHA is incorrect or later removed upstream. > > **Overview** > Pins previously tag-based third-party GitHub Actions in `manual-publish.yml` and `release-please.yml` to specific commit SHAs (notably `release-please-action` and `gh-action-pypi-publish`) to reduce GitHub Actions supply-chain risk. > > Adds inline version comments for the pinned actions; no functional build/release logic changes beyond the pinned references. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e4ae025. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
2 parents d086a6a + e4ae025 commit c460708

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

.github/workflows/manual-publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
python-version: 3.9
2323

2424
- name: Install poetry
25-
uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439
25+
uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439 # v3.0.0
2626

2727
- uses: launchdarkly/gh-actions/actions/release-secrets@release-secrets-v1.2.0
2828
name: "Get PyPI token"
@@ -34,6 +34,6 @@ jobs:
3434

3535
- name: Publish package distributions to PyPI
3636
if: ${{ inputs.dry_run == false }}
37-
uses: pypa/gh-action-pypi-publish@release/v1
37+
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1
3838
with:
3939
password: ${{env.PYPI_AUTH_TOKEN}}

.github/workflows/release-please.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
contents: write # Contents and pull-requests are for release-please to make releases.
1414
pull-requests: write
1515
steps:
16-
- uses: googleapis/release-please-action@v4
16+
- uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4
1717
id: release
1818

1919
- uses: actions/checkout@v4
@@ -28,7 +28,7 @@ jobs:
2828

2929
- name: Install poetry
3030
if: ${{ steps.release.outputs.releases_created == 'true' }}
31-
uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439
31+
uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439 # v3.0.0
3232

3333
- uses: launchdarkly/gh-actions/actions/release-secrets@release-secrets-v1.2.0
3434
name: "Get PyPI token"
@@ -45,6 +45,6 @@ jobs:
4545

4646
- name: Publish package distributions to PyPI
4747
if: ${{ steps.release.outputs.releases_created == 'true' }}
48-
uses: pypa/gh-action-pypi-publish@release/v1
48+
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1
4949
with:
5050
password: ${{env.PYPI_AUTH_TOKEN}}

0 commit comments

Comments
 (0)