This is Devhints.io cheatsheets — a collection of cheatsheets I've written.

# CircleCI

## circle.yml

- machine: adjusting the VM to your preferences and requirements
- checkout: checking out and cloning your git repo
- dependencies: setting up your project’s language-specific dependencies
- database: preparing the databases for your tests
- test: running your tests
- deployment: deploying your code to your web servers

See: https://circleci.com/docs/configuration

## Sample

    ## Customize the test machine
    machine:

      timezone:
        America/Los_Angeles # Set the timezone

      # Version of ruby to use
      ruby:
        version:
          1.8.7-p358-falcon-perf

      # Override /etc/hosts
      hosts:
        circlehost: 127.0.0.1
        dev.mycompany.com: 127.0.0.1

      # Add some environment variables
      environment:
        CIRCLE_ENV: test
        DATABASE_URL: postgres://ubuntu:@127.0.0.1:5432/circle_test

    ## Customize checkout
    checkout:
      post:
        - git submodule sync
        - git submodule update --init # use submodules

    ## Customize dependencies
    dependencies:
      pre:
        - npm install coffeescript # install from a different package manager
        - gem uninstall bundler # use a custom version of bundler
        - gem install bundler --pre

      override:
        - bundle install: # note ':' here
            timeout: 180 # fail if command has no output for 3 minutes

      # we automatically cache and restore many dependencies between
      # builds. If you need to, you can add custom paths to cache:
      cache_directories:
        - "custom_1"   # relative to the build directory
        - "~/custom_2" # relative to the user's home directory

    ## Customize database setup
    database:
      override:
        # replace CircleCI's generated database.yml
        - cp config/database.yml.ci config/database.yml
        - bundle exec rake db:create db:schema:load

    ## Customize test commands
    test:
      override:
        - phpunit test/unit-tests # use PHPunit for testing
      post:
        - bundle exec rake jasmine:ci: # add an extra test type
            environment:
              RAILS_ENV: test
              RACK_ENV: test

    ## Customize deployment commands
    deployment:
      staging:
        branch: master
        heroku:
          appname: foo-bar-123

    ## Custom notifications
    notify:
      webhooks:
        # A list of hashes representing hooks. Only the url field is supported.
        - url: https://someurl.com/hooks/circle

See: https://circleci.com/docs/config-sample

Devhints.io cheatsheets is a collection of cheatsheets I've written over the years. Suggestions and corrections? Send them in. I'm Rico Sta. Cruz. Check out my Today I learned blog for more.