Project

rascal

0.0
Low commit activity in last 3 years
A long-lived project that still receives updates
Spin up CI environments locally.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

~> 0.20.3
 Project Readme

Rascal Tests

Use CI environments locally. Not quite a vagrant.

We use Gitlab-CI to run CI for our projects, using Docker containers.

In certain situations, it can be helpful to set up an environment identical to a CI node on your local machine. rascal allows you to do just that by parsing your CI config (currently only .gitlab-ci.yml), starting required services and bringing up a Docker container.

Installation

Install with

$ gem install rascal

Caveats

This is an early alpha version. Use at your own risk.

Only the parsing of .gitlab-ci.yml is currently supported, and only a subset of the possible syntax will be properly interpreted.

Usage

You need to add some extra information to your .gitlab-ci.yml. A working version might look like this:

# settings here override job settings
.rascal:                                 # add rascal specific config here
  repo_dir: /repo                        # /repo is the default
  variables:                             # extra env variables
    BUNDLE_PATH: /cache/bundle
  volumes:                               # mount these volumes
    cache: /cache                        # we will always mount a /builds volume
  before_shell:
    - bundle check                       # run this when starting a shell
  jobs:
    rspec:                               # override settings for a specific job
      variables:
        BUNDLE_GEMFILE = /repo/Gemfile

.environment: &environment
  image: registry.makandra.de/makandra/ci-images/test-env:2.5
  services:
    - name: registry.makandra.de/makandra/ci-images/pg:9.5
      alias: pg-db
    - name: registry.makandra.de/makandra/ci-images/redis:4
      alias: redis
  before_script:
    - ruby -v
    - bundle install
    - bundle exec rake db:create db:schema:load
  variables:
    BUNDLE_PATH: ./bundle/vendor
    DATABASE_URL: postgresql://pg_user@pg-db/test-db
    REDIS_URL: redis://redis
    PROMPT: CI env
  cache:
    paths:
      - ./bundle/vendor


# ============= Actual jobs ================

rspec:
  <<: *environment
  script:
    - bundle exec rake knapsack:rspec
  parallel: 4

Then, in your project root, run rascal shell rspec.

Commands

rascal shell

Start a docker container (plus required services) and open an interactive shell.

Currently requires a "bash" to exist.

rascal clean | --all [--volumes]

Stop and remove all created containers, services, networks for either the given or all jobs.

If --volumes is given, also remove all cached volumes.

rascal update | --all

Update all images for the given job, or all jobs.

License

The gem is available as open source under the terms of the MIT License.