roadshow
Version, currently 1.1.03 versions
- 1.2.0latestNov 11, 2018
- 1.1.0not indexedNov 17, 2024
- 1.0.0not indexedNov 17, 2024
github.com/rf-/roadshow
A language-agnostic tool for testing code in different environments.
30 stars
0 dependents
License: MIT
Nothing has been indexed for 1.1.0 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.
Installation
# Add this to your shard.yml
dependencies:
roadshow:
github: rf-/roadshow
version: ~> 1.1.0Then run:
shards installshard.yml
No shard.yml has been indexed for 1.1.0. You can read it on the repository.
Dependencies
Unknown: the shard.yml for this version has not been read yet.
Documentation
Generated from the source of the current release. The first visit to a release that has never been documented starts its build.
README
This README is the one indexed from the repository at its latest ref, not from the tag for this version.
# Roadshow
[](http://travis-ci.org/rf-/roadshow)
## Summary
Roadshow is a tool that uses [Docker] and [Docker Compose] to make it easy to
test your library or application against different sets of dependencies without
relying on an external CI service.
## Setup
(Note: you have to have working `docker` and `docker-compose` executables on
your `PATH` to use Roadshow. On a Mac, you can install them using
[Homebrew-Cask].)
Roadshow's configuration is specified in a YAML file which lives at the top
level of your project and is named `scenarios.yml`.
To generate a skeleton for this file, use the `init` command:
roadshow init
Here's an example of a basic `scenarios.yml` file:
# Based on the name of your working directory by default. This will be
# prepended to the generated Docker image names created by Docker Compose.
project: someprojectname
# This configuration is shared by all of your scenarios, except where they
# override it. The format is identical to an individual scenario.
#
# Anywhere in this block, you can use the placeholder "{{scenario_name}}"
# to stand in for the name of each individual scenario.
shared:
# Specify the value to pass into FROM in the Dockerfile (i.e.,
# what image to use as a starting point for this scenario).
from: bash
# Specify the value to pass into CMD in the Dockerfile.
cmd: "echo 'default command' && echo $ENV_VAR"
# The individual scenarios.
scenarios:
one:
# Configuration for the main service in Docker Compose. Extra services
# aren't supported yet.
service:
environment:
ENV_VAR: scenario one
two:
cmd: "echo 'overridden command' && echo $ENV_VAR"
service:
environment:
ENV_VAR: scenario two
## Usage
Once you've set up your `scenarios.yml` file, you can generate Dockerfiles and
Docker Compose files into a subdirectory called `scenarios`:
roadshow generate
Once you've done that, you can easily run all of the scenarios' default
commands at once:
roadshow run
To run an individual scenario's default command, use the `-s` or `--scenario`
option:
roadshow run -s rails32
To run a non-default command across all scenarios or an individual scenario,
pass extra arguments, optionally preceded by `--` to avoid any ambiguity:
roadshow run rails console
roadshow run -s rails32 -- rails console
In all of these cases, if any of the individual commands exit with a non-zero
status then Roadshow will too.
If you want to clean up after yourself, you can remove all containers, images,
and volumes created by Roadshow for the current project:
roadshow clean
## Example: Testing a Ruby library
If you have a Ruby library that integrates with other gems, it can be hard to
test it across various versions of Ruby and your dependencies. A
`scenarios.yml` file for this situation might look like this:
project: my_cool_gem
shared:
cmd: "bundle install && bundle exec rake"
service:
volumes:
- bundle_{{scenario_name}}:/usr/local/bundle
environment:
BUNDLE_GEMFILE: scenarios/{{scenario_name}}.gemfile
volumes:
bundle_{{scenario_name}}:
scenarios:
rails32:
from: ruby:2.2
rails51:
from: ruby:2.4
The `bundle` volume will hold the installed dependencies for each scenario, so
that you don't have to reinstall them from scratch every time you run anything.
Once you run `roadshow generate` to create the `scenarios` directory, you can
add files called `scenarios/rails32.gemfile` and `scenarios/rails51.gemfile`
containing the gem dependencies for each scenario. For example,
`scenarios/rails51.gemfile` could look like this:
source "http://rubygems.org"
gem "rails", "5.1.0"
gem "sqlite3"
gemspec :path => "../"
Now you can just use `roadshow run` to run your tests across both versions.
## Example: Testing code with database dependencies
This is similar to the last example, but uses supporting containers -- a MySQL
instance in one scenario and a PostgreSQL instance in the other.
The `scenarios.yml` is more involved, using the `services` key to specify extra
containers and the `links` key to connect them to the main service:
```
project: databases
shared:
from: ruby:2.4
cmd: "(bundle check || bundle install) && bundle exec ruby test.rb"
service:
volumes:
- bundle_{{scenario_name}}:/usr/local/bundle
environment:
BUNDLE_GEMFILE: scenarios/{{scenario_name}}.gemfile
RAILS_ENV: development
volumes:
bundle_{{scenario_name}}:
data_{{scenario_name}}:
scenarios:
mysql:
service:
links:
- mysql:database_host
environment:
DATABASE_ADAPTER: mysql2
DATABASE_PORT: 3306
DATABASE_USER: root
services:
mysql:
image: mysql:8.0
volumes:
- "data_mysql:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: database_password
postgres:
service:
links:
- postgres:database_host
environment:
DATABASE_ADAPTER: postgresql
DATABASE_PORT: 5432
DATABASE_USER: postgres
services:
postgres:
image: postgres:9.6
volumes:
- "data_postgres:/var/lib/postgresql/data"
environment:
POSTGRES_PASSWORD: database_password
```
You can see the rest of the code [here](spec/projects/databases).
## License and Acknowledgements
Roadshow is available under the terms of the MIT license (see the LICENSE file
for details). It was inspired by [thoughtbot]'s excellent [Appraisal] tool for
Ruby.
[Appraisal]: https://github.com/thoughtbot/appraisal
[Docker Compose]: https://docs.docker.com/compose/
[Docker]: https://docker.com
[Homebrew-Cask]: https://github.com/caskroom/homebrew-cask
[thoughtbot]: https://github.com/thoughtbot
Links
This release
- Version
1.1.0- Tagged
- Nov 17, 2024
- Commit
ac3f82f5eabc- Indexed
- not yet
Dependents
No indexed shard depends on this one yet.
Repository
github.com/rf-/roadshow
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 3