{"id":13566941,"url":"https://github.com/SFTtech/kevin-ci","last_synced_at":"2025-04-04T00:32:28.209Z","repository":{"id":62574022,"uuid":"41760921","full_name":"SFTtech/kevin-ci","owner":"SFTtech","description":"A simple-stupid really fast self-hostable continuous integration service. :see_no_evil: runs ci jobs in lxd, podman or qemu.","archived":false,"fork":false,"pushed_at":"2025-02-19T01:01:04.000Z","size":522,"stargazers_count":111,"open_issues_count":25,"forks_count":17,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-02-24T06:39:20.814Z","etag":null,"topics":["asyncio","buildbot","chantal","continuous-integration","falk","internet","kevin","openage","python","qemu","simple","simple-stupid"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SFTtech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"liberapay":"SFTtech"}},"created_at":"2015-09-01T20:11:39.000Z","updated_at":"2025-02-19T01:01:08.000Z","dependencies_parsed_at":"2023-12-02T12:25:31.435Z","dependency_job_id":"74619868-c737-424e-91d0-df4e1a714701","html_url":"https://github.com/SFTtech/kevin-ci","commit_stats":{"total_commits":137,"total_committers":8,"mean_commits":17.125,"dds":"0.21167883211678828","last_synced_commit":"f8f0e5d7734e10be31e522c73a63ce5811519322"},"previous_names":["sfttech/kevin-ci","sfttech/kevin"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fkevin-ci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fkevin-ci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fkevin-ci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fkevin-ci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SFTtech","download_url":"https://codeload.github.com/SFTtech/kevin-ci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247103290,"owners_count":20884023,"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","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":["asyncio","buildbot","chantal","continuous-integration","falk","internet","kevin","openage","python","qemu","simple","simple-stupid"],"created_at":"2024-08-01T13:02:20.033Z","updated_at":"2025-04-04T00:32:28.201Z","avatar_url":"https://github.com/SFTtech.png","language":"Python","funding_links":["https://liberapay.com/SFTtech"],"categories":["Python"],"sub_categories":[],"readme":"# Kevin-CI\n\nKevin-CI is a self-hosted continuous integration service.\n\nWith Kevin you have **maximum-speed builds**, spectacular GitHub integration and the best™ CI experience ever.\n\nKevin-CI supports [QEMU](https://qemu.org), [LXD](https://canonical.com/lxd) and [Podman](https://podman.io).\n\n\n### Dafuq?\n\nKevin is a self-hostable CI daemon to build [pull requests](https://help.github.com/articles/using-pull-requests/) inside temporary containers.\n\n\nIt was mainly developed for [openage](http://github.com/SFTtech/openage/),\nbut you can use it for _any_ project!\n\nKevin can create doc files, bundle software, run tests, make screenshots,\nend world hunger, calculate the last digits of pi: all in a custom container.\n\nRequires:\n- [Python \u003e=3.11](https://www.python.org/)\n- [aiohttp](https://aiohttp.org/)\n- and some container/vm to run jobs in\n\n\n### Components\n\n* **Kevin**: Receives triggers and launches the builds\n* **Justin**: Provides temporary containers to Kevin\n* **Chantal**: Run inside the container to execute the Job\n* **Mandy**: Webinterface to view live-results\n\n\n### How?\n\n* `kevin` is notified by a GitHub webhook\n* It spawns a temporary Container/VM from a template to run the job\n* The repo is cloned and the build/test steps in `kevinfile` are executed\n* Progress can be viewed live via Web-UI, GitHub, `curl` or websocket API\n* Results are instantly reported to GitHub\n\n\n### Features\n\n* Makefile-like [control file (`kevinfile`)](etc/kevinfile.example)\n  * Directly specify command dependencies of your build\n  * Report the step results and timing back to github\n\n* Live-view of build console output\n  * See what the machine builds in real-time\n  * Store and download resulting files (e.g. releases)\n\n* GitHub pull requests\n  * A build is triggered for each new and updated pull request\n  * When you push to a currently-in-build branch,\n    the previous build is canceled\n\n* File output\n  * Let your project generate files and folders\n  * They're saved to the static web folder\n  * Use it to generate documentation, releases, ...\n\n* Container management\n  * Jobs are built in temporary throwaway VMs\n  * Easily change and update the base images\n\n\n### Setup\n\n**How?** [Lurk into our setup guide](doc/setup.md).\n\n\n### Supported Services\n\n* Hosting [services](/kevin/service/):\n  * [X] [GitHub](https://github.com/),\n  * [ ] [GitLab](https://gitlab.com/),\n  * [ ] ...\n* [Supported container/VM tools](/justin/machine/)\n  * [X] [qemu](http://qemu-project.org)\n  * [X] [podman](https://podman.io/)\n  * [x] [lxd](https://linuxcontainers.org/lxd)\n  * [ ] [docker](https://www.docker.com/)\n  * [ ] [libvirt](https://libvirt.org/)\n  * [ ] [xen](https://www.xenproject.org/)\n  * [ ] [nspawn](http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html)\n  * [ ] ...\n\n\n### Contact\n\nIf you have questions, suggestions, encounter any problem,\nplease join our [Matrix channel](https://matrix.to/#/#sfttech:matrix.org) and ask!\n\nOf course, create [issues](https://github.com/SFTtech/kevin-ci/issues)\nand [pull requests](https://github.com/SFTtech/kevin-ci/pulls).\n\n\n### License\n\nReleased under the **GNU Affero General Public License** version 3 or later,\nsee [COPYING](COPYING) and [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSFTtech%2Fkevin-ci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSFTtech%2Fkevin-ci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSFTtech%2Fkevin-ci/lists"}