{"id":19143663,"url":"https://github.com/cobyism/dciy","last_synced_at":"2025-10-25T18:38:17.415Z","repository":{"id":10255812,"uuid":"12364728","full_name":"cobyism/dciy","owner":"cobyism","description":"Do Continuous Integration Yourself — a simple, open source CI server.","archived":false,"fork":false,"pushed_at":"2023-07-15T14:28:27.000Z","size":206,"stargazers_count":98,"open_issues_count":22,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-07T01:01:53.969Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cobyism.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2013-08-25T19:53:49.000Z","updated_at":"2024-09-12T05:41:43.000Z","dependencies_parsed_at":"2024-11-09T07:33:53.869Z","dependency_job_id":"5b21594a-7f2e-4794-80fa-f7dc3c1c2a2e","html_url":"https://github.com/cobyism/dciy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cobyism/dciy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobyism%2Fdciy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobyism%2Fdciy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobyism%2Fdciy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobyism%2Fdciy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cobyism","download_url":"https://codeload.github.com/cobyism/dciy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobyism%2Fdciy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281003219,"owners_count":26428017,"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-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":[],"created_at":"2024-11-09T07:32:27.216Z","updated_at":"2025-10-25T18:38:17.387Z","avatar_url":"https://github.com/cobyism.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Do Continuous Integration Yourself\n\nDCIY lets you do continuous integration testing locally through a web interface.\n\n### Screenshots\n\n![All builds](https://f.cloud.github.com/assets/296432/1341069/bfd8aec0-3641-11e3-81fb-663f6a181a07.png)\n\n![Build output](https://f.cloud.github.com/assets/296432/1341355/b31f82a2-3647-11e3-8216-7a90a3512aa3.png)\n\n## Why DCIY?\n\nIf you can run your tests for a project locally in the terminal, then you should\nbe able to run CI with a web interface and keep track of build output locally too.\nDCIY does exactly this. There is no system for multiple users, or for managing SSH keypairs,\nor anything else—all DCIY does is provide a web interface for checking out Git repositories\nand running CI on them, all as the same user (you) that is firing up the DCIY server.\n\n### Alternatives that might suit you better\n\nI started this project because I wanted to run CI on some other private\nside-projects I’m working on, and couldn’t find anything else lightweight\nenough that suited my needs. It is not intended to be a a fully-fledged,\nproduction-ready CI environment, so if you want something more that’s also free,\nyou should check out some of the following projects:\n\n- [Travis CI](https://travis-ci.org/) - If your project is public, this is probably your best option.\n- [Strider CD](http://stridercd.com/) - An open source continuous integration \u0026 deployment server written in Node.js.\n- [Kochiku](https://github.com/square/kochiku) (by [Square](https://squareup.com/)) - An open source distributed testing platform.\n- [Jenkins CI](http://jenkins-ci.org/) - Might be ugly, but it’s open source, widely used, and has a large following.\n\n### A note about security\n\nDCIY runs all commands on your behalf, so it’s probably not a good idea to\nuse DCIY in situations where you’re concerned about security. It is your\nresponsibility to ensure that you trust the contents of the branches you build,\nand that you shut down the DCIY server when you’re not using it.\n\nI’d love to find ways of making this less of an issue in the future, such as\nproviding a way to easily sandbox the build process (using some combination of\ntechnologies like Vagrant and Docker, maybe?), but even if that happens, it’s\nstill important to be aware of what code you’re running on your machine.\n\n## Getting DCIY running\n\nRun these commands from your terminal to get set up for hacking on this locally:\n\n```sh\ngit clone https://github.com/cobyism/dciy\ncd dciy\nscript/server\n```\n\nThe [`script/server`](./script/server) command should do all the bootstrapping and\nprocess starting necessary, and should give you a DCIY server running locally on\nat the following address: [`http://localhost:6161`](http://localhost:6161).\n\n## Using DCIY\n\n### Adding a project\n\nGo to [the root URL](http://localhost:6161/) or [`/projects`](http://localhost:6161/projects)\nand click \"New Project\", and type in the `\u003cowner\u003e/\u003crepo\u003e` part of your GitHub project\n(leave off the `https://github.com` and the `.git` parts). Submitting the form will\ngive you a new project which you can run builds for.\n\n### Configuring a Build\n\nBy default, DCIY will build your project by executing a file called `script/cibuild`. If\nyou'd like to override this and customize your build, add a file called `dciy.toml` to your\nproject's top-level directory. `dciy.toml` uses the following format:\n\n```toml\n[dciy.commands]\nprepare = [\"script/bootstrap\"]\ncibuild = [\"script/cibuild\"]\n```\n\nYou can specify more than one command for either of the steps by just adding elements to the array:\n\n```toml\n[dciy.commands]\nprepare = [\"bundle install\", \"bundle exec rake db:migrate\"]\ncibuild = [\"onecommand\", \"anothercommand\"]\n```\n\nAny commands listed in `prepare` are run first, followed by the ones specified in the `cibuild`\narray. A build is marked as successful only if all of these commands exit with successful\n(zero) exit statuses.\n\nEach time that your project is checked out, the `dciy.toml` file is rescanned for changes, so all you\nneed to do change your build is commit the updated command and DCIY will know\nabout it the next time it tries to build your branch.\n\n### Triggering a Build\n\nGo to [`/builds`](http://localhost:6161/builds) and click \"New Build\". Enter the\nbranch name or commit SHA that you want to build the project at, and submit the form.\nDCIY will then go off and do the following:\n\n- `cd` into a workspace directory for that project, or clone it down if it hasn’t seen it before.\n- Run a `git fetch` to make sure it has everything locally it needs.\n- Checks out the project at the specified branch or commit.\n- Initiates and prepares submodules, if there are any.\n- Uses your build configuration to run the project's test suite.\n\nKeeping an eye on [`/builds`](http://localhost:6161/builds) will show you the status of the build\nas it runs in the background, and you can click on the build to view the output once it’s finished.\n\n### GitHub:Enterprise\n\nTo use DCIY with a project on a GitHub:Enterprise instance, add a line to your `.env` file like so:\n\n```bash\nENTERPRISE_HOSTS=github.starship-enterprise.com\n```\n\nNow, when you're creating or editing projects, you can choose `github.starship-enterprise.com` as a\nGitHub host.\n\n## Contributing to DCIY\n\nI’d :heart: to receive contributions and feedback from anyone,\nand there’s more ways to do that than writing code.\n\n### Contributing code\n\n1. Fork the repository.\n2. Create a branch (e.g. `my-awesome-feature`) for the work you’re going to do.\n3. Make your awesome changes in your topic branch.\n4. Send a pull request from your branch to this repository.\n\n### Other ways to contribute\n\n- Try the project out yourself.\n- [File issues](https://github.com/cobyism/dciy/issues/new) about bugs, problems, or inconsistencies you run into.\n- [File issues](https://github.com/cobyism/dciy/issues/new) with suggestions, feature ideas, or UI mockups for improvements.\n- Read through the documentation (just this `README` for now), and look for ways it could be improved. Click \"Edit\" on the file and make the changes yourself if you can!\n\n## License\n\n[MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobyism%2Fdciy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcobyism%2Fdciy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobyism%2Fdciy/lists"}