{"id":21481612,"url":"https://github.com/arikkfir/devbot","last_synced_at":"2025-07-23T20:03:28.056Z","repository":{"id":44932504,"uuid":"425999395","full_name":"arikkfir/devbot","owner":"arikkfir","description":"An opinionated DevOps bot intended to simplify development \u0026 collaboration in modern-day development teams.","archived":false,"fork":false,"pushed_at":"2024-12-12T00:14:18.000Z","size":1725,"stargazers_count":0,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-17T09:14:26.465Z","etag":null,"topics":["devops","go"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arikkfir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"arikkfir","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-11-08T21:28:07.000Z","updated_at":"2024-07-14T10:59:15.000Z","dependencies_parsed_at":"2024-11-23T12:38:15.509Z","dependency_job_id":null,"html_url":"https://github.com/arikkfir/devbot","commit_stats":{"total_commits":106,"total_committers":1,"mean_commits":106.0,"dds":0.0,"last_synced_commit":"30f5d3c3e2c6c673e249077bf127b31727463467"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arikkfir/devbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arikkfir%2Fdevbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arikkfir%2Fdevbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arikkfir%2Fdevbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arikkfir%2Fdevbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arikkfir","download_url":"https://codeload.github.com/arikkfir/devbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arikkfir%2Fdevbot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266738657,"owners_count":23976439,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","go"],"created_at":"2024-11-23T12:27:31.592Z","updated_at":"2025-07-23T20:03:28.034Z","avatar_url":"https://github.com/arikkfir.png","language":"Go","funding_links":["https://github.com/sponsors/arikkfir"],"categories":[],"sub_categories":[],"readme":"# devbot\n\n\u003e Development bot for GitHub\n\nThe `devbot` project is a development environment manager, that helps you manage your development environment, in the\nmost inclusive interpretation of the term:\n\n* Automatic, on-demand, environment management (e.g. branch-specific environment; feature-specific environment; etc)\n* Full integration with existing 3rd-party tools and provides such as GitHub, Slack, etc.\n* One-stop dashboard to see everything related to product development in one place\n\n## Contributing\n\nPlease see the [contributing guide](.github/CONTRIBUTING.md) for details.\n\n## Installation\n\n1. User runs `devctl bootstrap github --owner=OWNER --repo=REPO --pat=PAT`\n   1. Repository created or updated\n   2. Deploy key is created in the given repository (using the given PAT)\n      1. Public key is stored in the repository\n      2. Private key is stored as a secret in the `devbot` namespace\n   3. Devbot deployment manifests committed to `/.devbot` directory in the repository\n   4. Devbot deployment manifests applied to the current cluster\n      1. Wait loop until Devbot becomes healthy \u0026 active\n   5. Save deploy-key in a secret in the `devbot` namespace\n   6. `Repository` and `Application` manifests created, pointing to the\n7. \n3. User runs `devctl bootstrap`\n\n## Status\n\nAlpha. Do not use.\n\n- [ ] Review all calls to `Requeue` - many of those are failures that cannot be recovered from; something like \"lastAttemptedCommitSHA\" is needed in their place\n- [ ] Recreate the unit tests\n- [ ] Use slugged branch names as `Environment` and `Deployment` object names\n- [ ] Support remote clusters\n  - Slugging must be intelligent and avoid conflicts when two different branch names would result in the same slug\n- [ ] Refactor conditions\n  - All objects\n    - `Finalizing`: is `True` if the object is being finalized\n    - `FailedToInitialize`: is `True` if object initialization failed\n    - `Invalid`: is `True` if object spec is invalid; for things that CRD cannot validate on its own\n  - `Repository`\n    - `Unauthenticated`: is `True` if authentication to Git provider could not be established\n  - `Application`\n    - `Stale`: is `True` if an environment is missing or redundant or is stale itself\n  - `Environment`\n    - `Stale`: is `True` if an `Deployment` is missing or redundant or is stale itself\n  - `Deployment`\n    - `Cloning`: is `True` if repository is being cloned\n    - `Baking`: is `True` if resources manifest is being prepared\n    - `Applying`: is `True` if resources manifest is being applied to the target cluster\n    - `Stale`: is `True` if last applied commit is not the latest commit in the linked repository\n- [ ] Setup CI\n  - [ ] Linting\n  - [ ] Detect and fail on dead code\n  - [ ] Build \u0026 publish Docker images\n  - [ ] Build \u0026 publish `devctl`\n- [ ] Create a `Makefile` target that creates the local ignored files, using 1Password as a way to populate their values\n\n\n```shell\n\t#\tgroundcover deploy \\\n\t#\t\t--yes \\\n\t#\t\t--cluster-name kind-$(shell whoami) \\\n\t#\t\t--custom-metrics \\\n\t#\t\t--git-commit-hash-key-name devbot.kfirs.com/commit-hash \\\n\t#\t\t--git-repository-url-key-name devbot.kfirs.com/repository-url \\\n\t#\t\t--kube-state-metrics \\\n\t#\t\t--kube-context kind-devbot\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farikkfir%2Fdevbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farikkfir%2Fdevbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farikkfir%2Fdevbot/lists"}