Skip to content

Replace SendGrid with Gmail OAuth for release announcements#4268

Merged
k8s-ci-robot merged 1 commit intokubernetes:masterfrom
saschagrunert:gmail-oauth-announce
Feb 12, 2026
Merged

Replace SendGrid with Gmail OAuth for release announcements#4268
k8s-ci-robot merged 1 commit intokubernetes:masterfrom
saschagrunert:gmail-oauth-announce

Conversation

@saschagrunert
Copy link
Member

What type of PR is this?

/kind feature
/kind cleanup

What this PR does / why we need it:

Replaces the SendGrid email integration with Gmail API using Google OAuth
for sending release announcements via krel announce send. SendGrid has
become unreliable (emails not delivered, accounts deactivated after
inactivity). The Gmail OAuth flow requires no setup — a browser opens for
authorization on each run using embedded OAuth credentials from the
k8s-release GCP project.

Which issue(s) this PR fixes:

Fixes #3360

Special notes for your reviewer:

  • The embedded OAuth client ID and secret are not secrets per
    Google's documentation
    for "Desktop app" type OAuth clients. They only identify the application.
    User security is provided by the interactive consent flow.
  • The OAuth app is managed in the
    k8s-release
    Google Cloud project.
  • --no-browser flag supports headless environments (prints URL, user
    pastes redirect URL back).
  • An EmailSender interface is introduced so SMTP support can be added
    later.

Does this PR introduce a user-facing change?

Replace SendGrid with Gmail OAuth for `krel announce send`. No setup
required — a browser opens for Google authorization on each run.
Use `--no-browser` for headless environments.

Remove SendGrid dependency and use Gmail API with embedded OAuth
credentials from the k8s-release GCP project. No setup required —
a browser opens for authorization on each run. Use --no-browser
for headless environments.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
@k8s-ci-robot k8s-ci-robot added release-note Denotes a PR that will be considered when it comes time to generate release notes. kind/feature Categorizes issue or PR as related to a new feature. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. needs-priority labels Feb 11, 2026
@k8s-ci-robot k8s-ci-robot added area/release-eng Issues or PRs related to the Release Engineering subproject sig/release Categorizes an issue or PR as relevant to SIG Release. approved Indicates a PR has been approved by an approver from all required OWNERS files. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Feb 11, 2026
@saschagrunert
Copy link
Member Author

/hold
/retest

for testing and approval.

PTAL @kubernetes/release-engineering

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Feb 11, 2026
@saschagrunert
Copy link
Member Author

/retest

@saschagrunert
Copy link
Member Author

/unhold

It works: https://groups.google.com/g/kubernetes-announce-test/c/ewnLd_BMY0s 🥳

I published the app in the Google Cloud console for k8s-release, so no further action should be required from our side if no automation disables the API: https://console.cloud.google.com/auth/audience?project=k8s-release

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Feb 12, 2026
Copy link
Member

@cpanato cpanato left a comment

Choose a reason for hiding this comment

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

thanks!

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 12, 2026
Copy link
Member

@xmudrii xmudrii left a comment

Choose a reason for hiding this comment

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

/lgtm
/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: cpanato, saschagrunert, xmudrii

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:
  • OWNERS [cpanato,saschagrunert,xmudrii]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot merged commit 231ca29 into kubernetes:master Feb 12, 2026
11 checks passed
@saschagrunert saschagrunert deleted the gmail-oauth-announce branch February 12, 2026 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/release-eng Issues or PRs related to the Release Engineering subproject cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. kind/feature Categorizes issue or PR as related to a new feature. lgtm "Looks good to me", indicates that a PR is ready to be merged. needs-priority release-note Denotes a PR that will be considered when it comes time to generate release notes. sig/release Categorizes an issue or PR as relevant to SIG Release. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add the ability in krel announce to send emails via Google OAuth for release managers using personal gmail accounts.

4 participants