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
Please see the contributing guide for details.
- User runs
devctl bootstrap github --owner=OWNER --repo=REPO --pat=PAT
- Repository created or updated
- Deploy key is created in the given repository (using the given PAT)
- Public key is stored in the repository
- Private key is stored as a secret in the
devbot
namespace
- Devbot deployment manifests committed to
/.devbot
directory in the repository - Devbot deployment manifests applied to the current cluster
- Wait loop until Devbot becomes healthy & active
- Save deploy-key in a secret in the
devbot
namespace Repository
andApplication
manifests created, pointing to the
- User runs
devctl bootstrap
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
andDeployment
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
: isTrue
if the object is being finalizedFailedToInitialize
: isTrue
if object initialization failedInvalid
: isTrue
if object spec is invalid; for things that CRD cannot validate on its own
Repository
Unauthenticated
: isTrue
if authentication to Git provider could not be established
Application
Stale
: isTrue
if an environment is missing or redundant or is stale itself
Environment
Stale
: isTrue
if anDeployment
is missing or redundant or is stale itself
Deployment
Cloning
: isTrue
if repository is being clonedBaking
: isTrue
if resources manifest is being preparedApplying
: isTrue
if resources manifest is being applied to the target clusterStale
: isTrue
if last applied commit is not the latest commit in the linked repository
- All objects
- 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