All Projects → Clivern → Rabbit

Clivern / Rabbit

Licence: mit
⚡️ A lightweight service that will build and store your go projects binaries, Integrated with Github, Gitlab, Bitbucket and Bitbucket Server.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Rabbit

Goreleaser
Deliver Go binaries as fast and easily as possible
Stars: ✭ 9,290 (+4921.62%)
Mutual labels:  package, release-automation
Semantic Release
📦🚀 Fully automated version management and package publishing
Stars: ✭ 14,364 (+7664.32%)
Mutual labels:  package, release-automation
Upmgitextension
This package extends the UI of Unity Package Manager (UPM) for the packages installed from git repository.
Stars: ✭ 438 (+136.76%)
Mutual labels:  package, bitbucket
Pyscaffold
🛠 Python project template generator with batteries included
Stars: ✭ 1,022 (+452.43%)
Mutual labels:  package, release-automation
Roadrunner Laravel
RoadRunner ⇆ Laravel bridge
Stars: ✭ 167 (-9.73%)
Mutual labels:  package
Ionic Toast
'ionic-toast' bower component for ionic framework applications
Stars: ✭ 160 (-13.51%)
Mutual labels:  package
Stock.indicators
Stock indicator technical analysis library package for .NET. Send in historical price quotes and get back desired technical indicators. Nothing more. It can be used in any market analysis software using standard OHLCV price quotes for equities, commodities, forex, cryptocurrencies, and others. We had private trading algorithms, machine learning, and charting systems in mind when originally creating this community library. Current indicators include: Accumulation/Distribution Line (ADL), Aroon Oscillator, Arnaud Legoux Moving Average (ALMA), Average Directional Index (ADX), Average True Range (ATR), Awesome Oscillator (AO), Balance of Power (BOP), Beta Coefficient, Bollinger Bands®, Chaikin Money Flow (CMF), Chaikin Oscillator, Chandelier Exit, Choppiness Index (CHOP), Commodity Channel Index (CCI), ConnorsRSI, Correlation Coefficient, Donchian Channels, Double Exponential Moving Average (DEMA), Elder-ray Index, Exponential Moving Average (EMA), Force Index, Fractal Chaos Bands (FCB), Gator Oscillator, Heikin-Ashi, Hull Moving Average (HMA), Ichimoku Cloud, Kaufman's Adaptive Moving Average (KAMA), KDJ Index, Keltner Channels, Momentum Oscillator, Money Flow Index (MFI), MESA Adaptive Moving Averages (MAMA), Moving Average Convergence/Divergence (MACD), Moving Average Envelopes, On-balance Volume (OBV), Parabolic SAR (stop and reverse), Percentage Volume Oscillator (PVO), Pivot Points and Rolling Pivot Points, Price Channels, Price (Comparative) Relative Strength (PRS), Price Momentum Oscillator (PMO), Rate of Change (ROC), Relative Strength Index (RSI), R-Squared (Coefficient of Determination), Simple Moving Average (SMA), Slope and Linear Regression, Smoothed Moving Average (SMMA), Standard Deviation, Stoller Average Range Channel (STARC) Bands, Stochastic Oscillator, Stochastic RSI, SuperTrend, Tillson T3 Moving Average, Triple Exponential Moving Average (TEMA), Triple EMA Oscillator (TRIX), True Strength Index (TSI), Ulcer Index, Ultimate Oscillator, Volume Simple Moving Average, Volume Weighted Average Price (VWAP), Vortex Indicator (VI), Weighted Moving Average (WMA), Williams %R, Williams Alligator, Williams Fractal, and Zig Zag.
Stars: ✭ 157 (-15.14%)
Mutual labels:  package
Stashnotifier Plugin
A Jenkins Plugin to notify Atlassian Stash|Bitbucket of build results
Stars: ✭ 157 (-15.14%)
Mutual labels:  bitbucket
Grav Plugin Git Sync
Collaboratively Synchronize your Grav `user` folder hosted on GitHub, BitBucket or GitLab
Stars: ✭ 183 (-1.08%)
Mutual labels:  bitbucket
Unityheapexplorer
A Memory Profiler, Debugger and Analyzer for Unity 2019.3 and newer.
Stars: ✭ 179 (-3.24%)
Mutual labels:  package
Bitbucket Branch Source Plugin
Bitbucket Branch Source Plugin
Stars: ✭ 172 (-7.03%)
Mutual labels:  bitbucket
Open manipulator
OpenManipulator for controlling in Gazebo and Moveit with ROS
Stars: ✭ 163 (-11.89%)
Mutual labels:  package
Laravel Messenger
Simple user messaging package for Laravel
Stars: ✭ 2,140 (+1056.76%)
Mutual labels:  package
Future.apply
🚀 R package: future.apply - Apply Function to Elements in Parallel using Futures
Stars: ✭ 159 (-14.05%)
Mutual labels:  package
Env Ci
Get environment variables exposed by CI services
Stars: ✭ 180 (-2.7%)
Mutual labels:  bitbucket
Bintray Release
A helper for releasing from gradle up to bintray
Stars: ✭ 1,878 (+915.14%)
Mutual labels:  release-automation
Json table
Flutter package: Json Table Widget to create table from json array
Stars: ✭ 178 (-3.78%)
Mutual labels:  package
Source Integration
Source control integration plugin framework for MantisBT, including support for Github, Gitlab, Bitbucket, Gitweb, Cgit, Subversion, Mercurial and more
Stars: ✭ 167 (-9.73%)
Mutual labels:  bitbucket
Patchman
Patchman is a Linux Patch Status Monitoring System
Stars: ✭ 163 (-11.89%)
Mutual labels:  package
Xrm Ci Framework
xRM CI Framework provides you with the tools automate the build and deployment of your CRM Solution. Using the framework to implement a fully automated DevOps pipeline will allow you to deploy more frequently with added consistency and quality.
Stars: ✭ 172 (-7.03%)
Mutual labels:  release-automation

Rabbit Logo

Rabbit

A lightweight service that will build and store your go projects binaries.

Rabbit 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 publish them.


Screenshot


Documentation

Development:

Rabbit uses Go Modules to manage dependencies. First Create a prod config file.

$ git clone https://github.com/Clivern/Rabbit.git
$ cp config.dist.yml config.prod.yml

Then add your default configs. You probably wondering how the following configs even work! let's pick one and explain.

The 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

# General App Configs
app:
    # Env mode (dev or prod)
    mode: ${RABBIT_APP_MODE:-dev}
    # HTTP port
    port: ${RABBIT_APP_PORT:-8080}
    # App URL
    domain: ${RABBIT_APP_DOMAIN:-http://127.0.0.1:8080}
    # TLS configs
    tls:
        status: ${RABBIT_APP_TLS_STATUS:-off}
        pemPath: ${RABBIT_APP_TLS_PEMPATH:-cert/server.pem}
        keyPath: ${RABBIT_APP_TLS_KEYPATH:-cert/server.key}

# Redis Configs
redis:
    addr: ${RABBIT_REDIS_ADDR:-localhost:6379}
    password: ${RABBIT_REDIS_PASSWORD:- }
    db: ${RABBIT_REDIS_DB:-0}

# Message Broker Configs
broker:
    # Broker driver (native or redis)
    driver: ${RABBIT_BROKER_DRIVER:-native}
    # Native driver configs
    native:
        # Queue max capacity
        capacity: ${RABBIT_BROKER_NATIVE_CAPACITY:-50}
        # Number of concurrent workers
        workers: ${RABBIT_BROKER_NATIVE_WORKERS:-1}
    # Redis configs
    redis:
        channel: ${RABBIT_BROKER_REDIS_CHANNEL:-rabbit}

# Log configs
log:
    # Log level, it can be debug, info, warn, error, panic, fatal
    level:  ${RABBIT_LOG_LEVEL:-warn}
    # output can be stdout or abs path to log file /var/logs/rabbit.log
    output:  ${RABBIT_LOG_OUTPUT:-stdout}
    # Format can be json
    format:  ${RABBIT_LOG_FORMAT:-json}

# Release configs
releases:
    # Releases absolute path
    path: ${RABBIT_RELEASES_PATH:-/app/var/releases}
    name: ${RABBIT_RELEASES_NAME:-"[.Tag]"}

# Build configs
build:
    # Build absolute path
    path: ${RABBIT_BUILD_PATH:-/app/var/build}
    # Number of parallel builds
    parallelism: ${RABBIT_BUILD_PARALLELISM:-1}

# Application Database
database:
    # Database driver (redis)
    driver: ${RABBIT_DATABASE_DRIVER:-redis}
    # Redis
    redis:
        hash_prefix: ${RABBIT_DATABASE_REDIS_HASH_PREFIX:-rabbit_}

# Third Party API Integration
integrations:
    # Github Configs
    github:
        # Webhook URI (Full URL will be app.domain + webhook_uri)
        webhook_uri: ${RABBIT_INTEGRATION_GITHUB_WEBHOOK_URI:-/webhook/github}
        # Webhook Secret (From Repo settings page > Webhooks)
        webhook_secret: ${RABBIT_INTEGRATION_GITHUB_WEBHOOK_SECRET:- }
        # whether to use ssh or https to clone
        clone_with: ${RABBIT_INTEGRATION_GITHUB_CLONE_WITH:-https}
        # HTTPS URL format, Full name will be something like Clivern/Rabbit
        https_format: ${RABBIT_INTEGRATION_GITHUB_HTTPS_FORMAT:-https://github.com/[.RepoFullName].git}
        # SSH URL format, Full name will be something like Clivern/Rabbit
        ssh_format: ${RABBIT_INTEGRATION_GITHUB_SSH_FORMAT:[email protected]:[.RepoFullName].git}
    # Bitbucket Configs
    bitbucket:
        # Webhook URI (Full URL will be app.domain + webhook_uri)
        webhook_uri: ${RABBIT_INTEGRATION_BITBUCKET_WEBHOOK_URI:-/webhook/bitbucket}
        # whether to use ssh or https to clone
        clone_with: ${RABBIT_INTEGRATION_BITBUCKET_CLONE_WITH:-https}
        # HTTPS URL format, Full name will be something like Clivern/Rabbit
        https_format: ${RABBIT_INTEGRATION_BITBUCKET_HTTPS_FORMAT:-https://bitbucket.org/[.RepoFullName].git}
        # SSH URL format, Full name will be something like Clivern/Rabbit
        ssh_format: ${RABBIT_INTEGRATION_BITBUCKET_SSH_FORMAT:[email protected]:[.RepoFullName].git}
    bitbucket_server:
        # Webhook URI (Full URL will be app.domain + webhook_uri)
        webhook_uri: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_WEBHOOK_URI:-/webhook/bitbucket-server}
        # Webhook Secret (From Repo settings page > Webhooks)
        webhook_secret: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_WEBHOOK_SECRET:- }
        # whether to use ssh or https to clone
        clone_with: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_CLONE_WITH:-https}
        # HTTPS URL format, Full name will be something like Clivern/Rabbit
        https_format: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_HTTPS_FORMAT:-https://git.bitbucket.com/scm/[.RepoFullName].git}
        # SSH URL format, Full name will be something like Clivern/Rabbit
        ssh_format: ${RABBIT_INTEGRATION_BITBUCKET_SERVER_SSH_FORMAT:-ssh://[email protected]/[.RepoFullName].git}
    gitlab:
        # Webhook URI (Full URL will be app.domain + webhook_uri)
        webhook_uri: ${RABBIT_INTEGRATION_GITLAB_WEBHOOK_URI:-/webhook/gitlab}
        # Webhook Secret (From Repo settings page > Webhooks)
        webhook_secret: ${RABBIT_INTEGRATION_GITLAB_WEBHOOK_SECRET:- }
        # whether to use ssh or https to clone
        clone_with: ${RABBIT_INTEGRATION_GITLAB_CLONE_WITH:-https}
        # HTTPS URL format, Full name will be something like Clivern/Rabbit
        https_format: ${RABBIT_INTEGRATION_GITLAB_HTTPS_FORMAT:-https://gitlab.com/[.RepoFullName].git}
        # SSH URL format, Full name will be something like Clivern/Rabbit
        ssh_format: ${RABBIT_INTEGRATION_GITLAB_SSH_FORMAT:[email protected]:[.RepoFullName].git}

And then run the application.

$ go build rabbit.go
$ ./rabbit

// OR

$ go run rabbit.go

// To Provide a custom config file
$ ./rabbit -config=/custom/path/config.prod.yml
$ go run rabbit.go -config=/custom/path/config.prod.yml

Deployment

Rabbit 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.

On a Linux Server

Make sure you have git, golang 1.12 and goreleaser installed, and make goreleaser executable from everywhere.

# To download the latest goreleaser binary for linux (https://github.com/goreleaser/goreleaser/releases)
$ curl -sL https://github.com/goreleaser/goreleaser/releases/download/v0.116.0/goreleaser_Linux_x86_64.tar.gz | tar xz

Also 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.

Then download the latest Rabbit binary.

$ curl -sL https://github.com/Clivern/Rabbit/releases/download/x.x.x/rabbit_x.x.x_OS.tar.gz | tar xz

Create your config file as explained before on development part and run rabbit with systemd or anything else you prefer.

$ ./rabbit -config=/custom/path/config.prod.yml

On Docker

Running rabbit with docker-compose is pretty straightforward.

$ git clone https://github.com/Clivern/Rabbit.git
$ cd Rabbit/deployments/docker
$ docker-compose build
$ docker-compose up -d

Docker 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.

Versioning

For transparency into our release cycle and in striving to maintain backward compatibility, Rabbit is maintained under the Semantic Versioning guidelines and release process is predictable and business-friendly.

See the Releases section of our GitHub project for changelogs for each release version of Rabbit. It contains summaries of the most noteworthy changes made in each release.

Bug tracker

If you have any suggestions, bug reports, or annoyances please report them to our issue tracker at https://github.com/clivern/rabbit/issues

Security Issues

If you discover a security vulnerability within Rabbit, please send an email to [email protected]

Contributing

We are an open source, community-driven project so please feel free to join us. see the contributing guidelines for more details.

License

© 2019, Clivern. Released under MIT License.

Rabbit is authored and maintained by @Clivern.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].