{"id":15374721,"url":"https://github.com/mrtazz/ramrod","last_synced_at":"2025-04-13T07:15:54.855Z","repository":{"id":1035200,"uuid":"863717","full_name":"mrtazz/ramrod","owner":"mrtazz","description":"Command center for multiple CI instances/agents","archived":false,"fork":false,"pushed_at":"2010-09-19T16:03:34.000Z","size":130,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-13T07:15:50.131Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrtazz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-08-26T09:54:34.000Z","updated_at":"2019-02-14T11:54:25.000Z","dependencies_parsed_at":"2022-07-18T18:42:11.736Z","dependency_job_id":null,"html_url":"https://github.com/mrtazz/ramrod","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Framrod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Framrod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Framrod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Framrod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrtazz","download_url":"https://codeload.github.com/mrtazz/ramrod/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248675396,"owners_count":21143768,"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":[],"created_at":"2024-10-01T13:59:36.305Z","updated_at":"2025-04-13T07:15:54.814Z","avatar_url":"https://github.com/mrtazz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ramrod - CI Command Center/Aggregator\n\n## What's this?\nRamrod is a central command center for multiple [Continuous Integration][ci]\ninstances. It acts as a central management point for your code base. You can\nnotify Ramrod from your SCM server and it tells its agents about it. The\nagents then fetch the code, build the software, run the tests and inform\nRamrod about the result.\n\n## Motivation\nMy master's thesis project includes a software which has to run on Windows,\nUnix/Linux and the iPhone. I definitely wanted to have an easy-to-use build\nenvironment. However the build machines include Windows laptops, an old iMac\nand a FreeBSD server. Not all of these are suitable for a whole CI installation\nand I wanted to be able to easily add new machines.\n\n## API\nRamrod exposes a simple REST-like API for build notifications. If your\nRamrod instance is protected by HTTP Basic Auth, the corresponding\ncredentials have to be used.\n\n### SCM notification\nRamrod can be notified via a simple POST receive URL.\n\n    POST http://ramrod.domain/:projectname/build\n\n### Agent Notification\nA URL for every agent can be configured. Ramrod will then do a HTTP POST to\nthis URL for every agent.\n\n## Agents\n\n### Custom Agents\nSimple custom agents can easily be created for use with Ramrod.\nThey just have to accept HTTP POST on a URL to build the project. After the\nbuild (and tests), the agents have to notify Ramrod with a PUT to the\nfollowing URL:\n\n    PUT http://ramrod.domain/:project/notify\n\nThe body of the notification should contain the following data:\n\n    token = token\n    success = true/false\n    name = name of the updating agent\n\n`token` contains the corresponding authorization token and `success` defines\nwhether the build was successful or not. `name` contains the name of the\nupdating agent.\n\n\n### [CIJoe][cijoe] as an agent\nThe simple and powerful cijoe can be easily used as an agent. You can tell him\nto build via POST to the base URL. For callback notification, you have to\nimplement the hooks `.git/hooks/build-failed` and `.git/hooks/build-worked` to\ncontain a shell script which does a\n`curl -X PUT -d\"token=bla\u0026success=true\u0026name=foo\" http://ramrod.domain`.\n\n\n### [Integrity][integrity] as an agent\nIntegrity can also be used as an agent. It incorporates an HTTP notifier which\ncan be used as a callback. However token based authorization does not work with\nintegrity.\n\n## TODO\n\n* Notification system\n* Nicer design\n* Tests\n* Edit agents\n* Authentication\n\n## Installation\nJust clone the repository and run the executable:\n\n    git clone http://github.com/mrtazz/ramrod.git\n    bundle install\n    ./bin/ramrod\n\n### Dependencies\nFor dependencies see `Gemfile`.\n\n## Contributing\nIf you want to contribute to ramrod:\n\n* Fork the project.\n* Make your feature addition or bug fix.\n* Add tests for it. This is important so I don’t break it in a future version unintentionally.\n* Commit, do not mess with version\n* Send me a pull request. Bonus points for topic branches.\n\n\n## Deploy\nRamrod has a simple structure, as it doesn't build anything itself. You should\nbe able to easily deploy it to a hosting provider like [Heroku][heroku].\n\n## Thanks to and inspired by\n\n* [integrity][integrity]\n* [cijoe][cijoe]\n* [hudson][hudson]\n\n\n[ci]: http://en.wikipedia.org/wiki/Continuous_integration\n[integrity]: http://integrityapp.com/\n[cijoe]: http://github.com/defunkt/cijoe\n[heroku]: http://heroku.com\n[hudson]: http://hudson-ci.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrtazz%2Framrod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrtazz%2Framrod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrtazz%2Framrod/lists"}