> For the complete documentation index, see [llms.txt](https://cover-docs.diffblue.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cover-docs.diffblue.com/features/cover-pipeline/cover-pipeline-for-ci/installing-diffblue-cover-in-your-ci-environment.md).

# Installation - VMs or CI run

Before you begin the installation, please obtain the link to download Cover (from your product update email, or contact [Diffblue](https://www.diffblue.com/support/)). Please note you need version 2022.03.02 or above, installed and activated with an appropriate license.

### Installing on a VM

If you only have a few machines it is possible to manually install Cover on each machine. To do this:

1. Unzip the Cover jar files to a common and accessible directory inside each VM.
2. Activate Cover.
3. Reference these jar files when calling Cover in your CI scripts.

### Installing during a CI run

For most CI systems, you will want to download Cover as part of your CI run.

This link should be added as a secret variable for your CI system, with a memorable name, such as “RELEASE\_URL”, so that it can be referenced later. Depending on your CI system this will have a different name but common examples are:

* GitHub Actions = Secrets
* Codebuild = Parameter store
* Jenkins = Secret text in credentials
* GitLab CI = Protected variables

Then, add a step to your pipeline which downloads from this link and extract the contents. Below is an example in GitHub Actions:

```yaml
- name: Get Cover
        run: |
          mkdir dcover
          cd dcover
          wget -c "${{ secrets.RELEASE_URL }}" -O dcover.zip -q
          unzip dcover.zip
```

From this point on you will be able to call Cover by referencing the executable extracted from this zip at the location you specified (`dcover/dcover` in the example above).

Similarly, add a secret variable for your CI system that holds the Cover license key, such as “LICENSE\_KEY”. Activate Cover each time CI is run. For example

```yaml
- name: Get Cover
        run: dcover/dcover activate "$LICENSE_KEY"
```
