Skip to content

CinderCI/cinder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cinder Dependency Status Code Climate

Continuous Delivery for iOS Apps.

Cinder favors convention over configuration. Of the myriad ways to organize an iOS project, Cinder supports a subset that still gets the job done.

Flaming Butterfly and Flowers

iOS projects using Cinder:

  • have developers up and running after running a single command following git clone
  • build your app's ipa whenever code is pushed to your GitHub repo
  • publish successful builds of master as versions in TestFlight. The "What's New" shows changes since the last build and since the last release.
  • publish successful builds of topic branches as comments in the pull request with links to install a version of the app with that feature
  • comment and close pull requests of failed builds

Items in de-emphasized text are still being developed.

Usage

  • script/setup - run this after cloning a project and you're ready to develop in Xcode. Re-run it whenever project dependencies have changed.

  • script/cibuild - is the two-liner shell script which tells the Janky continuous integration server how to build Ad Hoc or Enterprise versions of your app:

      #!/bin/bash
      exec "$(dirname $0)/build" --configuration Enterprise
    
  • bin/cinder lint - will guide you through setting up a new project or modifying an existing project to work with Cinder.

New Project Quickstart

In the top-level of your project run:

ruby -e "$(curl -fsSL https://raw.github.com/detroit-labs/cinder/hot)"

This is a one-time initialization that only one developer must complete. Afterwards, anyone cloning the project can simply run:

script/setup

Installation for Existing Projects

If your project doesn't use Bundler (e.g. doesn't have a Gemfile) then follow New Project Quickstart above.

Cinder is available on Rubygems. Add this line to your Gemfile:

gem 'cinder'

Cinder expects that you use binstubs with Bundler and vendor gems under .bundle. Run:

bundle install --binstubs --path .bundle
git add .bundle/config
echo '/.bundle/ruby/' >>.gitignore

Henceforth bundle install without flags is sufficient.

The cinder CLI should now be available under bin/. It will guide you the rest of the way:

bin/cinder lint
# 10 fix errors
# 20 bin/cinder lint
# 30 if errors GOTO 10

Cinder is Opinionated

  • Ruby is an integral part of the development, build, and release toolchain for native iOS apps
  • Ruby versions are managed by rbenv
  • Automation always wins
  • Convention over configuration; when there's more than one way to do it, pick one

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Credits

Cinder is built and maintained at Detroit Labs by Tim Taylor and Nate West.

Detroit Labs

License

Cinder is released under the MIT license.