GithubHelp home page GithubHelp logo

pivotal-cf / cf-rabbitmq-release Goto Github PK

View Code? Open in Web Editor NEW
26.0 72.0 56.0 16.17 MB

A BOSH Release of RabbitMQ

License: Apache License 2.0

Shell 35.66% HTML 11.43% Ruby 32.31% Go 20.60%
rabbitmq bosh bosh-release cloud-foundry pcf

cf-rabbitmq-release's Introduction

Cloud Foundry RabbitMQ Service

This repository contains the release for RabbitMQ for Cloud Foundry. It is deployable by BOSH in the usual way.

This release is now using BOSH v2 job links and cloud config and requires at least BOSH Director v255.5

Contributing

Even though the default branch is release, you should push changes to main. The release branch is the default so that bosh.io can find our releases.

Status

Job Status
unit tests hush-house.pivotal.io
integration tests hush-house.pivotal.io

Dependencies

Install (locally)

Clone the repository and install dependencies.

$ bundle install

Deploying

Once you have a BOSH Lite up and running locally, run scripts/deploy-to-bosh-lite.

To deploy the release into BOSH you will need a deployment manifest. You can generate a deployment manifest using the following command:

bosh interpolate \
  --vars-file=manifests/lite-vars-file.yml \
  manifests/cf-rabbitmq-template.yml

Alternatively, you can use the scripts/generate-manifest in order to generate a vanilla manifest for BOSH lite.

Currently, the release has only been tested to run on manual networks (https://bosh.io/docs/networks/).

Testing

Run bundle exec rake --tasks to list all the test subsets.

Unit Tests

To run only unit tests locally, run: scripts/unit-test.

Integration Tests

Integration tests require this release to be deployed into a BOSH director (see Deploying section above).

To run integration tests do scripts/integration-test.

Embedded Release Tests

Sometimes testing BOSH releases can lead to writing many tests at the top of the test pyramid, which can increase the feedback loop. Also when tests fail debugging can be hard given there are many components working together.

Embedded release tests are jobs that we deploy in a co-located way so that we can execute tests within a given deployment, inside a VM. The goal is to pull tests down the test pyramid trying to shorten the feedback loop and bring the tests closer to the code.

To execute embedded release tests you need to co-locate the tests within the release being tested and deploy. The deployment should fail if the tests fail. The tests we use can be found in the test release repo.

Bonus

Back in time Multitenant Broker Release used to live in the same Github repository as cf-rabbitmq-release, but not anymore. We have split both releases into two different repositories. They do different things and have different lifecyle, which explains our decision to do that.

A collection of ops-files and vars-files, features from Bosh 2 CLI, can be used to generate manifests. You’ll find a folder called manifests in both repositories with a manifest template, some ops-files and example of vars-files. It's not required to have two different deployments for cf-rabbitmq-release and cf-rabbitmq-multitenant-broker-release. In case you want to colocate both jobs you can leverage this ops-file to colocate them in the same deployment.

More information about bosh interpolate.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.