Sha256: 4f878efa7668e66b87d628ca46ad53749369b02eefd2b445187b91bbabbb94ac

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

#!/usr/bin/env bash
trap "exit" SIGINT SIGTERM

command -v docker >/dev/null 2>&1 && docker info >/dev/null || {
  printf >&2 "\e[31mI require docker but it's not installed. Aborting.\e[0m\n"; exit 1;
}

DOCKER_COMPOSE_ARGS="-f docker-compose.ci.yml"

# Build Image
build(){
  docker-compose $DOCKER_COMPOSE_ARGS build test
}

# Wait services to be ready
wait_services(){
  function test_service {
    docker-compose $DOCKER_COMPOSE_ARGS run test sh -c "nc -z $1 $2"
  }

  count=0
  # Chain tests together by using &&
  until (
  <% if(selected?(:database, :mysql) || selected?(:database, :postgresql))-%>
  test_service '$DB_HOST' '$DB_PORT' && \
  <% end-%>
  echo "Services ready"
  )
  do
    ((count++))
    if [ $count -gt 50 ]
    then
      echo "Services didn't become ready in time"
      exit 1
    else
      echo "Waiting for services to become ready..."
    fi
    sleep 0.5
  done
}

# Prepare dependencies
dependencies(){
  docker-compose $DOCKER_COMPOSE_ARGS run test bundle install
}

assets() {
  docker-compose $DOCKER_COMPOSE_ARGS run test /bin/bash -c "bin/setup && bundle exec rake assets:precompile"
}

# Prepare database
database(){
  docker-compose $DOCKER_COMPOSE_ARGS run test bundle exec rake db:create db:schema:load
}

# Run the specs
tests(){
  [ -n "$CI" ] && {
    RSPEC_JUNIT_ARGS="-r rspec_junit_formatter --format RspecJunitFormatter -o $HOME/.rspec_reports/junit.xml"
    RSPEC_FORMAT_ARGS="--format progress --no-color"
  }
  docker-compose $DOCKER_COMPOSE_ARGS run test bundle exec rspec spec $RSPEC_FORMAT_ARGS $RSPEC_JUNIT_ARGS
}

# Run the complete ci build
no_ci(){
  build
  wait_services
  dependencies
  assets
  database
  tests
}

case "$1" in
  "")
    no_ci
    ;;
  "services")
    wait_services
    ;;
  "deps"|"dependencies")
    dependencies
    ;;
  "assets")
    assets
    ;;
  "db"|"database")
    database
    ;;
  "specs"|"tests")
    tests
    ;;
  "build")
    build
    ;;
  *)
    echo "Usage: cibuild [services|deps|assets|db|specs|build]"
    ;;
esac

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
potassium-5.2.2 lib/potassium/assets/bin/cibuild.erb