Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

codespace: Handle HTTP request retry interruption #7846

Merged

Conversation

azrsh
Copy link
Contributor

@azrsh azrsh commented Aug 16, 2023

ref: #7819

About

Fix the problem that the process of changing the error message depending on the cause of the HTTP request failure in ConnectToLiveshare did not work well.

Problem

The current ConnectToLiveshare implementation always shows a timeout error message even if the GitHub API returns a 5XX error. This confuses users.

Changes

The process of changing the error message depending on the cause of the HTTP request failure in ConnectToLiveshare was implemented by determining if the error was wrapped with backoff.PermanentError. However, backoff.Retry unwraps it and returns the unwrapped error. Therefore, it cannot be determined by this method.
https://github.com/cenkalti/backoff/blob/a04a6fe64ffb0e3fd0816460529d300be5f252df/retry.go#L93-L96

In order to be able to determine it, define a new error type TimeoutError that represents a timeout, and use this type to determine the cause of the HTTP request failure.

Behavior

With this change, the error message when a request in ConnectToCodespace function fails with a GitHub API's 5XX error will change as follows:

  • before: failed to connect to Live Share: timed out while waiting for the codespace to start
  • after: failed to connect to Live Share: error getting codespace: error making request: retry

@azrsh azrsh requested a review from a team as a code owner August 16, 2023 18:47
@cliAutomation cliAutomation added the external pull request originating outside of the CLI core team label Aug 16, 2023
@cliAutomation cliAutomation added this to Needs review 🤔 in The GitHub CLI Aug 16, 2023
@samcoe
Copy link
Contributor

samcoe commented Aug 17, 2023

@azrsh Do you have a before and after screenshot of changed error message? From the code I don't see how this changes anything. Additionally, backoff.PermanentError has an Unwrap() method that likely would make it unnecessary to create the new dedicated error type.

@jkeech
Copy link
Contributor

jkeech commented Aug 17, 2023

@samcoe The issue seems to be that the PermanentError is unwrapped inside the retry library before returning, so when the retry finishes, we don't have the context on whether it was a permanent error or not.

https://github.com/cenkalti/backoff/blob/v4/retry.go#L95

I wonder if we can solve this a different way without having to wrap the error in an additional layer though. For instance, instead of assuming everything is a timeout unless we know otherwise, can we invert that logic and look specifically for an error that indicates a timeout (DeadlineExceeded?) to give that nicer timed out while waiting for the codespace to start error message, and then for all other error messages just return the err directly? That way we don't need to check for any sort of PermanentError.

@azrsh
Copy link
Contributor Author

azrsh commented Aug 17, 2023

@\samcoe The issue seems to be that the PermanentError is unwrapped inside the retry library before returning, so when the retry finishes, we don't have the context on whether it was a permanent error or not.

https://github.com/cenkalti/backoff/blob/v4/retry.go#L95

Thanks for the supplement. exactly.

I wonder if we can solve this a different way without having to wrap the error in an additional layer though. For instance, instead of assuming everything is a timeout unless we know otherwise, can we invert that logic and look specifically for an error that indicates a timeout (DeadlineExceeded?) to give that nicer timed out while waiting for the codespace to start error message, and then for all other error messages just return the err directly? That way we don't need to check for any sort of PermanentError.

I didn't come up with a way to do that. They certainly seem to be better.

I've scoured the codebase and it looks like there are existing similar examples. Let's define a new error type representing a timeout in the codespace package to match the name of the structure in this code.

type TimeoutError struct {
message string
}
func (e *TimeoutError) Error() string {
return e.message
}
// Set secret in keyring for user.
func Set(service, user, secret string) error {
ch := make(chan error, 1)
go func() {
defer close(ch)
ch <- keyring.Set(service, user, secret)
}()
select {
case err := <-ch:
return err
case <-time.After(3 * time.Second):
return &TimeoutError{"timeout while trying to set secret in keyring"}
}
}

(This time, I won't go as far as standardizing error types that represents timeouts, but if you want, let me know!)

Copy link
Contributor

@jkeech jkeech left a comment

Choose a reason for hiding this comment

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

Thanks for making the suggested changes! The only other suggestion I would have is to consider updating https://github.com/cli/cli/blob/trunk/internal/codespaces/api/api.go#L1162 to include the HTTP status code that caused the internal retry, that way it gets bubbled up in the final error message that the user sees.

Instead of the user seeing failed to connect to Live Share: error getting codespace: error making request: retry, I think it would be nicer if they see something like failed to connect to Live Share: error getting codespace: error making request: received response with status code 500.

@azrsh
Copy link
Contributor Author

azrsh commented Aug 17, 2023

Do you have a before and after screenshot of changed error message? From the code I don't see how this changes anything.

Added the change error message before and after to the description. Also updated the description with acd3566.

@azrsh
Copy link
Contributor Author

azrsh commented Aug 17, 2023

Thanks for making the suggested changes! The only other suggestion I would have is to consider updating https://github.com/cli/cli/blob/trunk/internal/codespaces/api/api.go#L1162 to include the HTTP status code that caused the internal retry, that way it gets bubbled up in the final error message that the user sees.

Thanks, I think it's a good idea. I accept suggestions and create changes!

@azrsh azrsh requested a review from jkeech August 17, 2023 21:24
Copy link
Contributor

@jkeech jkeech left a comment

Choose a reason for hiding this comment

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

Thanks! The change looks good to me. It would be good to get @samcoe's 👀 as well before merging.

@azrsh azrsh force-pushed the codespace/handle-http-request-retry-interruption branch from 086719f to b273bb6 Compare August 17, 2023 21:51
@azrsh
Copy link
Contributor Author

azrsh commented Aug 17, 2023

Thank you for your reviews, @jkeech !
@samcoe please review! I rebased the commit history and squashed the fixup commit, so if you approve, please merge as is!

Copy link
Contributor

@samcoe samcoe left a comment

Choose a reason for hiding this comment

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

Looks great, @azrsh thanks for the contribution and @jkeech thanks for suggesting a better approach!

@samcoe samcoe merged commit bb42fa0 into cli:trunk Aug 18, 2023
6 checks passed
@azrsh azrsh deleted the codespace/handle-http-request-retry-interruption branch August 21, 2023 07:27
renovate bot added a commit to scottames/dots that referenced this pull request Aug 27, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [aquaproj/aqua-registry](https://togithub.com/aquaproj/aqua-registry)
| minor | `v4.40.0` -> `v4.42.0` |
| [cli/cli](https://togithub.com/cli/cli) | minor | `v2.32.1` ->
`v2.33.0` |
| [fluxcd/flux2](https://togithub.com/fluxcd/flux2) | minor | `v2.0.1`
-> `v2.1.0` |
| [golangci/golangci-lint](https://togithub.com/golangci/golangci-lint)
| patch | `v1.54.1` -> `v1.54.2` |
| [kubernetes/kubectl](https://togithub.com/kubernetes/kubectl) | patch
| `1.28.0` -> `1.28.1` |
| [stern/stern](https://togithub.com/stern/stern) | minor | `v1.25.0` ->
`v1.26.0` |
| [twpayne/chezmoi](https://togithub.com/twpayne/chezmoi) | minor |
`v2.37.0` -> `v2.38.0` |
| [weaveworks/eksctl](https://togithub.com/weaveworks/eksctl) | minor |
`v0.153.0` -> `v0.154.0` |

---

### Release Notes

<details>
<summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary>

###
[`v4.42.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.42.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.41.1...v4.42.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.42.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.42.0)
| aquaproj/aqua-registry@v4.41.1...v4.42.0

#### 🎉 New Packages


[#&#8203;14926](https://togithub.com/aquaproj/aqua-registry/issues/14926)
[exercism/cli](https://togithub.com/exercism/cli): A Go based command
line tool for exercism.org
[@&#8203;sheldonhull](https://togithub.com/sheldonhull)

[#&#8203;14881](https://togithub.com/aquaproj/aqua-registry/issues/14881)
[openziti/zrok](https://togithub.com/openziti/zrok): Geo-scale,
next-generation sharing platform built on top of OpenZiti

#### Fixes


[#&#8203;14928](https://togithub.com/aquaproj/aqua-registry/issues/14928)
gabrie30/ghorg: Follow up changes of ghorg v1.9.9

[#&#8203;14882](https://togithub.com/aquaproj/aqua-registry/issues/14882)
sachaos/viddy: Follow up changes of viddy v0.3.7

###
[`v4.41.1`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.41.1)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.41.0...v4.41.1)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.41.1)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.41.1)
| aquaproj/aqua-registry@v4.41.0...v4.41.1

#### Fixes


[#&#8203;14842](https://togithub.com/aquaproj/aqua-registry/issues/14842)
antonmedv/walk: Rename the package `antonmedv/llama` to `antonmedv/walk`

https://github.com/antonmedv/llama is redirected to
https://github.com/antonmedv/walk .

The project `llama` was renamed to `walk`.

-
[antonmedv/walk#81


[#&#8203;14843](https://togithub.com/aquaproj/aqua-registry/issues/14843)
goss-org/goss: Follow up changes of goss v0.4.0

-
[goss-org/goss#829

###
[`v4.41.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.41.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.40.0...v4.41.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.41.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.41.0)
| aquaproj/aqua-registry@v4.40.0...v4.41.0

#### 🎉 New Packages


[#&#8203;14733](https://togithub.com/aquaproj/aqua-registry/issues/14733)
[cockroachdb/cockroach](https://togithub.com/cockroachdb/cockroach): A
distributed SQL database designed for speed, scale, and survival
[@&#8203;takumin](https://togithub.com/takumin)

[#&#8203;14675](https://togithub.com/aquaproj/aqua-registry/issues/14675)
[takumin/gyaml](https://togithub.com/takumin/gyaml): Golang YAML Tool
[@&#8203;takumin](https://togithub.com/takumin)

[#&#8203;14732](https://togithub.com/aquaproj/aqua-registry/issues/14732)
[zitadel/zitadel](https://togithub.com/zitadel/zitadel): ZITADEL - The
best of Auth0 and Keycloak combined. Built for the serverless era
[@&#8203;takumin](https://togithub.com/takumin)

</details>

<details>
<summary>cli/cli (cli/cli)</summary>

### [`v2.33.0`](https://togithub.com/cli/cli/releases/tag/v2.33.0):
GitHub CLI 2.33.0

[Compare Source](https://togithub.com/cli/cli/compare/v2.32.1...v2.33.0)

**Meowdy terminal aficionados!** 😸

Before moving onto the freshest `gh` release notes, I have some GitHub
CLI team news to share with the community:

1. **Our dear friend and college
[@&#8203;vilmibm](https://togithub.com/vilmibm) has moved on from GitHub
in following his passions for digital humanities** 😿

The core GitHub CLI team could not be happier for Nate as those same
passions has brought `gh` to this point. 😻 So a tremendous unimaginable
thanks to our dear friend as he chases the wind with the hopes he
continues as part of the GitHub CLI community 💯

2. **We welcome a new GitHub CLI team member:
[@&#8203;andyfeller](https://togithub.com/andyfeller)** 😹

Andy has been a long-time CLI extension advocate within GitHub for some
time, maintaining [extensions for unique user
challenges](https://togithub.com/search?q=owner%3Aandyfeller%20topic%3Agh-extension\&type=repositories).
Please warmly welcome him as he gets up to speed with supporting our
community officially! ❤️

#### What's Changed

- Delete local branch more often when merging PR by
[@&#8203;armandgrillet](https://togithub.com/armandgrillet) in
[cli/cli#7709
- Do not allow issue and pr templates to be symlinks by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[cli/cli#7756
- `release create`: Trim spaces on tag name by
[@&#8203;harveysanders](https://togithub.com/harveysanders) in
[cli/cli#7759
- Use filepath.Base to sanitize path for archive downloads by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[cli/cli#7805
- Codespaces: Use the host name from the logged in server for commands
by [@&#8203;jkeech](https://togithub.com/jkeech) in
[cli/cli#7795
- Update CONTRIBUTING.md by
[@&#8203;andyfeller](https://togithub.com/andyfeller) in
[cli/cli#7812
- Allow --org parameter in lieu of a repo context for rulesets, add
current_user_can_bypass to rs view by
[@&#8203;vaindil](https://togithub.com/vaindil) in
[cli/cli#7747
- add missing `ls` aliases to `list` subcommands by
[@&#8203;cawfeecake](https://togithub.com/cawfeecake) in
[cli/cli#7818
- port repo edit prompts by
[@&#8203;vilmibm](https://togithub.com/vilmibm) in
[cli/cli#7816
- add clobber flag to `alias set` by
[@&#8203;JunNishimura](https://togithub.com/JunNishimura) in
[cli/cli#7787
- Remove GHE handling for `workflow` by
[@&#8203;jamietanna](https://togithub.com/jamietanna) in
[cli/cli#7841
- Upgrade to Go 1.21 by [@&#8203;samcoe](https://togithub.com/samcoe) in
[cli/cli#7843
- switch to prompter in workflow commands by
[@&#8203;vilmibm](https://togithub.com/vilmibm) in
[cli/cli#7847
- update more prompts by [@&#8203;vilmibm](https://togithub.com/vilmibm)
in
[cli/cli#7850
- switch to prompter in pr shared code by
[@&#8203;vilmibm](https://togithub.com/vilmibm) in
[cli/cli#7859
- THE FINAL PROMPTDOWN by
[@&#8203;vilmibm](https://togithub.com/vilmibm) in
[cli/cli#7860
- codespace: Handle HTTP request retry interruption by
[@&#8203;azrsh](https://togithub.com/azrsh) in
[cli/cli#7846

#### New Contributors

- [@&#8203;armandgrillet](https://togithub.com/armandgrillet) made their
first contribution in
[cli/cli#7709
- [@&#8203;harveysanders](https://togithub.com/harveysanders) made their
first contribution in
[cli/cli#7759
- [@&#8203;andyfeller](https://togithub.com/andyfeller) made their first
contribution in
[cli/cli#7812
- [@&#8203;JunNishimura](https://togithub.com/JunNishimura) made their
first contribution in
[cli/cli#7787
- [@&#8203;jamietanna](https://togithub.com/jamietanna) made their first
contribution in
[cli/cli#7841
- [@&#8203;azrsh](https://togithub.com/azrsh) made their first
contribution in
[cli/cli#7846

**Full Changelog**: cli/cli@v2.32.1...v2.33.0

</details>

<details>
<summary>fluxcd/flux2 (fluxcd/flux2)</summary>

### [`v2.1.0`](https://togithub.com/fluxcd/flux2/releases/tag/v2.1.0)

[Compare
Source](https://togithub.com/fluxcd/flux2/compare/v2.0.1...v2.1.0)

#### Highlights

Flux v2.1.0 is a feature release. Users are encouraged to upgrade for
the best experience.

The [Flux APIs](#api-changes) were extended with new opt-in features in
a backwards-compatible manner.

The Flux Git capabilities have been improved with support for Git push
options, Git refspec, Gerrit, HTTP/S and SOCKS5 proxies.

The Flux alerting capabilities have been extended with
[Datadog](https://fluxcd.io/flux/components/notification/provider/#pagerduity)
support.

The Flux controllers come with performance improvements when reconciling
Helm repositories with large indexes (80% memory reduction), and when
reconciling Flux Kustomizations with thousands of resources (x4 faster
server-side apply). The load distribution has been improved when
reconciling Flux objects in parallel to reduce CPU and memory spikes.

:heart: Big thanks to all the Flux contributors that helped us with this
release!

#### Deprecations

Flux v2.1.0 comes with support for Kubernetes TLS Secrets when referring
to secrets containing TLS certs, and deprecates the usage of `caFile`,
`keyFile` and `certFile` keys.

For more details about the TLS changes please see the [Kubernetes TLS
Secrets section](#kubernetes-tls-secrets).

Flux v2.1.0 comes with major improvements to the Prometheus monitoring
stack. Starting with this version, Flux is leveraging the
`kube-state-metrics` CRD exporter to report metrics containing rich
information about Flux reconciliation status e.g. Git revision, Helm
chart version, OCI artifacts digests, etc. The
`gotk_reconcile_condition` metrics was deprecated in favor of the
`gotk_resource_info`.

For more details about the new monitoring stack please see the [Flux
Prometheus metrics
documentation](https://fluxcd.io/flux/monitoring/metrics) and the
[flux2-monitoring-example
repository](https://togithub.com/fluxcd/flux2-monitoring-example).

#### API changes

##### GitRepository v1

The
[GitRepository](https://fluxcd.io/flux/components/source/gitrepositories/)
API was extended with the following fields:

- `.spec.proxySecretRef.name` is an optional field used to specify the
name of a Kubernetes Secret that contains the HTTP/S or SOCKS5 proxy
settings.
- `.spec.verify.mode` now support one of the following values `HEAD`,
`Tag`, `TagAndHEAD`.

##### Kustomization v1

The
[Kustomization](https://fluxcd.io/flux/components/kustomize/kustomization/)
API was extended with two apply policies `IfNotPresent` and `Ignore`.

Changing the apply behaviour for specific Kubernetes resources, can be
done using the following annotations:

| Annotation | Default | Values | Role |

|-------------------------------------|------------|----------------------------------------------------------------|-----------------|
| `kustomize.toolkit.fluxcd.io/ssa` | `Override` | - `Override`<br/>-
`Merge`<br/>- `IfNotPresent`<br/>- `Ignore` | Apply policy |
| `kustomize.toolkit.fluxcd.io/force` | `Disabled` | - `Enabled`<br/>-
`Disabled` | Recreate policy |
| `kustomize.toolkit.fluxcd.io/prune` | `Enabled` | - `Enabled`<br/>-
`Disabled` | Delete policy |

The `IfNotPresent` policy instructs the controller to only apply the
Kubernetes resources if they are not present on the cluster.
This policy can be used for Kubernetes `Secrets` and
`ValidatingWebhookConfigurations` managed by cert-manager,
where Flux creates the resources with fields that are later on mutated
by other controllers.

##### ImageUpdateAutomation v1beta1

The
[ImageUpdateAutomation](https://fluxcd.io/flux/components/image/imageupdateautomations/)
was extended with the following fields:

- `.spec.git.push.refspec` is an optional field used to specify a Git
refspec used when pushing commits upstream.
- `.spec.git.push.options` is an optional field used to specify the Git
push options to be sent to the Git server when pushing commits upstream.

##### Kubernetes TLS Secrets

All the Flux APIs that accept TLS data have been modified to adopt
Secrets of type
`kubernetes.io/tls`. This includes:

- **HelmRepository**: The field `.spec.secretRef` has been deprecated in
favor of a new field
[`.spec.certSecretRef`](https://fluxcd.io/flux/components/source/helmrepositories/#cert-secret-reference).
- **OCIRepository**: Support for the `caFile`, `keyFile` and `certFile`
keys in the Secret specified in
[`.spec.certSecretRef`](https://fluxcd.io/flux/components/source/ocirepositories/#cert-secret-reference)
have been deprecated in favor of `ca.crt`, `tls.key` and `tls.crt`.
- **ImageRepository**: Support for the`caFile`, `keyFile` and `certFile`
keys in the Secret specified in
[`.spec.certSecretRef`](https://fluxcd.io/flux/components/source/imagerepositories/#cert-secret-reference)
have been deprecated in favor of `ca.crt`, `tls.key` and `tls.crt`.
- **GitRepository**: CA certificate can now be provided in the Secret
specified in `.spec.secretRef` using the `ca.crt` key, which takes
precedence over the `caFile` key.

#### Upgrade procedure

Upgrade Flux from `v2.0.x` to `v2.1.0` either by [rerunning
bootstrap](https://fluxcd.io/flux/installation/#bootstrap-upgrade) or by
using the [Flux GitHub
Action](https://togithub.com/fluxcd/flux2/tree/main/action).

To upgrade Flux from `v0.x` to `v2.1.0` please follow the [Flux GA
upgrade
procedure](https://togithub.com/fluxcd/flux2/releases/tag/v2.0.0#upgrade).

#### Kubernetes compatibility

This release is compatible with the following Kubernetes versions:

| Kubernetes version | Minimum required |
|--------------------|------------------|
| `v1.25`            | `>= 1.25.0`      |
| `v1.26`            | `>= 1.26.0`      |
| `v1.27`            | `>= 1.27.1`      |
| `v1.28`            | `>= 1.28.0`      |

Note that Flux may work on older versions of Kubernetes e.g. 1.21, but
we don't recommend running end-of-life versions in production nor do we
offer support for these versions.

#### New Documentation

-   [Flux installation](https://fluxcd.io/flux/installation/)
-   [Flux bootstrap](https://fluxcd.io/flux/installation/bootstrap/)
- [Flux
configuration](https://fluxcd.io/flux/installation/configuration/)
- [Flux Prometheus metrics](https://fluxcd.io/flux/monitoring/metrics/)
- [Flux custom Prometheus
metrics](https://fluxcd.io/flux/monitoring/custom-metrics/)
-   [Flux logs](https://fluxcd.io/flux/monitoring/logs/)
-   [Flux events](https://fluxcd.io/flux/monitoring/events/)

#### Components changelog

- source-controller
[v1.1.0](https://togithub.com/fluxcd/source-controller/blob/v1.1.0/CHANGELOG.md)
- kustomize-controller
[v1.1.0](https://togithub.com/fluxcd/kustomize-controller/blob/v1.1.0/CHANGELOG.md)
- notification-controller
[v1.1.0](https://togithub.com/fluxcd/notification-controller/blob/v1.1.0/CHANGELOG.md)
- helm-controller
[v0.36.0](https://togithub.com/fluxcd/helm-controller/blob/v0.36.0/CHANGELOG.md)
- image-reflector-controller
[v0.30.0](https://togithub.com/fluxcd/image-reflector-controller/blob/v0.30.0/CHANGELOG.md)
- image-automation-controller
[v0.36.0](https://togithub.com/fluxcd/image-automation-controller/blob/v0.36.0/CHANGELOG.md)

#### CLI Changelog

- PR [#&#8203;4189](https://togithub.com/fluxcd/flux2/issues/4189) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - Update dependencies
- PR [#&#8203;4186](https://togithub.com/fluxcd/flux2/issues/4186) -
[@&#8203;fluxcdbot](https://togithub.com/fluxcdbot) - Update toolkit
components
- PR [#&#8203;4183](https://togithub.com/fluxcd/flux2/issues/4183) -
[@&#8203;somtochiama](https://togithub.com/somtochiama) - Fix
autocompletion for helm chart
- PR [#&#8203;4182](https://togithub.com/fluxcd/flux2/issues/4182) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - manifestgen/install:
use clean default HTTP client
- PR [#&#8203;4181](https://togithub.com/fluxcd/flux2/issues/4181) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - cmd/events: handle
error value
- PR [#&#8203;4180](https://togithub.com/fluxcd/flux2/issues/4180) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - Fix
controller version info
- PR [#&#8203;4177](https://togithub.com/fluxcd/flux2/issues/4177) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - Set min
value for the `--ssh-rsa-bits` flag
- PR [#&#8203;4176](https://togithub.com/fluxcd/flux2/issues/4176) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - ci: disable fail-fast
for ARM end-to-end
- PR [#&#8203;4175](https://togithub.com/fluxcd/flux2/issues/4175) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - build: update
securejoin dependency
- PR [#&#8203;4169](https://togithub.com/fluxcd/flux2/issues/4169) -
[@&#8203;darkowlzz](https://togithub.com/darkowlzz) - Add monitoring
configuration deprecation notice
- PR [#&#8203;4167](https://togithub.com/fluxcd/flux2/issues/4167) -
[@&#8203;dependabot](https://togithub.com/dependabot)\[bot] -
build(deps): bump the ci group with 2 updates
- PR [#&#8203;4166](https://togithub.com/fluxcd/flux2/issues/4166) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - e2e: Add
Kubernetes v1.28.0 to conformance tests
- PR [#&#8203;4151](https://togithub.com/fluxcd/flux2/issues/4151) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - ci: enable
security-and-quality CodeQL query
- PR [#&#8203;4147](https://togithub.com/fluxcd/flux2/issues/4147) -
[@&#8203;aryan9600](https://togithub.com/aryan9600) - Adopt Kubernetes
style TLS Secrets and add relevant flags
- PR [#&#8203;4142](https://togithub.com/fluxcd/flux2/issues/4142) -
[@&#8203;dependabot](https://togithub.com/dependabot)\[bot] -
build(deps): bump the ci group with 2 updates
- PR [#&#8203;4140](https://togithub.com/fluxcd/flux2/issues/4140) -
[@&#8203;somtochiama](https://togithub.com/somtochiama) - Disable azure
e2e test
- PR [#&#8203;4134](https://togithub.com/fluxcd/flux2/issues/4134) -
[@&#8203;sestegra](https://togithub.com/sestegra) - monitoring: add
OCIRepository in cluster dashboard and new source panels in
control-plane dashboard
- PR [#&#8203;4131](https://togithub.com/fluxcd/flux2/issues/4131) -
[@&#8203;mraerino](https://togithub.com/mraerino) - Fix selection of
kustomization resource from multi doc yaml
- PR [#&#8203;4126](https://togithub.com/fluxcd/flux2/issues/4126) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - Set
Kubernetes min version to 1.25
- PR [#&#8203;4077](https://togithub.com/fluxcd/flux2/issues/4077) -
[@&#8203;dependabot](https://togithub.com/dependabot)\[bot] -
build(deps): bump the ci group with 2 updates
- PR [#&#8203;4068](https://togithub.com/fluxcd/flux2/issues/4068) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - Update
dependencies
- PR [#&#8203;4065](https://togithub.com/fluxcd/flux2/issues/4065) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - action: support
`openssl` and `sha256sum`
- PR [#&#8203;4062](https://togithub.com/fluxcd/flux2/issues/4062) -
[@&#8203;souleb](https://togithub.com/souleb) - diff: Take into account
the server-side inventory for local Flux Kustomizations
- PR [#&#8203;4061](https://togithub.com/fluxcd/flux2/issues/4061) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - action: re-allow
configuration of non-default token
- PR [#&#8203;4057](https://togithub.com/fluxcd/flux2/issues/4057) -
[@&#8203;fluxcdbot](https://togithub.com/fluxcdbot) - Update toolkit
components
- PR [#&#8203;4052](https://togithub.com/fluxcd/flux2/issues/4052) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - docs: Link
to the Flux GitHub Action documentation
- PR [#&#8203;4051](https://togithub.com/fluxcd/flux2/issues/4051) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - action: use
`$RUNNER_TOOL_CACHE`, support MacOS and Windows, validate checksum
- PR [#&#8203;4046](https://togithub.com/fluxcd/flux2/issues/4046) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - ci:
backport: set write permissions
- PR [#&#8203;4043](https://togithub.com/fluxcd/flux2/issues/4043) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - ci: release:
extract the image tag from GITHUB_REF
- PR [#&#8203;4041](https://togithub.com/fluxcd/flux2/issues/4041) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - ci: release: disable
interpretation backslash esc

</details>

<details>
<summary>golangci/golangci-lint (golangci/golangci-lint)</summary>

###
[`v1.54.2`](https://togithub.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v1542)

[Compare
Source](https://togithub.com/golangci/golangci-lint/compare/v1.54.1...v1.54.2)

1.  updated linters:
    -   `errname`: from 0.1.10 to 0.1.12
    -   `ginkgolinter`: from 0.13.3 to 0.13.5
    -   `go-errorlint`: from 1.4.3 to 1.4.4
    -   `godot`: from 1.4.11 to 1.4.14
    -   `gosec`: from 2.16.0 to 2.17.0
    -   `musttag`: from 0.7.1 to 0.7.2
    -   `nilnil`: from 0.1.5 to 0.1.7
    -   `staticcheck`: from 0.4.3 to 0.4.5
    -   `usestdlibvars`: from 1.23.0 to 1.24.0
    -   `govet`: add missing `directive` and `slog` passes

</details>

<details>
<summary>kubernetes/kubectl (kubernetes/kubectl)</summary>

###
[`v1.28.1`](https://togithub.com/kubernetes/kubectl/compare/kubernetes-1.28.0...kubernetes-1.28.1)

[Compare
Source](https://togithub.com/kubernetes/kubectl/compare/kubernetes-1.28.0...kubernetes-1.28.1)

</details>

<details>
<summary>stern/stern (stern/stern)</summary>

###
[`v1.26.0`](https://togithub.com/stern/stern/blob/HEAD/CHANGELOG.md#v1260)

[Compare
Source](https://togithub.com/stern/stern/compare/v1.25.0...v1.26.0)

#### ⚡ Notable Changes

##### Add new template functions

The following template functions have been added in v1.26.0:

- `extractJSONParts`: Parse string as JSON and concatenate the given
keys
- `tryExtractJSONParts`: Attempt to parse string as JSON and concatenate
the given keys, returning text on failure

#### Changes

- Fix the release workflow
([#&#8203;275](https://togithub.com/stern/stern/pull/275))
[91d4cd6](https://togithub.com/stern/stern/commit/91d4cd6) (Kazuki Suda)
- Update dependencies and tools
([#&#8203;273](https://togithub.com/stern/stern/pull/273))
[cb94677](https://togithub.com/stern/stern/commit/cb94677) (Takashi
Kusumi)
- Possibility to extract parts of a json-message.
([#&#8203;271](https://togithub.com/stern/stern/pull/271))
[d49142c](https://togithub.com/stern/stern/commit/d49142c) (Niels)
- Fix potential panic in stern.Run()
([#&#8203;267](https://togithub.com/stern/stern/pull/267))
[dcba2dd](https://togithub.com/stern/stern/commit/dcba2dd) (Takashi
Kusumi)
- Add log level color keys and handle default
([#&#8203;264](https://togithub.com/stern/stern/pull/264))
[65204cc](https://togithub.com/stern/stern/commit/65204cc) (Jimmie
Högklint)
- Fix typo in README.md
([#&#8203;261](https://togithub.com/stern/stern/pull/261))
[d7d5a4f](https://togithub.com/stern/stern/commit/d7d5a4f) (Will May)
- Integrate fmt and vet checks into golangci-lint
([#&#8203;260](https://togithub.com/stern/stern/pull/260))
[1d242bc](https://togithub.com/stern/stern/commit/1d242bc) (Takashi
Kusumi)
- Update Github Actions dependencies
([#&#8203;259](https://togithub.com/stern/stern/pull/259))
[9e833da](https://togithub.com/stern/stern/commit/9e833da) (Takashi
Kusumi)

</details>

<details>
<summary>twpayne/chezmoi (twpayne/chezmoi)</summary>

###
[`v2.38.0`](https://togithub.com/twpayne/chezmoi/releases/tag/v2.38.0)

[Compare
Source](https://togithub.com/twpayne/chezmoi/compare/v2.37.0...v2.38.0)

#### Changelog

##### Other

- [`0ce82b3`](https://togithub.com/twpayne/chezmoi/commit/0ce82b3a)
chore: Update dependencies
- [`7b300e4`](https://togithub.com/twpayne/chezmoi/commit/7b300e44)
chore: Miscellaneous website improvements
- [`166feaf`](https://togithub.com/twpayne/chezmoi/commit/166feafa)
docs: Linuxbrew -> Homebrew
- [`d00de72`](https://togithub.com/twpayne/chezmoi/commit/d00de724)
feat: Add `gitHubReleases` and `gitHubTags`
- [`a51179e`](https://togithub.com/twpayne/chezmoi/commit/a51179e5)
feat: Support nushell scripts on Windows
- [`7d143c3`](https://togithub.com/twpayne/chezmoi/commit/7d143c3f)
docs: Improve documentation on using separate source files
- [`ba985c9`](https://togithub.com/twpayne/chezmoi/commit/ba985c95)
chore: Reformat long lines
- [`5e8d2b3`](https://togithub.com/twpayne/chezmoi/commit/5e8d2b36)
feat: Add promptChoice and promptChoiceOnce template functions
- [`29e8c30`](https://togithub.com/twpayne/chezmoi/commit/29e8c306) fix:
Fix minor issues with promptBool docs and errors
- [`f0efc5c`](https://togithub.com/twpayne/chezmoi/commit/f0efc5cb)
chore: Generate release notes from git log, not GitHub
- [`3c72387`](https://togithub.com/twpayne/chezmoi/commit/3c723878)
chore: Remove dependency on go.uber.org/multierr
- [`424189b`](https://togithub.com/twpayne/chezmoi/commit/424189bb)
chore: Use io/fs.Skip{All,Dir} sentinel errors
- [`dbc1b4b`](https://togithub.com/twpayne/chezmoi/commit/dbc1b4b7)
chore: Bump golangci-lint to version 1.54.0
- [`3f636c1`](https://togithub.com/twpayne/chezmoi/commit/3f636c1b)
chore: Build with Go 1.21.0
- [`187f734`](https://togithub.com/twpayne/chezmoi/commit/187f7346)
chore: Update dependencies
- [`a028598`](https://togithub.com/twpayne/chezmoi/commit/a0285982)
feat: Restore --autotemplate flag to add command
- [`4e67850`](https://togithub.com/twpayne/chezmoi/commit/4e678506)
docs: Document --source-path flag
- [`4fc3203`](https://togithub.com/twpayne/chezmoi/commit/4fc32035) fix:
Fix race condition in concurrent parsing of externals

</details>

<details>
<summary>weaveworks/eksctl (weaveworks/eksctl)</summary>

###
[`v0.154.0`](https://togithub.com/eksctl-io/eksctl/releases/tag/v0.154.0):
eksctl 0.154.0 (permalink)

[Compare
Source](https://togithub.com/weaveworks/eksctl/compare/0.153.0...0.154.0)

### Release v0.154.0

#### 🐛 Bug Fixes

- Fix error message for Bottlerocket validation
([#&#8203;6967](https://togithub.com/weaveworks/eksctl/issues/6967))
- Don't wait for `aws-efs-csi-driver` addon if cluster has no nodegroups
([#&#8203;6960](https://togithub.com/weaveworks/eksctl/issues/6960))

#### 🧰 Maintenance

- Bring Windows integration test runtime down to less than half
([#&#8203;6965](https://togithub.com/weaveworks/eksctl/issues/6965))

#### 📝 Documentation

- Add references to Enterprise support with Flux on Gitops page
([#&#8203;6968](https://togithub.com/weaveworks/eksctl/issues/6968))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 4pm on thursday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/scottames/dots).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi41Ni4wIiwidXBkYXRlZEluVmVyIjoiMzYuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
external pull request originating outside of the CLI core team
Projects
No open projects
The GitHub CLI
  
Needs review 🤔
Development

Successfully merging this pull request may close these issues.

None yet

4 participants