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
devbotnamespace
- Devbot deployment manifests committed to
/.devbotdirectory 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
devbotnamespace RepositoryandApplicationmanifests 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
EnvironmentandDeploymentobject 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: isTrueif the object is being finalizedFailedToInitialize: isTrueif object initialization failedInvalid: isTrueif object spec is invalid; for things that CRD cannot validate on its own
RepositoryUnauthenticated: isTrueif authentication to Git provider could not be established
ApplicationStale: isTrueif an environment is missing or redundant or is stale itself
EnvironmentStale: isTrueif anDeploymentis missing or redundant or is stale itself
DeploymentCloning: isTrueif repository is being clonedBaking: isTrueif resources manifest is being preparedApplying: isTrueif resources manifest is being applied to the target clusterStale: isTrueif 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
Makefiletarget 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