Skip to content

Small utility to mirror TravisCI's build matrix on CircleCI.

License

Notifications You must be signed in to change notification settings

winksaville/circleci-matrix

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  • Linux: Linux Build
  • OSX: OSX Build

Small utility to mirror TravisCI's build matrix on CircleCI.

Installation

Simply download src/circleci-matrix.sh and make it executable:

curl -fsSL https://raw.githubusercontent.com/michaelcontento/circleci-matrix/master/src/circleci-matrix.sh \
    -o /usr/local/bin/circleci-matrix \
    && chmod +x /usr/local/bin/circleci-matrix

NOTE: The ubuntu user used by CircleCI machines has no permissions to write to /use/local/bin! A good alternative is ~/.local/bin!

As a alternative you could paste this into your circle.yml:

dependencies:
    pre:
    # Install circleci-matrix
    - mkdir -p ~/.local/bin
    - curl -fsSL https://raw.githubusercontent.com/michaelcontento/circleci-matrix/master/src/circleci-matrix.sh -o ~/.local/bin/circleci-matrix
    - chmod +x ~/.local/bin/circleci-matrix

Usage

Then add your build matrix to a new file .circleci-matrix.yml, which is the default name. If you wish to use another name you can set it via the command line option --config/-c ($ circleci-matrix --config my-config.yml).

env:
    - VERSION=5.0
    - VERSION=4.2
    - VERSION=4.1
    - VERSION=4.0

command:
    - echo 'hi!'
    - echo "Version is $VERSION"

Now you're ready to execute it with:

$ circleci-matrix
circleci-matrix version: 0.2.0
circleci node total: 1
circleci node index: 0

-----------------------------------------------------------------
Env: VERSION=5.0
-----------------------------------------------------------------
hi!
Version is 5.0

-----------------------------------------------------------------
Env: VERSION=4.2
-----------------------------------------------------------------
hi!
Version is 4.2

-----------------------------------------------------------------
Env: VERSION=4.1
-----------------------------------------------------------------
hi!
Version is 4.1

-----------------------------------------------------------------
Env: VERSION=4.0
-----------------------------------------------------------------
hi!
Version is 4.0

All commands have been executed with the right value in $VERSION.

Parallelism

CircleCI's parallelism is supported out of the box! Have a look at the following example where I set CIRCLE_NODE_TOTALand CIRCLE_NODE_INDEX manually first to 2 and 0, then to 2 and 1 to simulate two containers:

$ CIRCLE_NODE_TOTAL=2 CIRCLE_NODE_INDEX=0 circle-matrix
circleci-matrix version: 0.2.0
circleci node total: 2
circleci node index: 0

-----------------------------------------------------------------
Env: VERSION=5.0
-----------------------------------------------------------------
hi!
Version is 5.0

-----------------------------------------------------------------
Env: VERSION=4.1
-----------------------------------------------------------------
hi!
Version is 4.1

$ CIRCLE_NODE_TOTAL=2 CIRCLE_NODE_INDEX=1 circle-matrix
circleci-matrix version: 0.2.0
circleci node total: 2
circleci node index: 1

-----------------------------------------------------------------
Env: VERSION=4.2
-----------------------------------------------------------------
hi!
Version is 4.2

-----------------------------------------------------------------
Env: VERSION=4.0
-----------------------------------------------------------------
hi!
Version is 4.0

And here is the output when circleci runs our circle.yml file with 3 containers

Container 0 we see VERSION=5.0 and Version=4.0:

circleci-matrix version: 0.2.0
circleci node total: 3
circleci node index: 0

-----------------------------------------------------------------
Env: VERSION=5.0
-----------------------------------------------------------------
hi!
Version is 5.0

-----------------------------------------------------------------
Env: VERSION=4.0
-----------------------------------------------------------------
hi!
Version is 4.0

Container 1 we see VERSION=4.2:

circleci-matrix version: 0.2.0
circleci node total: 3
circleci node index: 1

-----------------------------------------------------------------
Env: VERSION=4.2
-----------------------------------------------------------------
hi!
Version is 4.2

Container 2 we see VERSION=4.1:

circleci-matrix version: 0.2.0
circleci node total: 3
circleci node index: 2

-----------------------------------------------------------------
Env: VERSION=4.1
-----------------------------------------------------------------
hi!
Version is 4.1

About

Small utility to mirror TravisCI's build matrix on CircleCI.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%