{"id":20677777,"url":"https://github.com/clivern/rabbit","last_synced_at":"2025-04-04T13:09:40.096Z","repository":{"id":35453769,"uuid":"188122966","full_name":"Clivern/Rabbit","owner":"Clivern","description":"⚡️ A lightweight service that will build and store your go projects binaries, Integrated with Github, Gitlab, Bitbucket and  Bitbucket Server.","archived":false,"fork":false,"pushed_at":"2025-03-26T21:04:29.000Z","size":969,"stargazers_count":196,"open_issues_count":17,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-28T12:05:54.364Z","etag":null,"topics":["bitbucket","clivern","github","go-build","golang","goreleaser","package","rabbit","release-automation","releaser"],"latest_commit_sha":null,"homepage":"","language":"Go","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/Clivern.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"custom":"buymeacoffee.com/clivern"}},"created_at":"2019-05-22T22:38:00.000Z","updated_at":"2025-02-11T21:34:36.000Z","dependencies_parsed_at":"2023-12-18T21:53:45.056Z","dependency_job_id":"5a7ac7e9-0f78-4f67-b198-a18d27ec2f7f","html_url":"https://github.com/Clivern/Rabbit","commit_stats":{"total_commits":192,"total_committers":5,"mean_commits":38.4,"dds":"0.26041666666666663","last_synced_commit":"c64101a722419af1fd9ca8da501b41279a9f9a35"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRabbit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRabbit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRabbit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FRabbit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Clivern","download_url":"https://codeload.github.com/Clivern/Rabbit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247182337,"owners_count":20897379,"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":["bitbucket","clivern","github","go-build","golang","goreleaser","package","rabbit","release-automation","releaser"],"created_at":"2024-11-16T21:17:05.256Z","updated_at":"2025-04-04T13:09:40.078Z","avatar_url":"https://github.com/Clivern.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"Rabbit Logo\" src=\"https://raw.githubusercontent.com/clivern/Rabbit/master/assets/img/gopher.png\" width=\"150\" /\u003e\n    \u003ch3 align=\"center\"\u003eRabbit\u003c/h3\u003e\n    \u003cp align=\"center\"\u003eA lightweight service that will build and store your go projects binaries.\u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://travis-ci.org/Clivern/Rabbit\"\u003e\u003cimg src=\"https://travis-ci.org/Clivern/Rabbit.svg?branch=master\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Rabbit/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Version-2.0.1-red.svg\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://hub.docker.com/r/clivern/rabbit\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docker-Latest-orange\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://goreportcard.com/report/github.com/Clivern/Rabbit\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/Clivern/Rabbit\"\u003e\u003c/a\u003e\n        \u003ca href=\"https://github.com/Clivern/Rabbit/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/LICENSE-MIT-orange.svg\"\u003e\u003c/a\u003e\n    \u003c/p\u003e\n\u003c/p\u003e\n\nRabbit is a lightweight service that will build and store your go projects binaries. Once a VCS system (Github, Gitlab, Bitbucket or Bitbucket Server) notifies rabbit of a new release, it clones the project, builds different binaries and publishes them.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Clivern/Rabbit/master/assets/img/diagram_3.png?v=0.0.2\" /\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\u003cp align=\"center\"\u003e\n    \u003ch3 align=\"center\"\u003eScreenshot\u003c/h3\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Clivern/Rabbit/master/assets/img/screenshot.png?v=0.0.2\" /\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n## Documentation\n\n### Development:\n\nRabbit uses [Go Modules](https://github.com/golang/go/wiki/Modules) to manage dependencies. First Create a prod config file.\n\n```bash\n$ git clone https://github.com/Clivern/Rabbit.git\n$ cp config.dist.yml config.prod.yml\n```\n\nThen add your default configs. You probably wondering how the following configs even work! let's pick one and explain.\n\nThe item `mode: ${RABBIT_APP_MODE:-dev}` means that the mode is dev unless environment variable `RABBIT_APP_MODE` is defined. so you can always override the value by defining the environment variable `export RABBIT_APP_MODE=prod`. and same for others\n\n```yml\n# General App Configs\napp:\n    # Env mode (dev or prod)\n    mode: ${RABBIT_APP_MODE:-dev}\n    # HTTP port\n    port: ${RABBIT_APP_PORT:-8080}\n    # App URL\n    domain: ${RABBIT_APP_DOMAIN:-http://127.0.0.1:8080}\n    # TLS configs\n    tls:\n        status: ${RABBIT_APP_TLS_STATUS:-off}\n        pemPath: ${RABBIT_APP_TLS_PEMPATH:-cert/server.pem}\n        keyPath: ${RABBIT_APP_TLS_KEYPATH:-cert/server.key}\n\n# Redis Configs\nredis:\n    addr: ${RABBIT_REDIS_ADDR:-localhost:6379}\n    password: ${RABBIT_REDIS_PASSWORD:- }\n    db: ${RABBIT_REDIS_DB:-0}\n\n# Message Broker Configs\nbroker:\n    # Broker driver (native or redis)\n    driver: ${RABBIT_BROKER_DRIVER:-native}\n    # Native driver configs\n    native:\n        # Queue max capacity\n        capacity: ${RABBIT_BROKER_NATIVE_CAPACITY:-50}\n        # Number of concurrent workers\n        workers: ${RABBIT_BROKER_NATIVE_WORKERS:-1}\n    # Redis configs\n    redis:\n        channel: ${RABBIT_BROKER_REDIS_CHANNEL:-rabbit}\n\n# Log configs\nlog:\n    # Log level, it can be debug, info, warn, error, panic, fatal\n    level:  ${RABBIT_LOG_LEVEL:-warn}\n    # output can be stdout or abs path to log file /var/logs/rabbit.log\n    output:  ${RABBIT_LOG_OUTPUT:-stdout}\n    # Format can be json\n    format:  ${RABBIT_LOG_FORMAT:-json}\n\n# Release configs\nreleases:\n    # Releases absolute path\n    path: ${RABBIT_RELEASES_PATH:-/app/var/releases}\n    name: ${RABBIT_RELEASES_NAME:-\"[.Tag]\"}\n\n# Build configs\nbuild:\n    # Build absolute path\n    path: ${RABBIT_BUILD_PATH:-/app/var/build}\n    # Number of parallel builds\n    parallelism: ${RABBIT_BUILD_PARALLELISM:-1}\n\n# Application Database\ndatabase:\n    # Database driver (redis)\n    driver: ${RABBIT_DATABASE_DRIVER:-redis}\n    # Redis\n    redis:\n        hash_prefix: ${RABBIT_DATABASE_REDIS_HASH_PREFIX:-rabbit_}\n\n# Third Party API Integration\nintegrations:\n    # Github Configs\n    github:\n        # Webhook URI (Full URL will be app.domain + webhook_uri)\n        webhook_uri: ${RABBIT_INTEGRATION_GITHUB_WEBHOOK_URI:-/webhook/github}\n        # Webhook Secret (From Repo settings page \u003e Webhooks)\n        webhook_secret: ${RABBIT_INTEGRATION_GITHUB_WEBHOOK_SECRET:- }\n        # whether to use ssh or https to clone\n        clone_with: ${RABBIT_INTEGRATION_GITHUB_CLONE_WITH:-https}\n        # HTTPS URL format, Full name will be something like Clivern/Rabbit\n        https_format: ${RABBIT_INTEGRATION_GITHUB_HTTPS_FORMAT:-https://github.com/[.RepoFullName].git}\n        # SSH URL format, Full name will be something like Clivern/Rabbit\n        ssh_format: ${RABBIT_INTEGRATION_GITHUB_SSH_FORMAT:-git@github.com:[.RepoFullName].git}\n    # Bitbucket Configs\n    bitbucket:\n        # Webhook URI (Full URL will be app.domain + webhook_uri)\n        webhook_uri: ${RABBIT_INTEGRATION_BITBUCKET_WEBHOOK_URI:-/webhook/bitbucket}\n        # whether to use ssh or https to clone\n        clone_with: ${RABBIT_INTEGRATION_BITBUCKET_CLONE_WITH:-https}\n        # HTTPS URL format, Full name will be something like Clivern/Rabbit\n        https_format: ${RABBIT_INTEGRATION_BITBUCKET_HTTPS_FORMAT:-https://bitbucket.org/[.RepoFullName].git}\n        # SSH URL format, Full name will be something like Clivern/Rabbit\n        ssh_format: ${RABBIT_INTEGRATION_BITBUCKET_SSH_FORMAT:-git@bitbucket.org:[.RepoFullName].git}\n    bitbucket_server:\n        # Webhook URI (Full URL will be app.domain + webhook_uri)\n        webhook_uri: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_WEBHOOK_URI:-/webhook/bitbucket-server}\n        # Webhook Secret (From Repo settings page \u003e Webhooks)\n        webhook_secret: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_WEBHOOK_SECRET:- }\n        # whether to use ssh or https to clone\n        clone_with: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_CLONE_WITH:-https}\n        # HTTPS URL format, Full name will be something like Clivern/Rabbit\n        https_format: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_HTTPS_FORMAT:-https://git.bitbucket.com/scm/[.RepoFullName].git}\n        # SSH URL format, Full name will be something like Clivern/Rabbit\n        ssh_format: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_SSH_FORMAT:-ssh://git@git.bitbucket.com/[.RepoFullName].git}\n    gitlab:\n        # Webhook URI (Full URL will be app.domain + webhook_uri)\n        webhook_uri: ${RABBIT_INTEGRATION_GITLAB_WEBHOOK_URI:-/webhook/gitlab}\n        # Webhook Secret (From Repo settings page \u003e Webhooks)\n        webhook_secret: ${RABBIT_INTEGRATION_GITLAB_WEBHOOK_SECRET:- }\n        # whether to use ssh or https to clone\n        clone_with: ${RABBIT_INTEGRATION_GITLAB_CLONE_WITH:-https}\n        # HTTPS URL format, Full name will be something like Clivern/Rabbit\n        https_format: ${RABBIT_INTEGRATION_GITLAB_HTTPS_FORMAT:-https://gitlab.com/[.RepoFullName].git}\n        # SSH URL format, Full name will be something like Clivern/Rabbit\n        ssh_format: ${RABBIT_INTEGRATION_GITLAB_SSH_FORMAT:-git@gitlab.com:[.RepoFullName].git}\n```\n\nAnd then run the application.\n\n```bash\n$ go build rabbit.go\n$ ./rabbit\n\n// OR\n\n$ go run rabbit.go\n\n// To Provide a custom config file\n$ ./rabbit -config=/custom/path/config.prod.yml\n$ go run rabbit.go -config=/custom/path/config.prod.yml\n```\n\n## Deployment\n\nRabbit needs a decent resources to be able to work properly because the build process itself done by goreleaser and it consumes a lot. So keep `build.parallelism` equal `1` and increase if you have more resources and would like to speed the build process.\n\n### On a Linux Server\n\nMake sure you have `git`, `golang 1.12` and `goreleaser` installed, and make goreleaser executable from everywhere.\n\n```bash\n# To download the latest goreleaser binary for linux (https://github.com/goreleaser/goreleaser/releases)\n$ curl -sL https://github.com/goreleaser/goreleaser/releases/download/v0.116.0/goreleaser_Linux_x86_64.tar.gz | tar xz\n```\n\nAlso make sure you are able to clone all your repositories in a non-interactive way. Just configure ssh-key and add the remote VCS to your known hosts.\n\nThen download [the latest Rabbit binary.](https://github.com/Clivern/Rabbit/releases)\n\n```bash\n$ curl -sL https://github.com/Clivern/Rabbit/releases/download/x.x.x/rabbit_x.x.x_OS.tar.gz | tar xz\n```\n\nCreate your config file as explained before on development part and run rabbit with systemd or anything else you prefer.\n\n```\n$ ./rabbit -config=/custom/path/config.prod.yml\n```\n\n### On Docker\n\nRunning rabbit with `docker-compose` is pretty straightforward.\n\n```bash\n$ git clone https://github.com/Clivern/Rabbit.git\n$ cd Rabbit/deployments/docker\n$ docker-compose build\n$ docker-compose up -d\n```\n\nDocker will mount you host server `~/.ssh` directory in order to be able to clone repositories that need ssh key. Please make sure it has the right permissions and also remote VCS added to known hosts. otherwise rabbit will stuck on git interactive clone.\n\n## Versioning\n\nFor transparency into our release cycle and in striving to maintain backward compatibility, Rabbit is maintained under the [Semantic Versioning guidelines](https://semver.org/) and release process is predictable and business-friendly.\n\nSee the [Releases section of our GitHub project](https://github.com/clivern/rabbit/releases) for changelogs for each release version of Rabbit. It contains summaries of the most noteworthy changes made in each release.\n\n\n## Bug tracker\n\nIf you have any suggestions, bug reports, or annoyances please report them to our issue tracker at https://github.com/clivern/rabbit/issues\n\n\n## Security Issues\n\nIf you discover a security vulnerability within Rabbit, please send an email to [hello@clivern.com](mailto:hello@clivern.com)\n\n\n## Contributing\n\nWe are an open source, community-driven project so please feel free to join us. see the [contributing guidelines](CONTRIBUTING.md) for more details.\n\n\n## License\n\n© 2019, Clivern. Released under [MIT License](https://opensource.org/licenses/mit-license.php).\n\n**Rabbit** is authored and maintained by [@Clivern](http://github.com/clivern).\n","funding_links":["buymeacoffee.com/clivern"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Frabbit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclivern%2Frabbit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Frabbit/lists"}