Go to file
Tim Shannon 05eb182419 Finished backend work
Added last of the web REST endpoints.
Added processing lock to ensure that only one project cycle is running
at a time.

Basically all that's left is the web front end
2016-04-13 20:53:49 +00:00
datastore Finished backend work 2016-04-13 20:53:49 +00:00
web Got basis for web done 2016-04-06 16:31:22 +00:00
.gitignore Ironsmith starting point 2016-03-29 21:43:58 +00:00
bindata.go Got basis for web done 2016-04-06 16:31:22 +00:00
cycle.go Finished backend work 2016-04-13 20:53:49 +00:00
error.go Added last of web REST endpoints, need to test and start on UI 2016-04-13 16:29:17 +00:00
exec.go Added logging and proper execution of commands 2016-04-05 21:59:52 +00:00
json.go Got basis for web done 2016-04-06 16:31:22 +00:00
LICENSE Fleshed out how projects will be loaded and run 2016-03-30 21:48:52 +00:00
log.go Added logging and proper execution of commands 2016-04-05 21:59:52 +00:00
main.go Fixed several issues, contineued web work 2016-04-06 21:59:24 +00:00
project.go Finished backend work 2016-04-13 20:53:49 +00:00
README.md Finished first pass on the full cycle 2016-04-01 19:30:17 +00:00
server.go Finished backend work 2016-04-13 20:53:49 +00:00
webProject.go Finished backend work 2016-04-13 20:53:49 +00:00

ironsmith

Ironsmith is a simple continuous integration (build - > test -> release) tool.

How it works

You'll setup a project which will need the following information:

  1. 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
  2. Script to build the repository
  3. Script to test the repository
  4. Script to build the release file
  5. Path to the release file
  6. Script to set release name / version

Projects will be defined in a project.json file for now. I may add a web interface later.

Ironsmith will take the information for the defined project above and do the following

  1. Create a directory for the project
  2. Change to that directory
  3. Create a bolt DB file for the project to keep a log of all the builds
  4. Run an initial pull of the repository using the pull script
  5. If pull succeeds, Run the Build Scripts
  6. If build succeeds, run the test scripts
  7. If test succeeds, run the release scripts
  8. Load the release file into project release folder with the release name
  9. 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.