Skip to main content

Gitops

PyPI version versions Test Lint

Manage multiple apps across one or more k8s clusters.

Overview

Keeping track of numerous of single-tenanted application deployments can quickly become a handful. Enter Gitops!

The tool has two halves:

  • Gitops Server - an instance of this gets deployed to each of your kubernetes clusters, listening on changes made to your gitops cluster repo. The server's responsibility is to update the deployments on the cluster it lives on to match the app specifications in the repo.
  • Gitops CLI - this is a tool that you can use to interact comfortably with your cluster repo. It allows listing all deployed applications, what images they're presently running on, and which clusters they live on. It also provides numerous operations that can be applied to one or more apps at a time, such as bumping to a newer version of an image, or running a particular command across your app cohort.

Currently Kubernetes/Helm is the only supported cluster interface. All app deployments are performed as applications of Helm charts.

So what's a "cluster repo"?

This is a git repository that you set up, where you list out all of your applications and how you want them deployed. It looks like this:

.
+- apps
   +- app_0
      +- deployment.yml
      +- secrets.yml
   +- app_1
      +- deployment.yml
      +- secrets.yml
+- jobs

Gitops CLI Installation

  1. Install the CLI tool from GitHub over SSH, which needs an SSH key registered with GitHub. Add --verbose to see what it is doing:

    uv tool install git+ssh://git@github.com/uptick/gitops
    

    Upgrade it with uv tool upgrade gitops.

    Installing from PyPI (uv tool install gitops) still works, but we are moving away from it — use the git install.

  2. Set up the environment variable GITOPS_APPS_DIRECTORY to invoke gitops from any directory.

Gitops Server Installation

Secrets should be placed in secrets.env. The example file secrets.example.env has the environment variables you will need to supply.

Ensure that the gitops service account has edit access to the namespace it is deploying to. An example RoleBinding is:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: gitops-role-binding
  namespace: workforce
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
- kind: ServiceAccount
  name: default
  namespace: gitops

Contribution

We're using releaseplease, to publish a new version do the following:

  1. Checkout a feature branch and make the changes
    1. Make sure to follow instructions for writing commits by releaseplease
      1. fix: which represents bug fixes, and correlates to a SemVer patch.
      2. feat: which represents a new feature, and correlates to a SemVer minor.
      3. feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.
  2. Push changes and get the PR approved
  3. Once it is merged; an additional PR containing the release changes needs to be merged to create a release.

Metadata

Release files for gitops 1.10.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitops 1.10.2
File Size Uploaded Provenance
gitops-1.10.2.tar.gz 168.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for gitops 1.10.2
File Interpreter ABI Platform
gitops-1.10.2-py3-none-any.whl Python 3 none any Details

Total release size: 194.7 kB

Release files / gitops-1.10.2.tar.gz

Download URL gitops-1.10.2.tar.gz
Size 168.7 kB
Tags Source
SHA-256 checksum
How to use checksums
61e936694b42659567e465d719433b73d01a458b951823d40b8e5b7e268c9dfc
BLAKE2b-256 checksum
How to use checksums
888d4de3127bd1bfa0dcf5e82c363a7f08d38e2415da44520b8a598a86eab03f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / gitops-1.10.2-py3-none-any.whl

Download URL gitops-1.10.2-py3-none-any.whl
Size 26.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4375f8b82fc87af130fe85431780cca7bc3574f590b0ac005bd2390c7ba30f28
BLAKE2b-256 checksum
How to use checksums
f22b370ada6af596528ee332834d0d3af7260af14a90c0083f65c9ff03b0b2bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for gitops 1.10.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gitops-1.10.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.10.2 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page