You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Tim Shannon eaf4d9c4f5 gobs webhook test 5 years ago
datastore Added max version limit for projects 5 years ago
web Fixed small issue with logs in table formatting 5 years ago
.gitignore Ironsmith starting point 5 years ago
LICENSE Fleshed out how projects will be loaded and run 5 years ago
README.md Added time took to release log statement 5 years ago
bindata.go Fixed small issue with logs in table formatting 5 years ago
build.sh gobs webhook test 5 years ago
cycle.go Changed forced build to be only off of trigger 5 years ago
error.go Updated import paths to new townsourced organization 5 years ago
exec.go Added max version limit for projects 5 years ago
json.go Got basis for web done 5 years ago
log.go Added logging and proper execution of commands 5 years ago
main.go Updated import paths to new townsourced organization 5 years ago
project.go Changed forced build to be only off of trigger 5 years ago
server.go More web work 5 years ago
webProject.go Changed forced build to be only off of trigger 5 years ago

README.md

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 / can also be a script that returns a file name
  6. 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

  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. Run version script
  6. If pull is a new version, then Run the Build Scripts
  7. If build succeeds, run the test scripts
  8. If test succeeds, run the release scripts
  9. Load the release file into project release folder with the release name
  10. 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.