This manual covers the installation of Develocity into a single host.
Develocity is a Kubernetes-based application, distributed as a Helm chart. Helm is a package manager for Kubernetes applications. The standalone installation of Develocity described in this manual involves installing the K3s lightweight Kubernetes distribution onto a host, then using Helm to install Develocity in the K3s instance on that host. Helm manages all Develocity components.
For instructions on installing Develocity on a host without public network connectivity, see Airgap Installation.
Prerequisites
1. A Develocity License
If you have purchased Develocity or started a trial, you should already have a license file called develocity.license
. Otherwise, you may request a Develocity trial license.
Host Requirements
This section outlines the host requirements for the installation.
1. Operating system
We focus our support efforts on Ubuntu 18.04/20.04/22.04/24.04, RHEL 8/9, and Debian 11/12. Develocity is expected to work on most modern Linux systems.
2. K3s
K3s needs several ports to be accessible from the host.
Protocol | Port |
---|---|
TCP |
6443 |
TCP |
10250 |
UDP |
8472 |
While these ports don’t need to be accessible from outside the host machine, K3s may access them using a different network interface or non-localhost IP.
RHEL / CentOS
There are some additional requirements for RHEL or CentOS installations. You must disable the nm-cloud-setup.service
and nm-cloud-setup.timer
services.
Disabling firewalld
is recommended, too. If you can’t, ensure that the ports mentioned above are accessible and enable IP address masquerading. This can be done with the following command:
$ firewall-cmd --add-masquerade --permanent
For more details on IP address masquerading, see RedHat’s docs. For more details on the RHEL / CentOS requirements, see K3s’s docs. |
3. CPU & Memory
The minimum installation requirements are:
-
Quad-core 2GHz or better CPU (amd64 architecture)
-
24 GB free RAM
4. Database
By default, Develocity stores its data in a PostgreSQL database that is run as part of the application itself, with data being stored in a directory mounted on its host machine.
Develocity installations have two database options:
-
An embedded database that is highly dependent on disk performance.
-
A user-managed database that is compatible with PostgreSQL 12, 13, or 14.
Using PGBouncer with a user managed database is not supported. |
5. Storage
In addition to the database, Develocity needs some storage capacity for configuration files, logs, build cache artifacts, and database backups. These storage requirements apply regardless of which type of database you use, although the necessary size varies based on the database type. To simplify managing disk space, Gradle recommends mounting a different persistent storage volume for Develocity data, logs, and backups. See Storage settings in the Standalone Helm Chart Configuration Guide for configuration details.
The recommended minimum capacities for the persistent volumes are:
Description | Size in GB |
---|---|
Data |
250 |
Backups |
250 |
Logs |
10 |
If you are producing many Build Scans in a day (> 1GB) or intend to retain Build Scans for long periods of time (30 days+) you may want to consider provisioning more storage.
If your storage class does not allow expanding volumes, you should also consider preparing for future data growth by adding additional disk capacity upfront.
Capacity
The minimum capacity required for the Develocity installation directory when configured to use the embedded database is 250 GB.
The minimum capacity required for the Develocity installation directory when configured to use a user-managed database case is 30 GB.
It is recommended to create a specific volume for the installation directory to avoid consuming the space required for Develocity, and to ensure at least 10% of the volume’s space is free at all times.
The following are additional disk capacity requirements:
Location | Storage Size |
---|---|
|
1 GB |
|
30 GB |
Performance
For production workloads, storage volumes should exhibit SSD-class disk performance of at least 3000 IOPS (input/output operations per second). Most NFS based storage or desktop-class, non-SSD disk drives do not provide this level of performance.
Disk performance has a significant impact on Develocity performance. Develocity is not compatible with network-based storage solutions due to limitations of latency and data consistency. |
Object storage
Develocity administrators can store Build Scan data in an object storage service, such as Amazon S3, Google Cloud Platform, and Microsoft Azure. This can help performance in high-traffic installations by reducing the load on the database. Object storage services offer performance and cost advantages compared to database storage. If you deploy Develocity to a cloud provider or have an available internal S3-compatible object store, Gradle recommends using object-based storage for your installation. See Build Scan object storage in the Develocity Administration Manual for a description of the benefits and limitations.
6. Network Connectivity
Develocity requires network connectivity for periodic license validation.
An installation of Develocity will not start if it cannot connect to both registry.gradle.com and harbor.gradle.com . |
It is strongly recommended that production installations of Develocity are configured to use HTTPS with a trusted certificate.
Verify that your DNS points to your Develocity instance.
ge.example.com A 12.34.56.78
You should verify that your DNS record works correctly before installing Develocity by running dig ge.example.com
or ping ge.example.com
in a console window.
For Airgap installations, you will need a temporary machine that can access the internet to download installation files. You will need to transfer those files from the machine to your Develocity host of choice.
Installation
In this section you will install Develocity on your host.
For those installing Develocity on a host without public network connectivity, please follow the Airgap installation instructions.
1. Copy Files
Makes sure that your Develocity license file is available on your host machine.
2. Install K3s
Install K3s and make it available to the current user:
$ curl -sfL https://get.k3s.io | 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
The expected output should be similar to this:
NAME STATUS AGE default Active 1h kube-system Active 1h kube-public Active 1h kube-node-lease Active 1h
For more information on K3s installation, see the K3s Quick-Start Guide and K3s Installation. |
3. Install Helm
Develocity requires Helm version 3.5.x (or later) to install.
It is recommended to use the latest version available as this will have all known security vulnerabilities addressed. This document describes the maximum version skew supported between Helm and Kubernetes.
For more information on installing Helm (including alternate installation approaches), see Installing Helm. |
Install Helm with the following command:
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
4. Prepare a Helm values file
Installation options for Develocity are depicted in a Helm values file.
Follow the instructions in the Standalone Helm Chart Configuration Guide and return to this document with a complete values.yaml
file.
5. Install the Helm chart
Develocity is distributed from the Develocity Helm repository.
Add the Develocity Helm repository to your Helm installation and fetch its contents into the local cache:
$ helm repo add gradle https://helm.gradle.com/
$ helm repo update gradle
Verify that the Develocity chart is accessible:
$ helm search repo gradle-enterprise
This will report the latest versions available for the two Develocity charts:
NAME CHART VERSION APP VERSION DESCRIPTION gradle/gradle-enterprise 2024.1.8 2024.1.8 Official Develocity chart for Kubernetes cluster installations gradle/gradle-enterprise-standalone 2024.1.8 2024.1.8 Official Develocity chart for standalone installations
This guide covers installation of the gradle-enterprise-standalone chart. Installation of the gradle-enterprise chart is covered in the Self-Hosted Kubernetes Installation Guide. |
6. Install Develocity
Install Develocity by running:
$ helm install \
--create-namespace --namespace develocity \(1)
ge-standalone \(2)
gradle/gradle-enterprise-standalone \(3)
--values values.yaml \(4)
--set-file global.license.file=./develocity.license (5)
1 | This example uses develocity as the namespace, but it can be a custom name. If you use a custom name, update all other example commands accordingly. |
2 | This is the Helm release name. It is used by Helm to identify the Develocity installation. |
3 | The Develocity chart to install, in this case, gradle/gradle-enterprise-standalone .To install a specific version, use --version 2024.1.8 . |
4 | The Helm values file with configuration values, including items such as the hostname. |
5 | The Develocity license file (if not already included in values file). |
7. Start Develocity
At this point, it should be possible to see the Helm release installed:
$ helm --namespace develocity list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ge-standalone develocity 1 2024-08-16 03:01:58.704019291 +0000 UTC deployed gradle-enterprise-standalone-2024.1.8 2024.1.8
You can inspect the status of the Develocity pods:
$ kubectl --namespace develocity get pods
NAME READY STATUS RESTARTS AGE gradle-enterprise-operator-76694c949d-md5dh 1/1 Running 0 84m gradle-monitoring-5545d7d5d8-lpm9x 1/1 Running 0 84m gradle-proxy-0 1/1 Running 0 83m gradle-database-65d975cf8-dk7kw 2/2 Running 0 83m gradle-enterprise-app-0 1/1 Running 0 83m gradle-metrics-cfcd8f7f7-zqds9 1/1 Running 0 83m gradle-test-distribution-broker-6fd84c6988-x6jvw 1/1 Running 0 83m gradle-build-cache-node-57b9bdd46d-2txf5 1/1 Running 0 84m gradle-keycloak-0 1/1 Running 0 83m
Develocity has a /ping
endpoint, which can be used to verify network connectivity with Develocity.
Connectivity to Develocity installation can be tested by running the following command on machines which need to connect to Develocity:
$ curl -sw \\n --fail-with-body --show-error https://«develocity-host»/ping
It should return SUCCESS
.
Once all pods have a status of Running
and the system is up and connected, you can interact with Develocity by visiting its URL in a web browser (i.e. the hostname).
Develocity is installed and running. Head over to the Post Installation section for next steps.
Airgap Installation
In an airgap installation, the container images are preloaded into K3s. Helm is then configured so that no attempt is made to pull images from the outside world.
Airgap installations require a specific entitlement on your license. Please contact Gradle if you need an Airgap-enabled license.
Airgap installation involves downloading files, transferring them, installing supporting software, and running helm install
.
When installing Develocity, follow the installation manual for that version as the steps may have changed. See Develocity releases for information about the available versions. |
We recommend you save all the files into a single transfer directory, so that it is easy to transfer to the host where you are installing Develocity. For example:
$ mkdir develocity-files && cd develocity-files
1. Download required files
a. Download K3s
Use the compatability matrix to identify the latest version of K3s supported by your version of Develocity.
Download the K3s images, binary, and install script:
$ curl -LO https://github.com/k3s-io/k3s/releases/«k3s-version»/download/k3s
$ curl -LO \
https://github.com/k3s-io/k3s/releases/«k3s-version»/download/k3s-airgap-images-amd64.tar.gz
$ 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
b. Download Helm
Use the compatibility matrix to identify the latest version of Helm supported by your version of Develocity.
Download the Helm binary:
$ curl -L -o helm-linux-amd64.tar.gz https://get.helm.sh/helm-v«helm-version»-linux-amd64.tar.gz
You can see all available Helm releases on the Helm releases page. |
c. Download install 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-2024.1.8-bundle.tar.gz
$ curl -LOJd @develocity.license \
https://registry.gradle.com/airgap/gradle-enterprise-standalone-2024.1.8-bundle.tar.gz.sha256
$ sha256sum -c gradle-enterprise-standalone-2024.1.8-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. |
2. Prepare a Helm values file
Installation options for Develocity are depicted in a Helm values file.
Follow the instructions in the Standalone Helm Chart Configuration Guide and return to this document with a complete values.yaml
file.
Before transferring files to your host, make sure your Helm values file is updated in your transfer directory.
3. 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
-
develocity.license
-
values.yaml
-
gradle-enterprise-standalone-2024.1.8-bundle.tar.gz
-
Optional: SSL certificates
Once you’ve verified that you have the required files, transfer them to the host where you are installing Develocity.
4. Install K3s
Follow these instructions on the host where you are installing Develocity with your transferred files present 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. This is a package that can be found in Red Hat Enterprise Linux’s default repository. Install this package on the airgapped server just such as you would install any other package. If your organization has an internal mirror of the Red Hat package repositories, you can run:$ sudo yum install -y container-selinux
-
Install the K3s SELinux Policy package you downloaded:
$ sudo yum install -y k3s-selinux.el8.noarch.rpm
Then install and set up K3s:
-
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
5. Install Helm
Follow these instructions on the host where you are installing Develocity with your transferred files present in the current directory.
To 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
version.BuildInfo{Version:"v3.15.4", GitCommit:"fa9efb07d9d8debbb4306d72af76a383895aa8c4", GitTreeState:"clean", GoVersion:"go1.22.6"}
6. Install Develocity
Follow these instructions on the host where you are installing Develocity with your transferred files present in the current directory.
Install Develocity:
$ tar zxvf gradle-enterprise-standalone-2024.1.8-bundle.tar.gz
$ sudo k3s ctr images import gradle-enterprise-standalone-2024.1.8-images.tar (1)
1 | This command imports the images into K3s. |
$ helm install \
--create-namespace --namespace develocity \(1)
ge-standalone \(2)
gradle-enterprise-standalone-2024.1.8.tgz \
--values values.yaml \(3)
--set-file global.license.file=./develocity.license (4)
1 | This example uses develocity as the namespace, but it can be a custom name. If you use a custom name, update all other example commands accordingly. |
2 | This is the Helm release name. It is used by Helm to identify the Develocity installation. |
3 | The Helm values file with configuration values, including items such as the hostname. |
4 | The Develocity license file (if not already included in values file). |
7. Start Develocity
You can see the status of Develocity starting up by examining its pods.
$ kubectl --namespace {productFileName} get pods
NAME READY STATUS RESTARTS AGE gradle-enterprise-operator-76694c949d-md5dh 1/1 Running 0 39s gradle-monitoring-5545d7d5d8-lpm9x 1/1 Running 0 39s gradle-database-65d975cf8-dk7kw 0/2 Init:0/2 0 39s gradle-build-cache-node-57b9bdd46d-2txf5 0/1 Init:0/1 0 39s gradle-proxy-0 0/1 ContainerCreating 0 39s gradle-metrics-cfcd8f7f7-zqds9 0/1 Running 0 39s gradle-test-distribution-broker-6fd84c6988-x6jvw 0/1 Init:0/1 0 39s gradle-keycloak-0 0/1 Pending 0 39s gradle-enterprise-app-0 0/1 Pending 0 39s
Eventually the pods should all report as Running
:
$ kubectl --namespace develocity get pods
NAME READY STATUS RESTARTS AGE gradle-enterprise-operator-76694c949d-md5dh 1/1 Running 0 4m gradle-monitoring-5545d7d5d8-lpm9x 1/1 Running 0 4m gradle-proxy-0 1/1 Running 0 3m gradle-database-65d975cf8-dk7kw 2/2 Running 0 3m gradle-enterprise-app-0 1/1 Running 0 3m gradle-metrics-cfcd8f7f7-zqds9 1/1 Running 0 3m gradle-test-distribution-broker-6fd84c6988-x6jvw 1/1 Running 0 3m gradle-build-cache-node-57b9bdd46d-2txf5 1/1 Running 0 4m gradle-keycloak-0 1/1 Running 0 3m
Once all pods have a status of Running
and the system is up and connected, you can interact with it by visiting its URL in a web browser (i.e. the hostname).
8. Cleanup
It is recommended to remove the following files after installation:
-
k3s-airgap-images-amd64.tar.gz
-
k3s
-
install_k3s.sh
-
k3s-selinux.el8.noarch.rpm
-
helm-linux-amd64.tar.gz
-
gradle-enterprise-standalone-2024.1.8-bundle.tar.gz
-
gradle-enterprise-standalone-2024.1.8.tgz
-
gradle-enterprise-standalone-2024.1.8-images.tar
Once Develocity has been installed, files used during installation are not required at runtime and can be removed if desired. However, the following files may be useful to preserve, as they may aid in future upgrades or maintenance:
-
Helm values files
-
SSL certificates
-
Develocity license
Care should be applied when handling these files as they may be considered sensitive. |
Congratulations Develocity is installed and running.
Post-Installation
Many features of Develocity, including access control, database backups, and Build Scan retention can be configured in Develocity, once it is running. Consult the Develocity Administration guide to learn more.
For instructions on how to start using Develocity in your builds, consult the Getting Started with Develocity guide.