devbot

module
v0.0.0-...-71653c3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2024 License: GPL-3.0

README

devbot

Development bot for GitHub

The devbot project is a development environment manager, that helps you manage your development environment, in the most inclusive interpretation of the term:

  • Automatic, on-demand, environment management (e.g. branch-specific environment; feature-specific environment; etc)
  • Full integration with existing 3rd-party tools and provides such as GitHub, Slack, etc.
  • One-stop dashboard to see everything related to product development in one place

Contributing

Please see the contributing guide for details.

Installation

  1. User runs devctl bootstrap github --owner=OWNER --repo=REPO --pat=PAT
    1. Repository created or updated
    2. Deploy key is created in the given repository (using the given PAT)
      1. Public key is stored in the repository
      2. Private key is stored as a secret in the devbot namespace
    3. Devbot deployment manifests committed to /.devbot directory in the repository
    4. Devbot deployment manifests applied to the current cluster
      1. Wait loop until Devbot becomes healthy & active
    5. Save deploy-key in a secret in the devbot namespace
    6. Repository and Application manifests created, pointing to the
  2. User runs devctl bootstrap

Status

Alpha. Do not use.

  • Review all calls to Requeue - many of those are failures that cannot be recovered from; something like "lastAttemptedCommitSHA" is needed in their place
  • Recreate the unit tests
  • Use slugged branch names as Environment and Deployment object names
  • Support remote clusters
    • Slugging must be intelligent and avoid conflicts when two different branch names would result in the same slug
  • Refactor conditions
    • All objects
      • Finalizing: is True if the object is being finalized
      • FailedToInitialize: is True if object initialization failed
      • Invalid: is True if object spec is invalid; for things that CRD cannot validate on its own
    • Repository
      • Unauthenticated: is True if authentication to Git provider could not be established
    • Application
      • Stale: is True if an environment is missing or redundant or is stale itself
    • Environment
      • Stale: is True if an Deployment is missing or redundant or is stale itself
    • Deployment
      • Cloning: is True if repository is being cloned
      • Baking: is True if resources manifest is being prepared
      • Applying: is True if resources manifest is being applied to the target cluster
      • Stale: is True if last applied commit is not the latest commit in the linked repository
  • Setup CI
    • Linting
    • Detect and fail on dead code
    • Build & publish Docker images
    • Build & publish devctl
  • Create a Makefile target that creates the local ignored files, using 1Password as a way to populate their values
	#	groundcover deploy \
	#		--yes \
	#		--cluster-name kind-$(shell whoami) \
	#		--custom-metrics \
	#		--git-commit-hash-key-name devbot.kfirs.com/commit-hash \
	#		--git-repository-url-key-name devbot.kfirs.com/repository-url \
	#		--kube-state-metrics \
	#		--kube-context kind-devbot

Directories

Path Synopsis
api module
v1
Package v1 contains API Schema definitions for the devbot.kfirs.com v1 API group +kubebuilder:object:generate=true +groupName=devbot.kfirs.com
Package v1 contains API Schema definitions for the devbot.kfirs.com v1 API group +kubebuilder:object:generate=true +groupName=devbot.kfirs.com
backend module
cmd
e2e
internal
scripts

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL