cigale generates XML configuration that Jenkins can grok, from a bunch of human-readable, diff-friendly, YAML files.
Key points:
- The source code should be human-readable
- Macros are just a YAML subtree that can be instanciated with parameters of any types (scalars, sequences, etc.)
cigale is used in production at itch.io, and our job definitionso are a good comprehensive tour of:
Run:
gem install cigale
The test
command generates XML files for you to inspect
cigale test spec/fixtures/parity/builders/fixtures/ant001.yaml -o tmp
This would create the ./tmp
directory and generate XML files in there.
You can also specify a whole directory, in which case, cigale will parse the whole directory recursively and generate all job definition it finds:
cigale test ci/jobs -o tmp
To upload your job configuration to a running Jenkins instance
You can browse the spec/fixtures/
directory to see what's possible.
Another good reference sources is the Jenkins Job Builder documentation,
which cigale usually supports a superset of (at least in the categories listed
in spec/parity_spec.rb
)
Define a macro with a top-level element starting with :
- :git-advanced:
git:
url: 'git@{host}:{user}/{name}.git'
credentials-id: 'some-credentials'
branches:
- '{branches}'
N.B: Always use quotes when using variable substitution, e.g. '{a}'
, otherwise
it'll be interpreted as a YAML object.
Use a macro by having a subtree be an object whose only key is a dot followed by the macro's name:
- job:
name: cigale
scm:
- .git:
host: github.com
user: itchio
name: cigale
branches: **
The following will expand to:
- job:
name: cigale
scm:
- git:
url: '[email protected]:itchio/cigale.git'
credentials-id: 'some-credentials'
branches:
- '**'
If you're unsure what something will expand to, you can use the dump
command:
cigale dump my-def.yml -o tmp
Sometimes you want to do this:
- :cool-wrappers:
- ansi-color
- inject
- job:
name: foobar
wrappers:
- .cool-wrappers:
- xvfb
But that will expand to:
- job:
name: foobar
wrappers:
- - ansi-color
- inject
- xvfb
Which isn't valid. What you want instead is use a splat when calling cool-wrappers (see issue #2)
- job:
name: foobar
wrappers:
- ..cool-wrappers:
- xvfb
Which will expand to the expected result:
- job:
name: foobar
wrappers:
- ansi-color
- inject
- xvfb
- Fork it ( https://github.com/itchio/cigale/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
cigale is released under the MIT License.
Read the LICENSE.txt
file in this repository for more informations.