Ironsmith is a simple continuous integration (build - > test -> release) tool.
How it works
You'll setup a project which will need the following information:
- Script to fetch from the repository
- Most of the time this will be a git clone call, but it can be a bash script calling an FTP or whatever
- Choose between polling for changes, or triggered builds
- Triggered builds will be triggered off of a web hook POST call
- Script to build the repository
- Script to test the repository
- Script to build the release file
- Path to the release file / can also be a script that returns a file name
- Script to set release name / version
An optional set of environment strings can be set to define the environment in which the scripts run.
"environment": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin", "GOPATH=@dir" ]
Projects will be defined in a project.json file for now. I may add a web interface later.
@dir in any of the script strings or environment entries will be replaced with an absolute path to the current working directory of the specific version being worked on.
sh ./build.sh @dir
Ironsmith will take the information for the defined project above and do the following
- Create a directory for the project
- Change to that directory
- Create a bolt DB file for the project to keep a log of all the builds
- Run an initial pull of the repository using the pull script
- Run version script
- If pull is a new version, then Run the Build Scripts
- If build succeeds, run the test scripts
- If test succeeds, run the release scripts
- Load the release file into project release folder with the release name
- Insert the release information and the complete log into the Bolt DB file
This tool will (originally at least) have no authentication. I plan on adding it later.
To add a new project, add a .json file to the projects/enabled folder. Look at the template.project.json file in the projects folder for an example.