# Performing the update

Now that you have determined the upgrade path and performed the pre-update steps, you can proceed with your update.

## Updating a ZIP file instance <a href="#zip-instance" id="zip-instance"></a>

Before you update, make sure you know how to install the server from the ZIP file, see [overview](https://docs.sonarsource.com/sonarqube-community-build/server-installation/from-zip-file/overview "mention"), and check that your environment meets the requirements of the version you’re updating to, see [server-host-requirements](https://docs.sonarsource.com/sonarqube-community-build/server-installation/server-host-requirements "mention").

To update from the ZIP file:

1. Download and unzip the SonarQube Community Build distribution in a fresh directory, let’s say `<newSonarqubeHome>`.
2. If you’re using third-party plugins, manually install plugins that are compatible with your version of SonarQube Community Build. Use the [plugin-version-matrix](https://docs.sonarsource.com/sonarqube-community-build/server-installation/plugins/plugin-version-matrix "mention") to ensure that the versions you install are compatible with your SoanrQube version. Simply copying plugins from the old instance to the new is not recommended; incompatible or duplicate plugins could cause startup errors.
3. Update the contents of `sonar.properties` file (in `<newSonarqubeHome>/conf`) with the settings in the `<oldSonarqubeHome>/conf` directory (web server URL, database, ldap settings, etc.). Do not copy-paste the old files. If you are using the Oracle DB, copy its JDBC driver into `<newSonarqubeHome>/extensions/jdbc-driver/oracle`.
4. Stop your old SonarQube Community Build.
5. Start your new SonarQube Community Build.
6. Browse to `http://yourSonarQubeURL/setup` and follow the setup instructions.
7. Reanalyze your projects for a better experience.

## Updating a Docker image instance <a href="#docker-instance" id="docker-instance"></a>

To update SonarQube Community Build using the Docker image:

1. Stop and remove the existing SonarQube Community Build container:

```css-79elbk
$ docker stop <container_id>
$ docker rm <container_id>
```

2\. [set-up-and-start-container](https://docs.sonarsource.com/sonarqube-community-build/server-installation/from-docker-image/set-up-and-start-container "mention").

```css-79elbk
$> docker run -d --name sonarqube \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=... \
    -e SONAR_JDBC_USERNAME=... \
    -e SONAR_JDBC_PASSWORD=... \
    -v sonarqube_data:/opt/sonarqube/data \
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    -v sonarqube_logs:/opt/sonarqube/logs \
    <image_name>
```

where `<image_name>` depends on the update target:

* for SonarQube Community Build: `sonarqube`
* for SonarQube Server Editions: check the tags currently available on the [DockerHub page](https://hub.docker.com/_/sonarqube).

3\. Go to `http://yourSonarQubeURL/setup` and follow the setup instructions.

4\. Reanalyze your projects for a better experience.

{% hint style="info" %}

* If you’re updating with an Oracle database or you’re using plugins, you can reuse your extensions volume from the previous version to avoid moving plugins or drivers. Use the [plugin-version-matrix](https://docs.sonarsource.com/sonarqube-community-build/server-installation/plugins/plugin-version-matrix "mention") to ensure that your plugins are compatible with your version. Analysis of all languages provided by your edition is available by default without plugins.
* Unless you intend to delete the database and start new when running your image, be careful not to use `-v` to `docker-compose down` and, be careful when running commands like `docker system prune` or `docker volume prune`; regardless if you use an `external: true` parameter, your database volumes will not persist beyond the initial startup and shutdown of SonarQube Community Build.
  {% endhint %}

## Updating a Helm chart instance <a href="#helm-chart-instance" id="helm-chart-instance"></a>

{% hint style="info" %}
If you’re updating with an Oracle database or you’re using plugins, you can reuse your extensions Persistent Volume Claims from the previous version to avoid moving plugins or drivers. Use the [plugin-version-matrix](https://docs.sonarsource.com/sonarqube-community-build/server-installation/plugins/plugin-version-matrix "mention") to ensure that your plugins are compatible with your version. Analysis of all languages provided by your edition is available by default without plugins.
{% endhint %}

{% hint style="warning" %}
Please verify that any custom configurations or custom `values.yaml` files contain *only parameters that are still compatible with the targeted chart*, and adjust them if needed. Some default values assigned to parameters may have changed between versions of the chart,or other parameters could have been removed.
{% endhint %}

<details>

<summary>Standard procedure</summary>

1. Change the SonarQube Community Build version parameter (`image.tag`) on your `values.yaml`.\
   Example: `image: sonarqube:25.2.0.102705-community`
2. Redeploy SonarQube Community Build with the same helm chart:

```css-79elbk
helm upgrade --install -f values.yaml -n <yourNamespace> <yourReleaseName> <pathToSonarqubeHelmChart>
```

4\. Go to `http://yourSonarQubeURL/setup` and follow the setup instructions.

5\. Reanalyze your projects to get fresh data.

#### Related pages <a href="#related-pages" id="related-pages"></a>

* [release-cycle-model](https://docs.sonarsource.com/sonarqube-community-build/server-update-and-maintenance/update/release-cycle-model "mention")
* [determine-path](https://docs.sonarsource.com/sonarqube-community-build/server-update-and-maintenance/update/determine-path "mention")
* [pre-update-steps](https://docs.sonarsource.com/sonarqube-community-build/server-update-and-maintenance/update/pre-update-steps "mention")
* [post-update-steps](https://docs.sonarsource.com/sonarqube-community-build/server-update-and-maintenance/update/post-update-steps "mention")

</details>
