v0.49.0
·
70 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Pipelines as Code version v0.49.0
Tekton Pipelines as Code v0.49.0 has been released 🥳
✨ Major changes and Features
- Automatic GitLab access token rotation: When enabled, tokens approaching expiration (within 7 days) are automatically rotated by requesting a new token from the GitLab API and updating the Kubernetes Secret. Opt-in via
spec.settings.gitlab.token_auto_rotation: trueon the Repository CR or globally via the global Repository CR.- Link: #2820
- Jira: SRVKP-11153
- Forgejo CLI webhook setup: Added Forgejo support to
tkn pac create repoandtkn pac webhook add, creating repository webhooks with the vendored Forgejo SDK for push, pull_request, and issue_comment events.- Link: #2764
- Bitbucket Data Center service account support: Removed the requirement to configure a user when using HTTP scoped tokens from project and repository scopes, allowing direct use of scoped token context for authentication.
- Link: #2726
- Forgejo org team caching in policy check: Cache ListOrgTeams API responses per organization to avoid redundant API calls when checking policy for the same org across multiple allowed teams evaluations.
- Link: #2775
- Bitbucket Cloud API token authentication: Switched Bitbucket Cloud authentication from app-passwords to scoped API tokens for improved security. CLI now prompts for Atlassian account email and uses
x-token-authusername for git clone credentials.- Link: #2819
- Jira: SRVKP-12685
- Direct OTel SDK tracing setup: Switched tracing from Knative's
config-observabilityto the OTel SDK directly, enablingparentbased_*samplers viaOTEL_TRACES_SAMPLERso the whole trace chain is kept or dropped together.- Link: #2756
🐛 Bug Fixes
- Fix reconciler shared state race: Removed per-reconciliation state (
globalRepo,secretNS) from the shared controller struct, preventing concurrent reconciliations from overwriting each other's namespace decisions.- Link: #2825
- Fix GitLab label removal triggering pipelines: Label removal events on GitLab merge requests were incorrectly triggering pipeline runs. Changed to compare current vs previous label count so only label additions are processed.
- Link: #2785
- Fix AI analysis for successful pipeline runs: Default AI/LLM roles without an
on_celexpression now run for completed PipelineRuns regardless of success or failure, not just failed runs.- Link: #2810
- Downgrade 404 API responses to debug log level: Missing-file 404 responses (e.g., missing OWNERS file) are now logged at debug level instead of error, keeping controller logs clean.
- Link: #2776
- Enhance cancel-in-progress log message: Added a reason in the log message explaining why a PipelineRun is cancelled to make it clearer to users.
- Link: #2791
- Fix error wrapping in DetectPacInstallation: Use
%winstead of%sfor error wrapping to preserve the error chain forerrors.Is/errors.As.- Link: #2767
- Security: upgrade Go stdlib to go1.26.4: Fixes 23 Go standard library CVEs including XSS, DoS, and TLS issues.
- Link: #2788
- Security: upgrade golang.org/x/net to v0.55.0: Fixes 6 CVEs in HTML parsing and DNS handling.
- Link: #2784
- Security: upgrade golang.org/x/crypto to v0.52.0: Fixes 13 critical SSH-related CVEs.
- Link: #2783
- Security: upgrade tektoncd/pipeline to v1.14.0: Fixes CVE-2026-33022 (controller panic via long resolver name).
- Link: #2816
- Jira: SRVKP-11100
📚 Documentation Updates
- Clarify task resolution in pipeline documentation: Document the difference between PAC remote task annotations and native Tekton resolver syntax, preventing
taskRef.name+taskRef.resolverconflicts.- Link: #2815
- Document required custom console settings: Added notes clarifying that
custom-console-url-pr-details,custom-console-url-namespace, andcustom-console-url-pr-tasklogmust all be configured whencustom-console-urlis set.- Link: #2781
- Add validation failure note to GitLab comment strategy: Clarify that
comment_strategy: "disable_all"only applies to PipelineRun status comments; validation failure comments are always posted.- Link: #2793
- Update Homebrew installation instructions: Document Homebrew tap trust requirement for 5.2+ and macOS Gatekeeper quarantine attribute workaround.
- Link: #2794
⚙️ Chores
- Bump tektoncd/pipeline to v1.13.1: Co-upgrades cel-go, go-scm, otel, zap, k8s.io, and grpc dependencies.
- Link: #2795
- Jira: SRVKP-9042
- Add Codecov OIDC upload: Moved unit coverage publishing to a dedicated GitHub Actions workflow using Codecov OIDC.
- Link: #2817
- Jira: SRVKP-12311
- Use official ArtifactHub StepActions for git-clone: Replace the vendored git-clone StepAction with a reference to the upstream tektoncd catalog via the hub resolver.
- Link: #2767
- Bump actions/checkout from 6.0.2 to 7.0.0: Updated CI checkout action across two dependency bump PRs.
- Link: #2792
- Bump actions/setup-go from 6.4.0 to 6.5.0: Updated CI Go setup action.
- Link: #2805
- Bump actions/cache from 5.0.5 to 6.1.0: Updated CI cache action.
- Link: #2804
- Bump ko-build/setup-ko from 0.9 to 0.10: Updated ko setup action.
- Link: #2806
- Configure Dependabot to group GitHub Actions updates: Group all GitHub Actions dependency updates into a single weekly PR.
- Link: #2809
- Enforce gofumpt formatting check in lint pipeline: Added
lint-fmtMakefile target and CI step to verify Go formatting with gofumpt.- Link: #2823
- Remove testrr test reporting: Removed unused testrr integration, upload script, and CI environment variables.
- Link: #2833
- Reformat code with fumpt: Code reformatted for consistency with Go formatting standards.
- Link: #2822
- CI fixes: Multiple CI/CD fixes including gosmee TLS verification, e2e workflow triggers, fork PR checkout, YAML document markers, and vale linting.
- Link: #2766
- Add Gitea parse_payload unit tests: Table-driven tests for pull request, push, and error paths.
- Link: #2787
Installation
To install this version you can install the release.yaml with kubectl for your platform :
Openshift
kubectl apply -f https://github.com/tektoncd/pipelines-as-code/releases/download/v0.49.0/release.yamlKubernetes
kubectl apply -f https://github.com/tektoncd/pipelines-as-code/releases/download/v0.49.0/release.k8s.yamlDocumentation
The documentation for this release is available here :
https://docs.pipelinesascode.com/v0.49.0
Changelog
- 181a27f: chore(ci): allow e2e workflow run hack/* changes (@zakisk)
- 1f045c6: chore(deps): bump actions/cache from 5.0.5 to 6.1.0 (@dependabot[bot])
- 5bee3b7: chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 (@dependabot[bot])
- 6554d32: chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 (@dependabot[bot])
- aa46286: chore(deps): bump actions/setup-go from 6.4.0 to 6.5.0 (@dependabot[bot])
- 0a781db: chore(deps): bump ko-build/setup-ko from 0.9 to 0.10 (@dependabot[bot])
- 0d39d0d: chore(deps): bump tektoncd/pipeline to v1.13.1 (@theakshaypant)
- 85f323a: chore(release-notes): update org and branding refs (@theakshaypant)
- 74939ef: chore: Configure Dependabot to group GitHub Actions updates (@chmouel)
- 03cd060: chore: Enforce Go code formatting checks in lint pipeline (@chmouel)
- 7bd2cc1: chore: Remove testrr test reporting from the CI environment (@chmouel)
- 1c0fabc: chore: Use git-clone artifacthub stepactions (@chmouel)
- d8966a5: chore: reformat code with fumpt (@chmouel)
- ce4774d: chore: stick gosmee version to v0.31.0 (@zakisk)
- ccba1d5: chore: use commit sha to prevent permalint lint error (@zakisk)
- 8fdee04: ci: add codecov oidc upload (@chmouel)
- cc818de: docs(consoleui): document required custom console settings (@theakshaypant)
- cbd582d: feat(bitbucketdatacenter): allow service accounts to not require user in the set client (@Ru13en)
- 8284302: feat(forgejo): cache org teams in policy check (@theakshaypant)
- 1433ee8: feat(webhook): add Forgejo CLI setup (@SecKatie)
- e0badfa: feat: Implement automatic GitLab access rotation (@chmouel)
- 2f765bc: fix(ci): allow checkout of fork PR code in pull_request_target workflow (@zakisk)
- 3180f7c: fix(ci): linting issue after new release (@zakisk)
- f9c939d: fix(ci): remove --insecure-skip-tls-verify flag from gosmee client (@zakisk)
- fe709ae: fix(ci): restore --insecure-skip-tls-verify and unpin gosmee version (@zakisk)
- e8ac13d: fix(ci): separate collected resources with YAML document markers (@zakisk)
- 70faf9f: fix(ci): skip TLS verification for gosmee client in e2e tests (@zakisk)
- 8a7f213: fix(cve): CVE-2026-33022 - upgrade tektoncd/pipeline v1.13.1 → v1.14.0 (@theakshaypant)
- a6035f7: fix(cve): upgrade Go stdlib to go1.25.11 to fix 16 CVEs (@theakshaypant)
- 52fd4ae: fix(cve): upgrade golang.org/x/crypto v0.50.0 → v0.52.0 to fix 13 CVEs (@theakshaypant)
- f06dcf5: fix(cve): upgrade golang.org/x/net v0.53.0 → v0.55.0 to fix 6 CVEs (@theakshaypant)
- e30e597: fix(gitlab): discard label removal events on merge requests (@zakisk)
- ffc5092: fix(llm): run default AI roles on completed PipelineRuns (@BoseKarthikeyan)
- 27ac5d7: fix(reconciler): avoid shared state (@chmouel)
- c38b028: fix(security): upgrade Go from 1.25.11 to 1.26.4 to fix 23 stdlib CVEs (@theakshaypant)
- 4d2cde6: fix(tracing): direct OTel SDK setup for chain-coherent sampling (@ci-operator)
- 20a29a9: fix(tracing): use String instead of deprecated Emit (@theakshaypant)
- 6dfcd60: fix: bitbucket API tokens instead of app-passwords (@chmouel)
- e1a2f48: fix: downgrade 404 API responses from error to debug log level (@KMI1011)
- aeb85ab: fix: use %w instead of %s for error wrapping in DetectPacInstallation (@chmouel)
- fff1dac: fix: use revision instead of origin/main for nightly branch checkout (@chmouel)
- 3dcf4ae: refactor: enhance log message for cancel-in-progress (@zakisk)
- 9fb79c7: test(gitea): add unit tests for parse_payload (@kshitizj03)