Skip to content

ci: fix forked PR checkout & harden pull_request_target#11

Merged
keerthi-go merged 1 commit intoqualcomm-linux:mainfrom
bjordiscollaku:ci/fork-pr-checkout-hardening
Mar 26, 2026
Merged

ci: fix forked PR checkout & harden pull_request_target#11
keerthi-go merged 1 commit intoqualcomm-linux:mainfrom
bjordiscollaku:ci/fork-pr-checkout-hardening

Conversation

@bjordiscollaku
Copy link
Contributor

This change makes the container build workflow fork-safe and reduces risk on pull_request_target. For PRs, the job now checks out the fork’s exact head commit using the event payload and disables credential persistence; for trusted events (push, schedule, workflow_dispatch), it uses the default checkout. The build step is split so PR validations never receive secrets or push to GHCR, while trusted events continue to publish images. Also cleans a stray token username line.

  • PRs: checkout via head.repo + head.sha, persist-credentials: false, build only (no push, no secrets).
  • Trusted events: standard checkout, build and push to GHCR with credentials.
  • No behavioral change for non‑PR paths; forked PRs now build reliably against contributor code.

- Replace `ref: ${{ github.head_ref }}` with a fork-safe checkout using:
  `repository: ${{ github.event.pull_request.head.repo.full_name }}`
  `ref: ${{ github.event.pull_request.head.sha }}`
  `persist-credentials: false`
- Keep default checkout for push/schedule/workflow_dispatch
- Split build step so PRs never receive secrets or push to GHCR
- Remove stray text after `username:` input

Rationale:
- `github.head_ref` assumes the branch exists in the base repo; for forked PRs, it points to a non-existent branch or the wrong repo.
- `pull_request_target` runs with base-repo context; avoiding persisted Git credentials and withholding secrets prevents token/secrets exposure.
- Ensures PR validation builds against the contributor’s Dockerfiles while only publishing images on trusted events.

Affected file:
- .github/workflows/qcom-container-build-and-upload.yml

Signed-off-by: Bjordis Collaku <bcollaku@qti.qualcomm.com>
@keerthi-go keerthi-go merged commit e16539c into qualcomm-linux:main Mar 26, 2026
6 of 7 checks passed
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.

2 participants