1. Overview
Upgrading to a new version of Develocity provides your organization with new features, improved functionality, and security updates. This page provides the steps to upgrade Develocity from version 2025.1 to version 2025.2.
If you are upgrading from a version older than 2025.1, refer to the 2025.1 Upgrade Guide and address all changes before proceeding with this guide. |
2. Changes
This section details specific changes introduced in this release that require your attention or action during the upgrade process. Review each item carefully to ensure a smooth and successful transition.
2.1. AWS EKS Pod Identity Authentication
The Pod Identity authentication can now be used to authenticate AWS services like S3, RDS, etc. AWS EKS Pod Identity provides a way to manage IAM permissions for applications running in your EKS clusters by associating IAM roles directly with Kubernetes service accounts, similar to IRSA. IRSA will continue to be supported.
No immediate action is required, but you can start using this feature to simplify your AWS service authentication. See values file example for more details on how to configure Pod Identity in your values.yaml
file.
2.2. Alpine images are no longer available
The Alpine-based container images are no longer available in the Develocity distribution.
Usage of Alpine images has been deprecated since 2024.3.
You will get an error message if you try to use the Alpine images.
global:
hostname: develocity.example.com
internal:
useAlpineAlternativeImages: true
Error message:
Develocity no longer supports "alternative Alpine images". If you are using it, please contact support, who will help you to migrate.
Please contact Develocity customer support before trying to switch it off. If you don’t follow the right process, you may end up with a corrupted database.
2.3. Pods run with readOnlyRootFilesystem
enabled
The readOnlyRootFilesystem
setting is now enabled by default for all Pods in the Develocity deployment. This enhances security by preventing unauthorized modifications to the root filesystem of the Pods. No action is required.
2.4. JVM heap allocation is done automatically for cluster deployments
The JVM heap allocation is now automatically configured based on the available resources in the Kubernetes cluster. This change simplifies the configuration process and optimizes resource usage.
The JVM Heap memory settings in the unattended configuration are ignored for cluster deployments.

No immediate action is required. We recommend reviewing the resource settings in your values.yaml
file to ensure they align with your resource allocation strategy.
2.5. Ingress rules are adjusted to match the underlying protocol and simplify annotation on Ingress and Service
Develocity and Edge nodes connect using the gRPC protocol. Nothing needs to be done unless you are using Edge nodes with Bazel integration. If that’s your scenario, configuring the gRPC connection might require specific attention, so please contact the Develocity customer support for assistance.
2.6. Non-critical components are resource-restricted when running in standalone mode
When running in standalone mode, non-critical components (metrics, monitoring, operator, proxy) are resource-restricted. This change ensures that non-critical components do not consume excessive resources, improving overall system stability and performance.
This change is applied automatically. The default resource requests and limits are usually enough for standard deployments. However, if you observe issues related to those resources, you may need to adjust the settings. Below you can find an example for the operator; please consult the values file example for more details on other components' configuration.
operator:
resources:
requests:
cpu: 1
memory: 512Mi
limits:
cpu: 2
memory: 1024Mi
2.7. Develocity supports a broader version range for k8s and helm during installation
The version check for Kubernetes and Helm during the installation process has been relaxed. This allows for a wider range of versions to be compatible with Develocity, making it easier to upgrade without strict version constraints. No action is required.
2.8. Pod Security Context Override
Users can now define their own Pod Security context. This change provides greater flexibility in configuring Pod Security, enabling compliance with stricter security policies (e.g., OpenShift’s restricted-v2
SCC) and better integration into environments that utilize arbitrary user IDs for containers. If you require a custom Pod Security context or are deploying into an environment like OpenShift with restricted-v2
SCC, you can now define your desired securityContext
. See the Kubernetes Security Context for more details. For information on OpenShift Security Context Constraints (SCC), refer to the OpenShift documentation.
2.8.1. OpenShift restricted-v2
SCC prior to Develocity 2025.1
The non-root
SCC was introduced in 2025.1. Our recommendation is not to migrate to the 2025.1 version but to directly upgrade to the 2025.2 version. To continue using the restricted-v2
SCC, you must remove the deprecated global.openshiftInstallation: true
setting from your values.yaml
, and configure the securityContext
to comply with the requirements of the restricted-v2
SCC. You must ensure that the securityContext
does not contain runAsUser
, runAsGroup
, and fsGroup
. Since setting security context overrides the default values, you should set the fsGroupChangePolicy
to OnRootMismatch
while omitting the other fields.
Please update your values.yaml
with the following diff:
global:
- openshiftInstallation: true
+ securityContext:
+ fsGroupChangePolicy: OnRootMismatch
2.8.2. OpenShift with non-root
SCC introduced in Develocity 2025.1
No action is required if you are running Develocity on OpenShift with the non-root
SCC introduced in Develocity 2025.1. We don’t recommend switching to the restricted-v2
SCC, as it may require additional configuration and cause compatibility issues with existing deployments. Contact Develocity customer support for more information.
2.9. Configure schema management for Develocity Reporting via AWS Athena
The creation and maintenance of the schema used by Develocity Reporting via AWS Athena can now be managed entirely by Develocity. Once configured, Develocity will ensure that the right version of the schema, along with any updates, is set up for AWS Athena. This greatly reduces the effort needed to set up and maintain Develocity Reporting. The installation manual provides further details on how to enable this feature.
2.10. Migrating to Develocity Edge from an existing Build Cache Node installation
Following the announcement of the Build Cache Node deprecation starting with the Develocity 2027.1 release, we strongly recommend that users of the Develocity Build Cache Node start migrating their deployments to Develocity Edge. Develocity Edge serves the same purpose as a remote build caching service for your build agents, but is designed to be simpler and more robust to operate. The Develocity Edge User Manual migration guide provides all the information you need to migrate existing Build Cache Nodes to Develocity Edge.
3. Compatibility Table
The versions below were confirmed to work with Develocity 2025.2.
Software |
Minimum version |
Latest version |
Kubernetes |
1.28 |
1.33 |
Helm |
3.13 |
3.18 |
PostgreSQL |
14 |
17 |
Check the compatibility matrix for a full overview of the version compatibility of Develocity with related components.
4. User-Managed Database
For major version upgrades (for example, 2025.1 to 2025.2), if data is stored in a user-managed database and superuser credentials are not supplied, the database setup script must be run before the upgrade.
The corresponding script for Develocity 2025.2 can be downloaded via the following link
Depending on the size of your database, it may take from a few minutes to up to hours.
It’s strongly recommend to make a database backup before upgrading. Upgrading Develocity irreversibly changes the database schema.
|
5. Standalone
5.1. Online
5.1.1. Upgrade K3s
Running the following command will:
-
Download the latest k3s binary supported by Develocity 2025.2.
-
Restart the k3s service.
$ curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=v1.33 sh -
For more information, see the official K3s upgrade documentation.
At this point, you still run the old version of Develocity.
Accessing the application and verifying it receives new Build Scan data is the easiest method. |
5.1.2. Upgrade Helm
Running the following commands will:
-
Download the Helm installation script.
-
Set the permissions of the script. Only the owner has read, write, and execute permissions.
-
Install the Helm version specified with the
-v
flag.
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh -v v3.18.3
For more information, see the official Helm installation documentation.
Verify that helm
is installed and working:
$ helm version
5.1.3. Upgrade Develocity
Update repository
First, run the helm repo update gradle
command to update locally available charts:
$ helm repo update gradle
Adjust values.yaml configuration
Adjust your values.yaml
configuration file. You can find a detailed list of required changes in the Required Changes section.
You can discover your current configuration by running the following command:
$ helm get values \
--namespace develocity \(1)
ge-standalone \(2)
> values.yaml (3)
1 | The namespace used to install Develocity. |
2 | Release name. |
3 | Output file. |
Adjust unattended configuration
If you are using unattended configuration, export the current configuration using the Admin UI. Then adjust the exported configuration according to the Required Changes section.
You can validate your unattended configuration against the schema by using the Develocity command line tool (develocityctl):
$ develocityctl config-file validate unattended-configuration.yaml
If your unattended configuration is embedded in the values.yaml
file, you can validate it with the following command:
$ cat values.yaml | yq '.global.unattended.configuration' | develocityctl config-file validate -
Unattended configuration is versioned. If an older version is provided, the application migrates the config to the latest version automatically. If you use version control, it’s recommended that you export your unattended configuration after the upgrade and store the latest version in your repository. See Migrating Unattended Configuration for details. |
Decide on the upgrade command
You may need to run different upgrade commands depending on your configuration changes.
You can find recommendations in the Upgrade Command Explained section.
Use dry-run
to verify the upgrade
Before upgrading, you can use the --dry-run
flag to verify the upgrade process.
This will show you the changes that would be made without actually applying them.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
--version 2025.2.0 \
ge-standalone \
gradle/gradle-enterprise-standalone \
--dry-run
The actual command may differ depending on the outcome from the previous step. |
If the --dry-run validates syntax, verifies the chart structure, validates your configuration with schema, and checks the generated Kubernetes manifests for errors. However, it won’t detect issues like typos in optional fields or guarantee the application configuration will function correctly. |
Execute the upgrade
Remove --dry-run
from the command above and execute the upgrade.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
--version 2025.2.0 \
ge-standalone \
gradle/gradle-enterprise-standalone
5.2. Airgap
Upgrading an airgap instance of Develocity requires downloading the latest version of charts, transferring them to the host machine, and installing them. Downloading an update for Develocity requires your license file.
If you use helm template (or --reset-values ), you must specify all installation options again, including files. You must transfer these files to the machine used to access the cluster. |
5.2.1. Download Required Files
Download K3s
Running the following commands will:
-
Download the K3s binary.
-
Download the K3s airgap image.
-
Download the K3s installation script.
Download the K3s binary:
$ curl -LO https://github.com/k3s-io/k3s/releases/download/v1.33.2+k3s1/k3s
Download the K3s airgap image:
$ curl -LO \
https://github.com/k3s-io/k3s/releases/download/v1.33.2%2Bk3s1/k3s-airgap-images-amd64.tar.gz
Download the K3s installation script:
$ curl -L -o install_k3s.sh https://get.k3s.io
If you are running Red Hat Enterprise Linux with SELinux enabled, download the K3s policy package:
SELinux policy package download
Lookup the latest version of the K3s SELinux Policy package:
$ K3S_SELINUX_DOWNLOAD_URL=$(curl -s https://api.github.com/repos/k3s-io/k3s-selinux/releases/latest | jq -r '.assets[] | select( .name | endswith("el8.noarch.rpm") ) | .browser_download_url') && echo $K3S_SELINUX_DOWNLOAD_URL
You can view the versions available and find the download links on the K3s SELinux releases page. |
Then download it:
$ curl -L -o k3s-selinux.el8.noarch.rpm $K3S_SELINUX_DOWNLOAD_URL
Download Helm
Download the Helm binary:
$ curl -L -o helm-linux-amd64.tar.gz https://get.helm.sh/helm-v3.18.3-linux-amd64.tar.gz
Download Airgap Bundle
Save your Develocity license to the transfer directory as develocity.license
.
Download and verify the airgap bundle:
$ curl -LOJd @develocity.license \
https://registry.gradle.com/airgap/gradle-enterprise-standalone-2025.2-bundle.tar.gz
$ curl -LOJd @develocity.license \
https://registry.gradle.com/airgap/gradle-enterprise-standalone-2025.2-bundle.tar.gz.sha256
$ sha256sum -c gradle-enterprise-standalone-2025.2-bundle.tar.gz.sha256
If the checksum verification fails, check the contents of the downloaded files for error messages.
If the error message indicates that your license is invalid/expired/not airgap enabled, you will need to request an updated license file by contacting your customer success representative.
Instead of running the above curl commands, you can download the airgap bundle by navigating to https://registry.gradle.com/airgap in your browser and following the instructions on the page. |
5.2.2. Transfer Files
Check that the transfer directory has the following files (additional files are fine):
-
k3s-airgap-images-amd64.tar.gz
-
k3s
-
install_k3s.sh
-
k3s-selinux.el8.noarch.rpm
(only if you are running SELinux) -
helm-linux-amd64.tar.gz
-
gradle-enterprise-standalone-2025.2-bundle.tar.gz
Once you’ve verified that you have the required files, transfer them to the host where you are installing Develocity.
5.2.3. Import the New Container Images
The new Develocity images must be imported into K3s’s embedded container registry.
Run the following commands to:
-
Unpack the airgap bundle.
-
Imports Develocity’s images into K3s.
$ tar zxvf gradle-enterprise-standalone-2025.2.0-bundle.tar.gz
$ sudo k3s ctr images import gradle-enterprise-standalone-2025.2.0-images.tar
5.2.4. Upgrade K3s
Follow these instructions on the host where you install Develocity with your transferred files in the current directory.
If you are running Red Hat Enterprise Linux with SELinux enabled, first install the necessary policy packages:
SELinux Policy installation
Install the container-selinux
package
Install the K3s SELinux Policy package you downloaded:
$ sudo yum install -y k3s-selinux.el9.noarch.rpm
Install K3s and make it available to the current user:
$ sudo mkdir -p /var/lib/rancher/k3s/agent/images/ && \
sudo cp k3s-airgap-images-amd64.tar.gz /var/lib/rancher/k3s/agent/images/
$ (cd /var/lib/rancher/k3s/agent/images/ && sudo gunzip -f k3s-airgap-images-amd64.tar.gz)
$ sudo cp k3s /usr/local/bin && sudo chmod a+rx /usr/local/bin/k3s
$ sudo chmod a+rx ./install_k3s.sh && INSTALL_K3S_SKIP_DOWNLOAD=true ./install_k3s.sh
$ sudo chown $UID /etc/rancher/k3s/k3s.yaml && \
mkdir -p "${HOME}/.kube" && \
ln -sf /etc/rancher/k3s/k3s.yaml "${HOME}/.kube/config"
Verify that you can interact with the K3s cluster:
$ kubectl get namespace
NAME STATUS AGE default Active 1h kube-system Active 1h kube-public Active 1h kube-node-lease Active 1h develocity Active 1h
At this point, you still run the old version of Develocity.
Accessing the application and verifying it receives new Build Scan data is the easiest method. |
5.2.5. Upgrade Helm
Follow these instructions on the host where you are installing Develocity with your transferred files present in the current directory.
Run the following commands to unpack and install Helm:
$ tar -zxvf helm-linux-amd64.tar.gz && sudo mv linux-amd64/helm /usr/local/bin/helm
Verify that helm
is installed and working:
$ helm version
5.2.6. Upgrade Develocity
Adjust values.yaml configuration
Adjust your values.yaml
configuration file. You can find a detailed list of required changes in the Required Changes section.
You can discover your current configuration by running the following command:
$ helm get values \
--namespace develocity \(1)
ge-standalone \(2)
> values.yaml (3)
1 | The namespace used to install Develocity. |
2 | Release name. |
3 | Output file. |
Adjust unattended configuration
If you are using unattended configuration, export the current configuration using the Admin UI. Then adjust the exported configuration according to the Required Changes section.
You can validate your unattended configuration against the schema by using the Develocity command line tool (develocityctl):
$ develocityctl config-file validate unattended-configuration.yaml
If your unattended configuration is embedded in the values.yaml
file, you can validate it with the following command:
$ cat values.yaml | yq '.global.unattended.configuration' | develocityctl config-file validate -
Unattended configuration is versioned. If an older version is provided, the application migrates the config to the latest version automatically. If you use version control, it’s recommended that you export your unattended configuration after the upgrade and store the latest version in your repository. See Migrating Unattended Configuration for details. |
Decide on the upgrade command
You may need to run different upgrade commands depending on your configuration changes.
You can find recommendations in the Upgrade Command Explained section.
Use dry-run
to verify the upgrade
Before upgrading, you can use the --dry-run
flag to verify the upgrade process.
This will show you the changes that would be made without actually applying them.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
ge-standalone \
gradle-enterprise-standalone-2025.2.0.tgz \
--dry-run
The actual command may differ depending on the outcome from the previous step. |
If the --dry-run validates syntax, verifies the chart structure, validates your configuration with schema, and checks the generated Kubernetes manifests for errors. However, it won’t detect issues like typos in optional fields or guarantee the application configuration will function correctly. |
Execute the upgrade
Remove --dry-run
from the command above and execute the upgrade.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
ge-standalone \
gradle-enterprise-standalone-2025.2.0.tgz
6. Kubernetes
Kubernetes installation type is for advanced users. This section assumes that you have a base knowledge of Kubernetes.
6.1. Upgrading With Multiple Replicas
If you have configured more than one replica, you must scale the replicas down to one before upgrading to avoid having mixed versions running simultaneously.
Before applying the upgrade, run the following command to scale the application down to one replica. |
6.1.1. Scale Down the Application to One Replica
$ helm upgrade \
--namespace develocity \
--reuse-values \
--set=global.scaling.replicas=1 \
--version «PREVIOUSLY_DEPLOYED_VERSION» \(1)
ge
gradle/gradle-enterprise (2)
1 | «PREVIOUSLY_DEPLOYED_VERSION» is the running version of Develocity (e.g. 2025.1.5), not the version you are upgrading to. |
2 | Replace gradle/gradle-enterprise with gradle-enterprise-2025.1.5.tgz for airgap installations. |
6.1.3. Scale up the Application to N Replicas
Before you scale up the application, ensure the upgrade went well and the application is working. |
$ helm upgrade \
--namespace develocity \
--reuse-values \
--set=global.scaling.replicas=N \(1)
--version «NEWLY_DEPLOYED_VERSION» \(2)
ge
gradle/gradle-enterprise (3)
1 | N is the number of replicas you want to scale up to. |
2 | «NEWLY_DEPLOYED_VERSION» is the version of Develocity you just upgraded to (e.g. 2025.2.0). |
3 | Replace gradle/gradle-enterprise with gradle-enterprise-2025.2.0.tgz for airgap installations. |
6.2. Online
6.2.1. Upgrade Helm
Running the following commands will:
-
Download the Helm installation script.
-
Set the permissions of the script. Only the owner has read, write, and execute permissions.
-
Install the Helm version specified with the
-v
flag.
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh -v v3.18.3
For more information, see the official Helm installation documentation.
Verify that helm
is installed and working:
$ helm version
6.2.2. Upgrade Develocity
Update repository
First, run the helm repo update gradle
command to update locally available charts:
$ helm repo update gradle
Adjust values.yaml configuration
Adjust your values.yaml
configuration file. You can find a detailed list of required changes in the Required Changes section.
You can discover your current configuration by running the following command:
$ helm get values \
--namespace develocity \(1)
ge \(2)
> values.yaml (3)
1 | The namespace used to install Develocity. |
2 | Release name. |
3 | Output file. |
Adjust unattended configuration
If you are using unattended configuration, export the current configuration using the Admin UI. Then adjust the exported configuration according to the Required Changes section.
You can validate your unattended configuration against the schema by using the Develocity command line tool (develocityctl):
$ develocityctl config-file validate unattended-configuration.yaml
If your unattended configuration is embedded in the values.yaml
file, you can validate it with the following command:
$ cat values.yaml | yq '.global.unattended.configuration' | develocityctl config-file validate -
Unattended configuration is versioned. If an older version is provided, the application migrates the config to the latest version automatically. If you use version control, it’s recommended that you export your unattended configuration after the upgrade and store the latest version in your repository. See Migrating Unattended Configuration for details. |
Decide on the upgrade command
You may need to run different upgrade commands depending on your configuration changes.
You can find recommendations in the Upgrade Command Explained section.
Use dry-run
to verify the upgrade
Before upgrading, you can use the --dry-run
flag to verify the upgrade process.
This will show you the changes that would be made without actually applying them.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
--version 2025.2.0 \
ge \
gradle/gradle-enterprise \
--dry-run
The actual command may differ depending on the outcome from the previous step. |
If the --dry-run validates syntax, verifies the chart structure, validates your configuration with schema, and checks the generated Kubernetes manifests for errors. However, it won’t detect issues like typos in optional fields or guarantee the application configuration will function correctly. |
Execute the upgrade
Remove --dry-run
from the command above and execute the upgrade.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
--version 2025.2.0 \
ge \
gradle/gradle-enterprise
6.3. Airgap
Upgrading an airgap instance of Develocity requires downloading the latest version of charts, transferring them to the host machine, and installing them. Downloading an update for Develocity requires your license file.
If you use helm template (or --reset-values ), you must specify all installation options again, including files. You must transfer these files to the machine used to access the cluster. |
6.3.1. Download Required Files
Download Helm
Download the Helm binary:
$ curl -L -o helm-linux-amd64.tar.gz https://get.helm.sh/helm-v3.18.3-linux-amd64.tar.gz
Download Airgap Bundle
Save your Develocity license to the transfer directory as develocity.license
.
Download and verify the airgap bundle:
$ curl -LOJd @develocity.license \
https://registry.gradle.com/airgap/gradle-enterprise-2025.2-bundle.tar.gz
$ curl -LOJd @develocity.license \
https://registry.gradle.com/airgap/gradle-enterprise-2025.2-bundle.tar.gz.sha256
$ sha256sum -c gradle-enterprise-2025.2-bundle.tar.gz.sha256
If the checksum verification fails, check the contents of the downloaded files for error messages.
If the error message indicates that your license is invalid/expired/not airgap enabled, you will need to request an updated license file by contacting your customer success representative.
Instead of running the above curl commands, you can download the airgap bundle by navigating to https://registry.gradle.com/airgap in your browser and following the instructions on the page. |
6.3.2. Transfer Files
Check that the transfer directory has the following files (additional files are fine):
-
helm-linux-amd64.tar.gz
-
gradle-enterprise-2025.2-bundle.tar.gz
Once you’ve verified that you have the required files, transfer them to the host where you are installing Develocity.
6.3.3. Upload Images
Follow these instructions on the host with connectivity to the internal container registry with your transferred files present in the current directory.
You must be logged in to the registry before running these commands. |
Run the following commands to unpack the bundle and upload the images to the internal container registry:
$ tar zxvf gradle-enterprise-2025.2-bundle.tar.gz
$ ./upload-images.sh --registry=registry.example.com/gradle-enterprise
6.3.4. Upgrade Helm
Follow these instructions on the host with connectivity to the Kubernetes cluster with your transferred files present in the current directory.
Run the following commands to unpack and install Helm:
$ tar -zxvf helm-linux-amd64.tar.gz && sudo mv linux-amd64/helm /usr/local/bin/helm
Verify that helm
is installed and working:
$ helm version
6.3.5. Upgrade Develocity
Adjust values.yaml configuration
Adjust your values.yaml
configuration file. You can find a detailed list of required changes in the Required Changes section.
You can discover your current configuration by running the following command:
$ helm get values \
--namespace develocity \(1)
ge \(2)
> values.yaml (3)
1 | The namespace used to install Develocity. |
2 | Release name. |
3 | Output file. |
Adjust unattended configuration
If you are using unattended configuration, export the current configuration using the Admin UI. Then adjust the exported configuration according to the Required Changes section.
You can validate your unattended configuration against the schema by using the Develocity command line tool (develocityctl):
$ develocityctl config-file validate unattended-configuration.yaml
If your unattended configuration is embedded in the values.yaml
file, you can validate it with the following command:
$ cat values.yaml | yq '.global.unattended.configuration' | develocityctl config-file validate -
Unattended configuration is versioned. If an older version is provided, the application migrates the config to the latest version automatically. If you use version control, it’s recommended that you export your unattended configuration after the upgrade and store the latest version in your repository. See Migrating Unattended Configuration for details. |
Decide on the upgrade command
You may need to run different upgrade commands depending on your configuration changes.
You can find recommendations in the Upgrade Command Explained section.
Use dry-run
to verify the upgrade
Before upgrading, you can use the --dry-run
flag to verify the upgrade process.
This will show you the changes that would be made without actually applying them.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
ge \
gradle-enterprise-2025.2.0.tgz \
--dry-run
The actual command may differ depending on the outcome from the previous step. |
If the --dry-run validates syntax, verifies the chart structure, validates your configuration with schema, and checks the generated Kubernetes manifests for errors. However, it won’t detect issues like typos in optional fields or guarantee the application configuration will function correctly. |
Execute the upgrade
Remove --dry-run
from the command above and execute the upgrade.
For example (if no changes were required):
$ helm upgrade \
--namespace develocity \
--reuse-values \
ge \
gradle-enterprise-2025.2.0.tgz
7. Upgrade Command Explained
The helm upgrade
command is used to upgrade an existing release. It has several flags that control how the values are used for the upgrade. Specifically, the —-reuse-values
and —-reset-values
flags modify the behavior around the values passed to the upgrade.
-
--reuse-values
: Keeps existing values and allows the setting of additional values. -
--reset-values
: Discards any previously set values and requires all values to be set.
Both flags give you fine-grained control over how values are managed during an upgrade, depending on whether you want to preserve or reset your previous configurations.
For more information about the helm upgrade
command, refer to the official Helm documentation.
7.1. No Changes
Use case: You want to upgrade but keep all the values from the current deployment without any modifications.
This is useful to ensure that existing values remain unchanged during an upgrade.
This is the most straightforward option if no configuration needs to be modified.
$ helm upgrade \
--namespace develocity \(1)
--reuse-values \(2)
--version 2025.2.0 (3)
ge \(4)
gradle/gradle-enterprise \(5)
1 | The namespace used to install Develocity |
2 | Reuse the configuration from the current deployment without any modifications |
3 | The Develocity version. If omitted, the latest version will be installed |
4 | The release name |
5 | The chart name (or archive if using a local chart) |
7.2. Simple Changes
Use case: You have an existing configuration and want to update the license value and disable ingress SSL, but keep the rest of the configuration.
$ helm upgrade \
--namespace develocity \(1)
--reuse-values \(2)
--set-file global.license.file=./develocity.license \(3)
--set ingress.ssl.enabled=false \(4)
--version 2025.2.0 \(5)
ge \(6)
gradle/gradle-enterprise (7)
1 | The namespace used to install Develocity |
2 | Reuse the configuration from the current deployment without any modifications |
3 | The path to the new license file |
4 | Disable the Ingress SSL |
5 | The Develocity version. If omitted, the latest version will be installed |
6 | The release name |
7 | The chart name (or archive if using a local chart) |
This method works correctly only if you add new values or override existing values.
It won’t remove any previously set values, so that you may have a corrupted configuration. |
Example:
objectStorage:
type: s3
s3:
bucket: example-bucket
region: example-aws-region-1
credentials:
source: environment
objectStorage:
type: s3
s3:
bucket: example-bucket
region: example-aws-region-1
credentials:
type: instanceProfile
Upgrade command:
$ helm upgrade \
--namespace develocity \
--reuse-values \(1)
--values new-config.yaml \(2)
--version 2025.2.0 \
ge \
gradle/gradle-enterprise
1 | Reuse the configuration from the current deployment without any modifications |
2 | Additionally, apply the partial configuration from the new-config.yaml file |
We expect the source: environment
to be removed and the type: instanceProfile
to be added, but the result is different:
objectStorage:
type: s3
s3:
bucket: example-bucket
region: example-aws-region-1
credentials:
source: environment
type: instanceProfile
The application throws an error since the old configuration block is no longer supported, but it’s still present.
UPGRADE FAILED: execution error at (gradle-enterprise/templates/enterprise-app/deployment.yaml:3:3): The `objectStorage.s3.credentials.source` attribute was removed. Please use `objectStorage.s3.credentials.type instead.
The old attribute isn’t ignored during the upgrade process to quickly detect misconfigurations. |
7.3. Complex Changes
The Helm will use the default values defined in the chart during the upgrade, and any custom values previously set (whether through |
Use case: You want to upgrade to Develocity 2025.2 and adjust the Object Storage configuration (see the example above).
$ helm upgrade \
--namespace develocity \(1)
--reset-values \(2)
--values values.yaml \(3)
--set-file global.license.file=./develocity.license \(4)
--version 2025.2.0 (5)
ge \(6)
gradle/gradle-enterprise \(7)
1 | The namespace used to install Develocity |
2 | Discard old configuration settings |
3 | The path to the entire configuration file. No settings are preserved from the previous configuration |
4 | The path to the Develocity license file (if not included in values.yaml) |
5 | The Develocity version. If omitted, the latest version will be installed |
6 | The release name |
7 | The chart name (or archive if using a local chart) |