---
title: Charmhub | Deploy Jenkins Agent using Charmhub - The Open Operator Collection
description: Deploy the latest version of Jenkins Agent as a Kubernetes Operator on
  any cloud.
url: https://charmhub.io/jenkins-agent-k8s/docs/how-to-contribute
---

# Jenkins Agent

[Canonical IS DevOps](https://charmhub.io/publisher/canonical-is-devops "View all packages from Canonical IS DevOps")

* [Canonical IS DevOps](https://charmhub.io/publisher/canonical-is-devops "View all packages from Canonical IS DevOps")

Platform:

stable 39

```
juju deploy jenkins-agent-k8s
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

---

#### Contacts

##### Maintainers

+ [Launchpad Team](https://launchpad.net/~canonical-is-devops)

* [Submit a bug](https://github.com/canonical/jenkins-agent-k8s-operator/issues)

---

Share your thoughts on this charm with the community on discourse.

[Join the discussion](https://discourse.charmhub.io/)

# How to contribute

## [Overview](https://charmhub.io/jenkins-agent-k8s/docs/how-to-contribute#p-29913-overview)

This document explains the processes and practices recommended for contributing enhancements to the Jenkins agent k8s operator.

* Generally, before developing enhancements to this charm, you should consider [opening an issue](https://github.com/canonical/jenkins-agent-k8s-operator/issues) explaining your use case.
* If you would like to chat with us about your use-cases or proposed implementation, you can reach
  us at [Canonical Matrix public channel](https://app.element.io/#/room/#charmhub-charmdev:ubuntu.com)
  or [Discourse](https://discourse.charmhub.io/).
* Familiarising yourself with the [Charmed Operator Framework](https://juju.is/docs/sdk) library
  will help you a lot when working on new features or bug fixes.
* All enhancements require review before being merged. Code review typically examines
  + code quality
  + test coverage
  + user experience for Juju operators of this charm.
* Please help us out in ensuring easy to review branches by rebasing your pull request branch onto the `main` branch. This also avoids merge commits and creates a linear Git commit history.

## [Developing](https://charmhub.io/jenkins-agent-k8s/docs/how-to-contribute#p-29913-developing)

The code for this charm can be downloaded as follows:

```
git clone https://github.com/canonical/jenkins-agent-k8s-operator
```

You can use the environments created by `tox` for development:

```
tox --notest -e unit
source .tox/unit/bin/activate
```

### [Testing](https://charmhub.io/jenkins-agent-k8s/docs/how-to-contribute#p-29913-testing)

Note that the [Jenkins agent k8s](https://github.com/canonical/jenkins-agent-k8s-operator/blob/main/jenkins_agent_k8s_rock/rockcraft.yaml) needs to be built and pushed to MicroK8s for the tests to run. It should be tagged as `localhost:32000/jenkins-agent-k8s:latest` so that Kubernetes knows how to pull them from the MicroK8s repository. Note that the MicroK8s registry needs to be enabled using `microk8s enable registry`. More details regarding the OCI images below. The following commands can then be used to run the tests:

* `tox`: Runs all of the basic checks (`lint`, `unit`, `static`, and `coverage-report`).
* `tox -e fmt`: Runs formatting using `black` and `isort`.
* `tox -e lint`: Runs a range of static code analysis to check the code.
* `tox -e static`: Runs other checks such as `bandit` for security issues.
* `tox -e unit`: Runs the unit tests.
* `tox -e integration`: Runs the integration tests.

## [Build charm](https://charmhub.io/jenkins-agent-k8s/docs/how-to-contribute#p-29913-build-charm)

Build the charm in this git repository using:

```
charmcraft pack
```

For the integration tests (and also to deploy the charm locally), the jenkins-agent-k8s image is required in the microk8s registry. To enable it:

```
microk8s enable registry
```

The following commands import the images in the Docker daemon and push them into the registry:

```
cd [project_dir]/jenkins_agent_k8s_rock && rockcraft pack rockcraft.yaml
skopeo --insecure-policy copy oci-archive:jenkins-agent-k8s_1.1_amd64.rock docker-daemon:localhost:32000/jenkins-agent-k8s:latest
docker push localhost:32000/jenkins-agent-k8s:latest
```

### [Deploy](https://charmhub.io/jenkins-agent-k8s/docs/how-to-contribute#p-29913-deploy)

```
# Create a model
juju add-model jenkins-agent-k8s-dev
# Enable DEBUG logging
juju model-config logging-config="<root>=INFO;unit=DEBUG"
# Deploy the charm (assuming you're on amd64)
juju deploy ./jenkins-agent-k8s_ubuntu-22.04-amd64.charm \
  --resource jenkins-agent-k8s-image=localhost:32000/jenkins-agent-k8s:latest
```

## [Canonical contributor agreement](https://charmhub.io/jenkins-agent-k8s/docs/how-to-contribute#p-29913-canonical-contributor-agreement)

Canonical welcomes contributions to the Jenkins agent k8s operator. Please check out our [contributor agreement](https://ubuntu.com/legal/contributors) if you’re interested in contributing to the solution.

---
