Skip to content

Commit e751b11

Browse files
chore(docs): WIP for the 2.38.0-rc release notes
1 parent f4bc3ec commit e751b11

3 files changed

Lines changed: 351 additions & 9 deletions

File tree

content/en/continuous-deployment/release-notes/rn-prerelease-armory-spinnaker/armoryspinnaker_v2-38-0-rc2.md

Lines changed: 346 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,89 @@ Armory scans the codebase as we develop and release software. Contact your Armor
4242

4343
> Breaking changes are kept in this list for 3 minor versions from when the change is introduced. For example, a breaking change introduced in 2.21.0 appears in the list up to and including the 2.24.x releases. It would not appear on 2.25.x release notes.
4444
45+
### Gate: Spring Security 5 Oauth2 Migration
46+
Armory CD 2.38.0 removes deprecate Oauth2 annotations and uses Spring Security 5 DSL. In order to configure oauth2 in gate have changed to:
47+
48+
## Google Oauth configuration
49+
```yaml
50+
spring:
51+
security:
52+
oauth2:
53+
client:
54+
registration:
55+
google:
56+
client-id: <client-id>
57+
client-secret: <client-secret>
58+
authorization-grant-type: authorization_code
59+
redirect-uri: "https://<your-domain>/login/oauth2/code/google"
60+
scope: profile,email,openid
61+
client-name: google
62+
provider:
63+
google:
64+
authorization-uri: https://accounts.google.com/o/oauth2/auth
65+
token-uri: https://oauth2.googleapis.com/token
66+
user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
67+
user-name-attribute: sub
68+
```
69+
## Github Oauth2 configuration
70+
```yaml
71+
spring:
72+
security:
73+
oauth2:
74+
client:
75+
registration:
76+
userInfoMapping:
77+
email: email
78+
firstName: ''
79+
lastName: name
80+
username: login
81+
github:
82+
client-id: <client-id>
83+
client-secret: <client-secret>
84+
authorization-grant-type: authorization_code
85+
redirect-uri: "https://<your-domain>/login/oauth2/code/github"
86+
scope: user,email
87+
client-name: github
88+
provider:
89+
github:
90+
authorization-uri: https://github.com/login/oauth/authorize
91+
token-uri: https://github.com/login/oauth/access_token
92+
user-info-uri: https://api.github.com/user
93+
user-name-attribute: login
94+
```
95+
96+
97+
### Gate: Spring Security Saml Migration
98+
## TO DO
99+
100+
### Orca: Tasks configuration changes
101+
The following configuration properties have been restructured:
102+
103+
Previous Configuration:
104+
105+
```yaml
106+
tasks:
107+
days-of-execution-history:
108+
number-of-old-pipeline-executions-to-include:
109+
```
110+
111+
New configuration format
112+
113+
```yaml
114+
tasks:
115+
controller:
116+
days-of-execution-history:
117+
number-of-old-pipeline-executions-to-include:
118+
optimize-execution-retrieval: <boolean>
119+
max-execution-retrieval-threads:
120+
max-number-of-pipeline-executions-to-process:
121+
execution-retrieval-timeout-seconds:
122+
```
123+
124+
These changes improve query performance and execution retrieval efficiency, particularly for large-scale pipeline applications.
125+
126+
[Orca: Performance Improvements for SQL Backend](#orca-performance-improvements-for-sql-backend)
127+
45128
## Known issues
46129
<!-- Copy/paste known issues from the previous version if they're not fixed. Add new ones from OSS and Armory. If there aren't any issues, state that so readers don't think we forgot to fill out this section. -->
47130
@@ -53,15 +136,274 @@ Each item category (such as UI) under here should be an h3 (###). List the follo
53136
- Fixes to any known issues from previous versions that we have in release notes. These can all be grouped under a Fixed issues H3.
54137
-->
55138
139+
### Security enhancement: Url Filtering/Restriction capabilities on Artifact accounts
140+
Starting in Armory Continuous Deployment 2.36.5, we have enabled to capability to filter/restrict urls that can be accessed per artifact accounts.
141+
This feature provides a safeguard around user input of remote urls when artifact accounts are in used in the context of a pipeline execution.
142+
143+
An example configuration for clouddriver-local.yml can be found below which can be added per artifact account (http, github, helm):
144+
```yaml
145+
artifacts:
146+
http:
147+
enabled: true
148+
accounts:
149+
- name: http_account
150+
urlRestrictions:
151+
allowedDomains:
152+
- mydomain.com
153+
- raw.github.com
154+
- api.github.com
155+
rejectLocalhost: true #default value
156+
rejectLinkLocal: true #default value
157+
rejectVerbatimIps: true #default value
158+
rejectedIps: [] #default value
159+
```
160+
161+
By default the configuration blocks any local CIDR ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), localhost, link local and raw IPs.
162+
For full configuration details please refer to this [configuration class](https://github.com/spinnaker/spinnaker/blob/main/clouddriver/clouddriver-artifacts/src/main/java/com/netflix/spinnaker/clouddriver/artifacts/config/HttpUrlRestrictions.java)
163+
164+
### Clouddriver AWS accounts assume-role enhancement
165+
Introduce in OSS Spinnaker 1.37.0 a configurable retry and backoff logic for AWS credentials parsing has been added.
166+
Additionally a configurable per account (or default) sessionDurationSeconds property has been added.
167+
```yaml
168+
aws:
169+
loadAccounts:
170+
maxRetries: 10
171+
backOffInMs: 5000
172+
exponentialBackoff: false
173+
exponentialBackoffMultiplier: 2
174+
exponentialBackOffIntervalMs: 10000
175+
defaultSessionDurationSeconds: (no default value)
176+
```
177+
178+
[PR6342](https://github.com/spinnaker/clouddriver/pull/6342)
179+
[PR6344](https://github.com/spinnaker/clouddriver/pull/6344)
180+
181+
### Orca: Webhook stage improvements and security features
182+
183+
184+
```yaml
185+
orca:
186+
webhooks:
187+
allowList: ["https://hooks.company.com"]
188+
maxRequestSizeBytes: 1048576
189+
maxResponseSizeBytes: 1048576
190+
followRedirects: false
191+
timeoutSeconds: 60
192+
audit:
193+
enabled: true
194+
195+
```
196+
197+
### Helm OCI Registry Chart Support
198+
Docker registry provider now supports adding OCI-based registries hosting Helm repositories. This feature allows
199+
users to download and bake Helm charts hosted in OCI-compliant registries (such as Docker Hub).
200+
201+
Related PRs:
202+
- https://github.com/spinnaker/spinnaker/pull/7069
203+
- https://github.com/spinnaker/spinnaker/pull/7089
204+
- https://github.com/spinnaker/spinnaker/pull/7113
205+
206+
To enable the Helm OCI support in a Docker Registry account set a list of OCI repositories in the `helmOciRepositories`
207+
of the Docker Registry account configuration. The `helmOciRepositories` is a list of repository names in the format `<registry>/<repository>`. For example:
208+
```yaml
209+
dockerRegistry:
210+
enabled: true
211+
primaryAccount: dockerhub # Must be one of the configured docker accounts
212+
accounts:
213+
- name: dockerhub
214+
requiredGroupMembership: []
215+
providerVersion: V1
216+
permissions: {}
217+
address: https://index.docker.io # (Required). The registry address you want to pull and deploy images from; e.g. https://index.docker.io
218+
username: <username> # Your docker registry email (often this only needs to be well-formed, rather than be a real address)
219+
password: <password>
220+
cacheIntervalSeconds: 30 # (Default: 30). How many seconds elapse between polling your docker registry.
221+
clientTimeoutMillis: 60000 # (Default: 60000). Timeout time in milliseconds for this repository.
222+
cacheThreads: 1 # (Default: 1). How many threads to cache all provided repos on. Really only useful if you have a ton of repos.
223+
paginateSize: 100 # (Default: 100). Paginate size for the docker repository _catalog endpoint.
224+
sortTagsByDate: false # (Default: false). Sort tags by creation date.
225+
trackDigests: false # (Default: false). Track digest changes. This is not recommended as it consumes a high QPM, and most registries are flaky.
226+
insecureRegistry: false # (Default: false). Treat the docker registry as insecure (don’t validate the ssl cert).
227+
repositories:
228+
- "registry/repository" # (Default: []). An optional list of repositories to cache Docker images from. If not provided, Spinnaker will attempt to read accessible repositories from the registries _catalog endpoint
229+
helmOciRepositories:
230+
- "registry/HelmOciRepository" # (Default: []). An optional list of Helm OCI-Based repositories to cache helm charts from.
231+
```
232+
233+
For every account with non-empty `helmOciRepositories` list, Clouddriver will cache the Helm charts from the specified OCI repositories.
234+
235+
The cached Helm OCI charts are defined as a new Artifact type named `helm/image` and can be used to bake Helm OCI-based charts in Spinnaker pipelines.
236+
237+
#### Defining retention policy for downloaded helm/image charts in Clouddriver
238+
Optionally, users can define a retention policy for Helm OCI charts downloaded in a Clouddriver instance. This functionality
239+
is disabled by default and it is useful for users that want to keep a local copy of a Helm OCI based chart without the need
240+
to download it every time it is used in a pipeline. The retention policy is defined in the `clouddriver-local.yml` configuration file:
241+
```
242+
artifacts:
243+
helm-oci:
244+
clone-retention-minutes: 60
245+
clone-retention-max-bytes: 104857600 # 100MB
246+
```
247+
248+
* `clone-retention-minutes:` Default: 0. How much time to keep the downloaded helm/image chart. Values are:
249+
* 0: no retention.
250+
* -1: retain forever.
251+
* any whole number of minutes, such as `60`.
252+
* `clone-retention-max-bytes:` Default: 104857600 (100 MB). Maximum amount of disk space to use for downloaded helm/image charts. When the
253+
maximum amount of space is reached, Clouddriver deletes the clones after returning the artifact to the pipeline, just as if retention were disabled.
254+
255+
#### Defining Triggers for helm/image artifacts in Spinnaker pipelines
256+
To trigger a Spinnaker pipeline on a new version of a Helm OCI-based chart, users will need to enable the Igor poller for the `helm/image` artifact type.
257+
This can be done by adding the following configuration to the `igor-local.yml` file:
258+
```
259+
helm-oci-docker-registry:
260+
enabled: true
261+
```
262+
263+
Additionally, a new trigger type (named `helm/oci`) has been implemented to allow pipelines to be triggered by new versions of `helm/image` artifacts.
264+
```
265+
"triggers": [
266+
{
267+
"account": "<accountName>",
268+
"enabled": true,
269+
"organization": "<org>",
270+
"registry": "index.docker.io",
271+
"repository": "org/repositoryName",
272+
"type": "helm/oci"
273+
}
274+
],
275+
```
276+
277+
278+
### Orca: Limit the execution retrieval of Disabled pipelines
279+
A new configuration has been added to exclude execution retrieval for disabled pipelines in Front50. This can be enabled with:
280+
```yaml
281+
tasks:
282+
controller:
283+
excludeExecutionsOfDisabledPipelines: false|true # Defaults to false
284+
```
285+
When enabled, Orca will call Front50 with the `enabledPipelines=true` query parameter, which returns only the
286+
enabled pipelines for an application (Front50 [PR1520](https://github.com/spinnaker/front50/pull/1520)). This helps reduce
287+
load for applications with numerous pipelines, especially when obsolete, disabled pipelines are retained for historical reasons.
288+
289+
*Orca [PR4819](https://github.com/spinnaker/orca/pull/4819)*
290+
### Front50: Scheduled agent for Disabling unused pipelines
291+
An agent has been introduced to detect and disable unused or unexecuted pipelines within an application.
292+
This agent checks pipelines that have not been executed for the past `thresholdDays` days and disables them in Front50.
293+
This feature is only available for SQL execution repositories and is configurable as bellow:
294+
```yaml
295+
pollers:
296+
unused-pipelines-disable:
297+
enabled: false | true # default: false
298+
intervalSec: 3600 # default: 3600
299+
thresholdDays: 365 # default: 365
300+
dryRun: false | true # default: true. When true an info is logged about the intention to disable a pipelineConfigId in the application evaluated
301+
```
302+
*Front50 [PR1520](https://github.com/spinnaker/front50/pull/1520)*
303+
304+
### Orca: New Pipeline stage configuration `backOffPeriodMs`
305+
A new configuration option `backOffPeriodMs` has been added to the pipeline stage configuration. This option allows users
306+
to specify a back-off period in milliseconds for stages that may need to retry operations after a failure. Before this,
307+
pipeline authors had no control over the backoff period. It came from either spinnaker configuration properties or
308+
implementations of RetryableTask.getDynamicBackoffPeriod.
309+
310+
Additionally, the following configuration options have been added that allow admins to specify globablly the backoff period:
311+
{{< highlight yaml "linenos=table,hl_lines=9-11" >}}
312+
apiVersion: spinnaker.armory.io/v1alpha2
313+
kind: SpinnakerService
314+
metadata:
315+
name: spinnaker
316+
spec:
317+
spinnakerConfig:
318+
profiles:
319+
orca:
320+
tasks.global.backOffPeriod:
321+
tasks.<cloud provider>.backOffPeriod:
322+
tasks.<cloud provider>.<account name>.backOffPeriod:
323+
{{< /highlight >}}
324+
325+
*Orca [PR 4841](https://github.com/spinnaker/orca/pull/4841)*
326+
327+
328+
### Orca: Performance Improvements for Pipeline Executions
329+
330+
This release includes several optimizations to improve pipeline execution times, particularly for complex pipeline structures.
331+
332+
Key Improvements
333+
334+
1. Memorize the `anyUpstreamStagesFailed` extension function to improve time complexity from exponential to linear
335+
2. Optimize `getAncestorsImpl` to reduce time complexity by a factor of N, where N is the number of stages in a pipeline
336+
3. Optimize `StartStageHandler` to only call withAuth (which calls getAncestorsImpl) when
337+
338+
These enhancements significantly reduce pipeline execution time, with the most notable gains observed in dense pipeline graphs. For example, in the `ComplexPipeline.kt` test scenario, execution time improved from not completing at all to approximately `160ms`.
339+
340+
*Orca [PR 4824](https://github.com/spinnaker/orca/pull/4824)*
341+
342+
### Orca: Performance Improvements for SQL Backend
343+
344+
This release enhances the performance of SQL-backed pipeline queries by optimizing database operations, particularly for the API call:
345+
346+
```
347+
/applications/{application}/pipelines?expand=false&limit=2
348+
```
349+
350+
which is frequently initiated by Deck and forwarded through Gate to Orca.
351+
352+
Key Improvements
353+
354+
- Improved Query Efficiency: Optimized the retrieval of pipeline execution data, significantly reducing database query times.
355+
- Refactored `TaskController`: Externalized configuration properties to allow better flexibility and tuning.
356+
- Enhanced `getPipelinesForApplication()`
357+
- Limits the number of pipeline config IDs queried.
358+
- Processes multiple pipeline config IDs simultaneously.
359+
- Introduces multi-threading to handle batches efficiently.
360+
361+
*Orca [PR 4804](https://github.com/spinnaker/orca/pull/4804)*
362+
363+
### Orca: Read Connection Pool for SQL Execution Repository
364+
365+
This release introduces support for a dedicated read connection pool for specific read-only database queries in `SqlExecutionRepository`
366+
367+
Key Improvements
368+
369+
1. New "read" Connection Pool: Allows read operations to be routed to a separate connection pool.
370+
2. Configurable Read Pool: Users can define an additional read connection pool in the SQL configuration.
371+
3. Ensures Data Consistency: Some read queries still rely on recently written data and are not yet converted to use a read replica due to potential replication lag.
56372

373+
Configuration Example
57374

375+
To enable the read connection pool, add the following configuration:
376+
```yaml
377+
sql:
378+
connectionPools:
379+
default:
380+
<...>
381+
read:
382+
jdbcUrl: jdbc:...
383+
user: orca_service
384+
password:
385+
connectionTimeoutMs:
386+
validationTimeoutMs:
387+
maxPoolSize:
388+
minIdle:
389+
maxLifetimeMs:
390+
idleTimeoutMs:
391+
```
392+
393+
*Orca [PR 4803](https://github.com/spinnaker/orca/pull/4803)*
58394

59-
### Spinnaker community contributions
60395

61-
There have also been numerous enhancements, fixes, and features across all of Spinnaker's other services. See the
62-
[Spinnaker v1.38.0](https://www.spinnaker.io/changelogs/1.38.0-changelog/) changelog for details.
396+
### Migration of Retrofit1 to Retrofit2 for all services
397+
398+
399+
### Spinnaker community contributions
63400

64-
## Detailed updates
401+
There have also been numerous enhancements, fixes, and features across all of Spinnaker's other services. See the following changelogs for details:
402+
- [Spinnaker v1.37.0](https://spinnaker.io/changelogs/1.37.0-changelog/)
403+
- [Spinnaker v1.38.0](https://spinnaker.io/changelogs/1.38.0-changelog/)
404+
- [Spinnaker v1.38.0/2025.0.0](https://spinnaker.io/changelogs/1.38.0-changelog/)
405+
- [Spinnaker 2025.1.0](https://spinnaker.io/changelogs/2025.1.0-changelog/)
406+
- [Spinnaker 2025.2.0](https://spinnaker.io/changelogs/2025.2.0-changelog/)
65407

66408
### Bill Of Materials (BOM)
67409

templates/spinnaker-prerelease-release-notes.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ You acknowledge that Armory has provided the Services in reliance upon the limit
3131

3232
## Required Armory Operator version
3333

34-
To install, upgrade, or configure Armory CD {{ (ds "payload").armoryVersion }}, use Armory Operator 1.70 or later.
34+
To install, upgrade, or configure Armory CD {{ (ds "payload").armoryVersion }}, use Armory Operator 1.8.6 or later.
3535

3636
## Security
3737

templates/spinnaker-release-notes.tmpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ description: >
77
Release notes for Armory Continuous Deployment v{{ (ds "payload").armoryVersion }}.
88
---
99

10-
<!--
11-
MAKE SURE TO ADD 'LTS' OR 'FEATURE' TO THE TITLE TO INDICATE RELEASE CATEGORY.
12-
FOR EXAMPLE, "Armory Continuous Deployment Release LTS" or "Armory Continuous Deployment Release Feature" so users know release category and support time period
10+
<!--
11+
MAKE SURE TO ADD 'LTS' OR 'FEATURE' TO THE TITLE TO INDICATE RELEASE CATEGORY.
12+
FOR EXAMPLE, "Armory Continuous Deployment Release LTS" or "Armory Continuous Deployment Release Feature" so users know release category and support time period
1313
-->
1414

1515
## {{ (time.Now).Format "2006/01/02" }} release notes
@@ -18,7 +18,7 @@ FOR EXAMPLE, "Armory Continuous Deployment Release LTS" or "Armory Continuous De
1818

1919
## Required Armory Operator version
2020

21-
To install, upgrade, or configure Armory CD {{ (ds "payload").armoryVersion }}, use Armory Operator 1.70 or later.
21+
To install, upgrade, or configure Armory CD {{ (ds "payload").armoryVersion }}, use Armory Operator 1.8.6 or later.
2222

2323
## Security
2424

0 commit comments

Comments
 (0)