You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Release notes for Armory Continuous Deployment v2.35.0.
@@ -18,7 +18,7 @@ FOR EXAMPLE, "Armory Continuous Deployment Release LTS" or "Armory Continuous De
18
18
19
19
## Required Armory Operator version
20
20
21
-
To install, upgrade, or configure Armory CD 2.35.0, use Armory Operator 1.70 or later.
21
+
To install, upgrade, or configure Armory CD 2.35.0, use Armory Operator 1.8.6 or later.
22
22
23
23
## Security
24
24
@@ -53,54 +53,91 @@ spec:
53
53
pipelineRef:
54
54
enabled: true
55
55
{{< /highlight >}}
56
-
When enabled, child pipeline execution ids are stored in sql instead of the entire child pipeline execution context.
57
-
The in-memory representation of pipelines doesn’t change whether this feature is enabled or not. As well, pipelines stored with child pipeline execution ids are processed properly when the feature is disabled.
58
-
Barring any issues discovered in this release, the flag will be removed, and the behavior will become default in an upcoming release.
59
-
For details on the changes, please visit this link(https://github.com/spinnaker/orca/pull/4749)
56
+
When this feature is enabled, **child pipeline execution IDs** are stored in SQL instead of the full child pipeline execution context. This improves efficiency without altering the in-memory representation of pipelines.
57
+
58
+
- Pipelines function the same way in-memory, regardless of whether this feature is enabled.
59
+
- Pipelines stored with child execution IDs remain fully functional even if the feature is later disabled.
60
+
- If no issues arise in this release, the feature flag will be removed, and this behavior will become the default in an upcoming release.
61
+
62
+
For a detailed breakdown of these changes, see [this PR](https://github.com/spinnaker/orca/pull/4749).
63
+
64
+
60
65
### Java 17
61
-
All Spinnaker services are now compiled by JDK 17, transpiling to Java 11 bytecode. Published images run JRE 17. In 1.36, compilation will switch to Java 17 bytecode, completing our migration to Java 17. Please continue to report issues by opening an issue in the spinnaker repository (https://github.com/spinnaker/spinnaker) .
62
-
Note that JDK 17 enforces Strong Encapsulation(https://docs.oracle.com/en/java/javase/17/migrate/migrating-jdk-8-later-jdk-releases.html#GUID-7BB28E4D-99B3-4078-BDC4-FC24180CE82B) . Evaluation of some SpEL expressions uses reflection that the JDK no longer permits by default, for example:
63
-
```
66
+
#### Spinnaker Services Migration to JDK 17
67
+
68
+
All Spinnaker services are now compiled using **JDK 17**, which is transpiled to Java 11 bytecode. Published images currently run **JRE 17**. In **version 1.36**, compilation will switch to Java 17 bytecode, completing our migration to JDK 17.
69
+
70
+
Please continue to report any issues by opening an issue in the [Spinnaker repository](https://github.com/spinnaker/spinnaker).
71
+
72
+
#### Important Notes on JDK 17
73
+
74
+
JDK 17 enforces **[Strong Encapsulation](https://docs.oracle.com/en/java/javase/17/migrate/migrating-jdk-8-later-jdk-releases.html#GUID-7BB28E4D-99B3-4078-BDC4-FC24180CE82B)**. This means that some SpEL expressions, which previously used reflection, may not work as expected since the JDK now restricts reflection by default.
75
+
76
+
For example:
77
+
78
+
```json
64
79
${ {"foo": "bar"}.toString() }
65
80
```
66
-
For this evaluation to succeed, add ```--add-opens=java.base/java.util=ALL-UNNAMED``` to JAVA_OPTS for orca and echo.
81
+
For this evaluation to succeed, add ```java--add-opens=java.base/java.util=ALL-UNNAMED``` to ```JAVA_OPTS``` for orca and echo.
67
82
### Spring Boot 2.7.18
68
-
As part of the continued effort to upgrade Spring Boot, Spinnaker 1.35.0 now uses Spring Boot 2.7.18, an upgrade from Spinnaker 1.34.0`s use of Spring Boot 2.6.15. Spring Boot 2.7 considers session data cached by Spring Boot 2.6 invalid. Therefore, users with cached sessions will be unable to log in until the invalid information is removed from the cache. Open browser windows to Spinnaker are unresponsive after the deployment until they’re reloaded. Executing:
69
-
```
70
-
$ redis-cli keys "spring:session*" | xargs redis-cli del
71
-
```
72
-
on Gate’s redis instance removes the cached session information.
73
-
Spring Boot 2.7 brings with it the following changes:
74
-
- Groovy upgrade from 3.0.17 to 3.0.19
75
-
- Replaces mysql connector coordinate from mysql:mysql-connector-java to com.mysql:mysql-connector-j with version 8.0.33.
76
-
- Changes to Auto-configuration
83
+
84
+
As part of the continued effort to upgrade Spring Boot, **Spinnaker 1.35.0** now uses **Spring Boot 2.7.18**, an upgrade from **Spinnaker 1.34.0**'s use of **Spring Boot 2.6.15**.
85
+
86
+
**Spring Boot 2.7** considers session data cached by **Spring Boot 2.6** to be invalid. Therefore, users with cached sessions will be unable to log in until the invalid information is removed from the cache. Additionally, open browser windows to Spinnaker will be unresponsive after deployment until they’re reloaded.
87
+
88
+
To remove the cached session information, you can execute the following command on Gate’s Redis instance:
89
+
90
+
```bash $ redis-cli keys "spring:session*" | xargs redis-cli del ```
91
+
#### Spring Boot 2.7 Changes
92
+
93
+
**Spring Boot 2.7** brings the following updates:
94
+
95
+
-**Groovy** upgrade from version 3.0.17 to 3.0.19
96
+
- Replacement of the **MySQL connector** coordinate from `mysql:mysql-connector-java` to `com.mysql:mysql-connector-j` (version 8.0.33)
97
+
- Changes to **auto-configuration**
98
+
77
99
### RetrofitExceptionHandler Removed
78
-
https://github.com/spinnaker/orca/pull/4716 removed RetrofitExceptionHandler from orca. There’s an ongoing effort to upgrade to retrofit2. One step along the way is to adjust error handling code based on RetrofitError (a retrofit1 class not available in retrofit2) to use SpinnakerServerException(https://github.com/spinnaker/kork/blob/v7.231.0/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerServerException.java) and its children, by using SpinnakerRetrofitErrorHandler(https://github.com/spinnaker/kork/blob/v7.231.0/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerRetrofitErrorHandler.java#L52) . That’s been done in orca, so there isn’t any code left to throw RetrofitError exceptions. If your instance of Spinnaker has plugins or other code that still relies on RetrofitError, adjust it to use SpinnakerRetrofitErrorHandler by adding, e.g.:
100
+
101
+
[RetrofitExceptionHandler](https://github.com/spinnaker/orca/pull/4716) has been removed from Orca as part of the ongoing effort to upgrade to Retrofit2. One step in this upgrade is to adjust error handling code, replacing `RetrofitError` (a Retrofit1 class not available in Retrofit2) with `SpinnakerServerException` ([SpinnakerServerException.java](https://github.com/spinnaker/kork/blob/v7.231.0/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerServerException.java)) and its children, using `SpinnakerRetrofitErrorHandler` ([SpinnakerRetrofitErrorHandler.java](https://github.com/spinnaker/kork/blob/v7.231.0/kork-retrofit/src/main/java/com/netflix/spinnaker/kork/retrofit/exceptions/SpinnakerRetrofitErrorHandler.java#L52)).
102
+
103
+
This has been completed in Orca, so there’s no longer any code that throws `RetrofitError` exceptions. If your instance of Spinnaker has plugins or other code that still relies on `RetrofitError`, adjust it to use `SpinnakerRetrofitErrorHandler` by adding:
to the `RestAdapter.Builder` call, and change the corresponding exception handling. See here(https://github.com/spinnaker/orca/blob/9898ae1a673f0481abe082f4b681dbc314682c3f/orca-front50/src/main/groovy/com/netflix/spinnaker/orca/front50/config/Front50Configuration.groovy#L82) for an example.
108
+
109
+
to the `RestAdapter.Builder` call, and change the corresponding exception handling. See [this example](https://github.com/spinnaker/orca/blob/9898ae1a673f0481abe082f4b681dbc314682c3f/orca-front50/src/main/groovy/com/netflix/spinnaker/orca/front50/config/Front50Configuration.groovy#L82).
110
+
111
+
112
+
83
113
### Label Selector Support in Deploy Manifest Stages
84
-
https://github.com/spinnaker/clouddriver/pull/6220 adds support for label selectors in deploy manifest stages.
85
114
86
-
For example:
87
-
'''json
115
+
[Label selector support](https://github.com/spinnaker/clouddriver/pull/6220) has been added to deploy manifest stages. For example:
116
+
117
+
```json
88
118
"labelSelectors": {
89
119
"selectors": [
90
120
{
91
121
"kind": "EQUALS",
92
122
"key": "my-label-key",
93
123
"values": [
94
124
"my-value"
95
-
],
125
+
]
96
126
}
97
127
]
98
128
}
99
-
'''
129
+
```
130
+
131
+
For more details, refer to [Kubernetes label overview](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) and [KubernetesSelector](https://github.com/spinnaker/clouddriver/blob/ad1a8efc214264276e3a22d30af179b825145cab/clouddriver-kubernetes/src/main/java/com/netflix/spinnaker/clouddriver/kubernetes/security/KubernetesSelector.java#L59). Multiple selectors combine with AND (must all be satisfied).
132
+
133
+
**Important Note:**
134
+
`kubectl replace` does not support label selectors, so KubernetesDeployManifestOperation throws an exception if a deploy manifest stage specifies (non-empty) label selectors and has a manifest with the `strategy.spinnaker.io/replace: "true"` annotation.
135
+
136
+
It’s possible that none of the manifests may satisfy the label selectors. In that case, a new pipeline configuration property named `allowNothingSelected` determines the behavior:
137
+
138
+
- If `false` (the default), KubernetesDeployManifestOperation throws an exception.
139
+
- If `true`, the operation succeeds even though nothing was deployed.
100
140
101
-
See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ and KubernetesSelector(https://github.com/spinnaker/clouddriver/blob/ad1a8efc214264276e3a22d30af179b825145cab/clouddriver-kubernetes/src/main/java/com/netflix/spinnaker/clouddriver/kubernetes/security/KubernetesSelector.java#L59) for more. Multiple selectors combine with AND (must all be satisfied).
102
-
Note that ```kubectl replace``` doesn’t support label selectors, so KubernetesDeployManifestOperation throws an exception if a deploy manifest stage that specifies (non-empty) label selectors has a manifest with a ```strategy.spinnaker.io/replace: "true"``` annotation.
103
-
It’s possible that none of the manifests may satisfy the label selectors. In that case, a new pipeline configuration property named ```allowNothingSelected``` determines the behavior. If false (the default), KubernetesDeployManifestOperation throws an exception. If true, the operation succeeds even though nothing was deployed.
104
141
105
142
### The maxExpressionLength to set maximum expression length for SpEL evaluation
106
143
Spring Expression Language (SpEL) has a default limit of 10,000 characters. Springframework provides the feature to configure the limit. This feature allows to configure the limit of characters for SpEL expressions.
0 commit comments