GithubHelp home page GithubHelp logo

gimlet-io / gimletd Goto Github PK

View Code? Open in Web Editor NEW
24.0 24.0 3.0 3.48 MB

The Gitops Release Manager

Home Page: https://gimlet.io/concepts/gimletd-concepts/

License: Apache License 2.0

Makefile 0.58% Go 97.72% Dockerfile 0.26% Shell 1.44%
devops gitops k8s kubernetes

gimletd's People

Contributors

backbencher00 avatar dzsak avatar hbarbi11 avatar laszlocph avatar szabogabor91 avatar tcrst avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gimletd's Issues

Investigate git performance

My experience shows that traversing and filtering git history becomes slow even for trivial number of commits.

The previous - closed source - implementation of Gimlet got slow for querying release history of a given pair of environment and application when the total commit count of the GitOps repository reached 1-3000 commits.
The implementation used https://github.com/go-git/go-git and the slowness perhaps related to go-git/go-git#137

This issue is meant to investigate go-git performance in synthetic tests also comparing it to the git binary.

Artifact shipper Github Action

GimletD assumes all release focused tasks and the management of the GitOps repository. These responsibilities used to be part of CI pipelines, therefor GimletD needs to break those out from CI. It achieves it by introducing a new concept, the release artifact. It serves as the means to detach release workflows from CI.

With GimletD instead of releasing, CI generates a release artifact for each releasable version of the application which will be released by GimletD. See the whole flow on the Concepts page.

The artifact is a large JSON object that contains all metadata that can be later used for releasing and auditing. But it is quite cumbersome to collect all metadata from CI pipelines with a series of Gimlet CLI calls:

  • gimlet artifact create to create an initial JSON file with the git version information
  • gimlet artifact add to add fields like
    • CI job url
    • docker image name
    • gimlet environment manifests
    • environment variables
  • gimlet artifact push to ship it to GimletD

This series of steps is best packaged together in a CI plugin.

One such plugin already exists for CircleCI. The task is to make one for Github Actions

"cleanup" policy

.gimlet/preview.yaml

app: frontend-{{ .BRANCH }}
env: preview
namespace: my-team
deploy:
  branch: feature/*
  event: push
+ cleanup:
+   app: frontend-{{ .BRANCH }}
+   event: branch-deleted

Github changed their SSH keys

panic: ssh: handshake failed: knownhosts: key mismatch

goroutine 1 [running]:
main.main()
        /home/runner/work/gimletd/gimletd/cmd/main.go:80 +0xd34

Monorepo support

Right now an artifact is tied to a repo and git sha.
We should introduce a logical app concept to be able to control which apps need to be released from a monorepo.

Bug: Remove deleted resources from the gitops repo

When someone defines a pvc, or an ingress in an app, deploys it, Gimletd puts all resources to the gitops repo. ✔️

When then someone deletes the pvc from the gimlet manifest, Gimletd doesn't remove the file from the gitops repo ❌

This is a bug.

Branch deleted detector misses branch deletion

If the branch deleted detector faces a git issue, it clears its working copy and won't be able to detect branch deletions.

Git issues often pop up in the form of object not found due to force pushes (?)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.