Git Product home page Git Product logo

estafette-ci's Introduction

estafette-ci's People

Contributors

afarid avatar ivanovaleksandar avatar jorritsalverda avatar msharbaji avatar snigdhasambitak avatar yogeshlonkar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

estafette-ci's Issues

Allow config to be set using environment variables

This allows config either to be set via config.yaml like this:

integrations:
  github:
    enable: true

Or through an environment variable:

ESCI_INTEGRATIONS_GITHUB_ENABLE=true

This helps in installing Estafette from scratch.

Keyboard shortcuts to control estafette via web, slack and cli

Support commands like

/estafette encrypt <secret>
/estafette release github.com/estafette/estafette-ci-web production 0.0.109
/estafette logs github.com/estafette/estafette-ci-web 0.0.109

The exact commands and structure still have to be fleshed out. The / at the beginning works for Slack slash commands and can be used to open a command line in the web interface. Perhaps in the web interface this will already show /estafette and a number of suggested commands.

Allow role based access to view builds and control releases

To avoid having to define roles in multiple locations reusing the permissions as set in github or bitbucket for a particular repository will be used as the source for who can view the pipelines (read permissions on the git repo) and deploy releases (write permissions on the git repo). Combine with the login system. Perhaps needed to link other types of login to an account, for example github logins.

Use batch/v1/CronJob if supported

To avoid this warning and future failures:

batch/v1beta1 CronJob is deprecated in v1.21+, unavailable in v1.25+; use batch/v1 CronJob

Upgrade fails on secret data

Error: UPGRADE FAILED: template: estafette-ci/charts/api/templates/secret.yaml:18:9: executing "estafette-ci/charts/api/templates/secret.yaml" at <index $secret.data .secretDecryptionKey>: error calling index: value is nil; should be of type string

Add Identity Aware Proxy support to Helm chart

In order to run the web ui behind Identity Aware Proxy (IAP) adding the following values to the estafette-ci-api subchart:

# To put the admin interface behind Identity Aware Proxy (IAP) on Google Cloud Platform
iap:
  enabled: false
  # Create Google Cloud OAuth credentials and set client id and secret
  # clientId:
  # clientSecret:

Fix affinity and tolerations config initialized incorrectly

Using https://github.com/sethvargo/go-envconfig for allowing config to be initialized from environment variables led to pointers getting instantiated instead of remaining nil. This led to incorrect behaviour for affinity rules config for build and release jobs.

Adopt a git workflow to improve release management

In order to standardize how work on features happens and how releases are created a git workflow has to be adopted that prescribes how to do this.

A list of well-known workflows:

What a workflow needs to do for Estafette CI is the following

  • work in feature branches to make use of pull requests to have multiple pairs of eyes on code and working builds before merging
  • create release branches to get semver version without label and be able to create a github release easily
  • keep things simple and prefer rolling forward as much as possible

What's less important but some workflows do offer is

  • being able to hotfix a released version while work on the next version is ongoing or even released

Support streaming logs

Currently logs only show when a build has fully finished. Make this streaming to both the db and the web interface.

Cockroachdb with self-signer

With Kubernetes signed certificates being deprecated in 1.22+ version 6.1.0 of the (Cockroachdb Helm Chart)[https://github.com/cockroachdb/helm-charts] introduces the self-signer. This also simplifies setup of estafette-ci since it no longer requires any csr approval.

Create operator to configure Estafette from CRDs

To make configuring Estafette possible without redeploying any components it is useful to create Custom Resource Definitions (CRD) for various parts of configuration, like integrations, credentials and trustedImages in order to configure Estafette on the fly.

Allow config to be split over multiple files

In order to make it easier to keep most of the default config, but add separate config for more localized config sections like credentials and possibly trustedImages splitting it into separate config files and merging those when reading them this is now feasible.

Use yaml based config via a configmap for estafette-ci-api

The best way of configuring an application I've used is that of grafana. It has a yaml based config file and allows you to override what's there with environment variables.

This config file should support estafette secrets so the secret values can be encrypted and be hidden in plain sight. The encryption key itself has be mounted as a secret into the estafette-ci-api.

During first install there might be a chicken and egg situation for using these secrets. Perhaps the future cli can assist in this by being able to install all estafette components and generate the encrypted secrets on the fly.

Generate secretDecryptionKey and jwtKey on first install

In order to simplify setup the secretDecryptionKey and jwtKey are automatically initialized on first install of the Helm chart, so you don't need to specify a value. You can set a value in the values with secret.secretDecryptionKey and secret.jwtKey if you want though.

Define release targets at server level

Release targets could be a Kubernetes cluster, a package repository or container registry. Release targets defined at server level can be reused from individual application manifests to deploy / push to without knowing all secrets required to do so.

Cloning during a release fails if the feature branch has been deleted

If we have cloning on a release enabled with

clone: true

And we try to release a build which was done on a feature branch, which since then has been merged and the branch was deleted, the cloning fails with this error:

Cloning git repository foo to branch bar and revision c8cbaf0c359e0fd605bd86a345fad34f0f6e5cd1 with shallow clone is true and depth 50...
Cloning into '/estafette-work'...
warning: Could not find remote branch bar to clone.
fatal: Remote branch bar not found in upstream origin

Is this a bug or as designed?
I'm not sure if this can be solved though, so when we merge a PR and check "Delete branch", whether that only removes the branch marker, or if it actually deletes all the commits in the branch. If it removes the actual commits, then we might not be able to solve it. In that case maybe we should ask the devs not to use the "Delete branch" option when they merge their PRs?

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.