README.md in deliver-0.4.2 vs README.md in deliver-0.5.0
- old
+ new
@@ -1,57 +1,62 @@
+<h3 align="center">
+ <a href="https://github.com/KrauseFx/fastlane">
+ <img src="assets/fastlane.png" width="150" />
+ <br />
+ fastlane
+ </a>
+</h3>
<p align="center">
-<b>Deliver</b> •
-<a href="https://github.com/KrauseFx/snapshot">Snapshot</a> •
-<a href="https://github.com/KrauseFx/frameit">FrameIt</a> •
-<a href="https://github.com/KrauseFx/PEM">PEM</a> •
-<a href="https://github.com/KrauseFx/sigh">Sigh</a>
+ <b>deliver</b> •
+ <a href="https://github.com/KrauseFx/snapshot">snapshot</a> •
+ <a href="https://github.com/KrauseFx/frameit">frameit</a> •
+ <a href="https://github.com/KrauseFx/PEM">PEM</a> •
+ <a href="https://github.com/KrauseFx/sigh">sigh</a>
</p>
-------
<p align="center">
<img src="assets/deliver.png">
</p>
-Deliver - Continuous Deployment for iOS
+deliver
============
[![Twitter: @KauseFx](https://img.shields.io/badge/contact-@KrauseFx-blue.svg?style=flat)](https://twitter.com/KrauseFx)
[![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/KrauseFx/deliver/blob/master/LICENSE)
[![Gem](https://img.shields.io/gem/v/deliver.svg?style=flat)](http://rubygems.org/gems/deliver)
[![Build Status](https://img.shields.io/travis/KrauseFx/deliver/master.svg?style=flat)](https://travis-ci.org/KrauseFx/deliver)
+###### Upload screenshots, metadata and your app to the App Store using a single command
-Updating your iOS app should not be painful and time consuming. Automate the
-whole process to start with Continuous Deployment.
+`deliver` **can upload ipa files, app screenshots and more to the iTunes Connect backend**, which means, you can deploy new iPhone app updates using the command line.
-```Deliver``` **can upload ipa files, app screenshots and more to the iTunes Connect backend**, which means, you can deploy new iPhone app updates just by using one command.
+Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx)
-Follow the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx)
-
-------
<p align="center">
<a href="#features">Features</a> •
<a href="#installation">Installation</a> •
<a href="#quick-start">Quick Start</a> •
<a href="#usage">Usage</a> •
- <a href="#credentials">Credentials</a> •
- <a href="#can-i-trust-deliver">Can I trust Deliver?</a> •
+ <a href="#can-i-trust-deliver">Can I trust deliver?</a> •
<a href="#tips">Tips</a> •
<a href="#need-help">Need help?</a>
</p>
-------
+<h5 align="center"><code>deliver</code> is part of <a href="http://fastlane.tools">fastlane</a>: connect all deployment tools into one streamlined workflow.</h5>
# Features
- Upload hundreds of screenshots with different languages from different devices
- Upload a new ipa file to iTunes Connect without Xcode from any computer
- Update app metadata
-- Easily implement a real Continuous Deployment process
+- Easily implement a real Continuous Deployment process using [fastlane](https://github.com/KrauseFx/fastlane)
- Store the configuration in git to easily deploy from **any** computer, including your Continuous Integration server (e.g. Jenkins)
-- Get a PDF preview of the fetched metadata before uploading the app metadata and screenshots to Apple: [Example Preview](https://github.com/krausefx/deliver/blob/master/assets/PDFExample.png?raw=1) (Yes, those are screenshots taken for all screen sizes)
+- Get a PDF preview of the fetched metadata before uploading the app metadata and screenshots to Apple: [Example Preview](https://github.com/krausefx/deliver/blob/master/assets/PDFExample.png?raw=1)
- Automatically create new screenshots with [Snapshot](https://github.com/KrauseFx/snapshot)
# Installation
Install the gem
@@ -120,45 +125,56 @@
If you want to have the screenshots inside a device frame, with a background and a fancy label on top, you can use [Sketch to App Store](http://sketchtoappstore.com/).
#### Upload a new ipa file with a changelog to the App Store
This will submit a new update to Apple
```ruby
-ipa "./latest.ipa"
+ipa do
+ system("ipa build")
+ "./name.ipa"
+end
+
changelog({
"en-US" => "This update adds cool new features",
"de-DE" => "Dieses Update ist super"
})
```
If you wish to skip automated submission to review you can provide `--skip-deploy` option when calling `deliver`. This will upload the ipa file and app metadata, but will not submit the app for review.
+The changelog is only used for App Store submission, not for TestFlight builds.
+
#### Upload a new ipa for TestFlight beta testers
In order to upload an `.ipa` file for Apple TestFlight you need to specify `beta_ipa` path in your `Deliverfile`
```ruby
-beta_ipa "./latest.ipa"
+beta_ipa do
+ system("ipa build")
+ "./name.ipa"
+end
```
and provide `--beta` option when calling `deliver`.
#### Implement blocks to run unit tests
+If you're using [fastlane](http://github.com/krausefx/fastlane), run tests and error blocks there.
+
+If you only use `deliver`, you can use the following blocks:
+
```ruby
unit_tests do
system("xctool test")
end
success do
- notifier = Slack::Notifier.new("SlackTeam", "SlackToken")
- notifier.ping "Successfully deployed new version"
+ system("Say 'success'")
end
error do |exception|
# custom exception handling here
raise "Something went wrong: #{exception}"
end
```
-For this example I used [slack-notifier](https://github.com/stevenosloan/slack-notifier).
#### Set a default language if you are lucky enough to only maintain one language
```ruby
default_language "en-US"
@@ -189,12 +205,12 @@
```ruby
ipa do
# Add any code you want, like incrementing the build
# number or changing the app identifier
- system("ipa build") # build your project using Shenzhen
- "./AppName.ipa" # Tell 'Deliver' where it can find the finished ipa file
+ system("ipa build --verbose") # build your project using Shenzhen
+ "./AppName.ipa" # Tell 'deliver' where it can find the finished ipa file
end
```
#### Hide the iTunes Transporter log
By default, the transporter log is shown, to be fully transparent. If you prefer to hide it, you can use the following option in your ```Deliverfile``` to disable it for both the upload and the download of metadata:
@@ -236,54 +252,36 @@
```
This project is well documented, check it out on [Rubydoc](http://www.rubydoc.info/github/KrauseFx/deliver/frames).
# Credentials
-The used username (Apple ID) will be stored in the ```Deliverfile``` by default. When you run ```deliver``` for the first time on another computer, you will only be asked for the password.
-Therefore it is easy to switch between projects, without needing to logout and login again.
+A detailed description about your credentials is available on a [seperate repo](https://github.com/KrauseFx/CredentialsManager).
-## Use the Keychain
-The first time you use *Deliver* you have to enter your iTunes Connect
-credentials. They will be stored in the Keychain.
-If you decide to remove your
-credentials from the Keychain, just open the *Keychain Access*, select
-*All Items* and search for 'deliver'.
-
-## Use environment variables
-You can use the following environment variables to use a specific account instead of the one stored in the keychain.
-This is especially important if you have more than one iTunes Connect account in your keychain:
-
- DELIVER_USER
- DELIVER_PASSWORD
-
-## Implement your custom solution
-Take a look at [Using the exposed Ruby classes](#use-the-exposed-ruby-classes).
-
-# Can I trust *Deliver*?
+# Can I trust `deliver`?
###How does this thing even work? Is magic involved? 🎩###
-```Deliver``` is fully open source, you can take a look at it. It will only modify the content you want to modify using the ```Deliverfile```. Your password will be stored in the Mac OS X keychain, but can also be passed using environment variables.
+`deliver` is fully open source, you can take a look at its source files. It will only modify the content you want to modify using the ```Deliverfile```. Your password will be stored in the Mac OS X keychain, but can also be passed using environment variables.
Before actually uploading anything to iTunes, ```Deliver``` will generate a [PDF summary](https://github.com/krausefx/deliver/blob/master/assets/PDFExample.png?raw=1) of the collected data.
-```Deliver``` uses the following techniques under the hood:
+```deliver``` uses the following techniques under the hood:
- The iTMSTransporter tool is used to fetch the latest app metadata from iTunes Connect and upload the updated app metadata back to Apple. It is also used to upload the ipa file. iTMSTransporter is a command line tool provided by Apple.
- With the iTMSTransporter you cannot create new version on iTunes Connect or actually publish the newly uploaded ipa file. This is why there is some browser scripting involved, using [Capybara](https://github.com/jnicklas/capybara) and [Poltergeist](https://github.com/teampoltergeist/poltergeist).
- The iTunes search API to find missing information about a certain app, like the *apple_id* when you only pass the *bundle_identifier*.
# Tips
-## Other helpful tools
-Check out other tools in this collection to speed up your deployment process:
-- [```snapshot```](https://github.com/KrauseFx/snapshot): Create hundreds of screenshots of your iPhone app... while doing something else.
-- [```frameit```](https://github.com/KrauseFx/frameit): Want a device frame around your screenshot? Do it in an instant!
-- [```PEM```](https://github.com/KrauseFx/pem): Tired of manually creating and maintaining your push certification profiles?
-- [```sigh```](https://github.com/KrauseFx/sigh): Because you would rather spend your time building stuff than fighting provisioning.
+## [`fastlane`](http://fastlane.tools) Toolchain
+- [`fastlane`](http://fastlane.tools): Connect all deployment tools into one streamlined workflow
+- [`snapshot`](https://github.com/KrauseFx/snapshot): Automate taking localized screenshots of your iOS app on every device
+- [`frameit`](https://github.com/KrauseFx/frameit): Quickly put your screenshots into the right device frames
+- [`PEM`](https://github.com/KrauseFx/pem): Automatically generate and renew your push notification profiles
+- [`sigh`](https://github.com/KrauseFx/sigh): Because you would rather spend your time building stuff than fighting provisioning
## Available language codes
```ruby
["da-DK", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi-FI", "fr-CA", "fr-FR", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "no-NO", "pt-BR", "pt-PT", "ru-RU", "sv-SE", "th-TH", "tr-TR", "vi-VI", "cmn-Hans", "zh_CN", "cmn-Hant"]
```
@@ -291,34 +289,21 @@
## Use a clean status bar
You can use [SimulatorStatusMagic](https://github.com/shinydevelopment/SimulatorStatusMagic) to clean up the status bar.
## Automatically create screenshots
-You can easily create screenshots completely automatically in the background using [```snapshot```](https://github.com/KrauseFx/snapshot), the little brother of ```deliver```.
+If you want to integrate ```deliver``` with ```snapshot```, check out [fastlane](https://github.com/KrauseFx/fastlane)!
-**Getting started:**
-
-- Run ```snapshot init``` in your project folder
-- You can edit the new ```snapshot.js``` file with your UI Automation code
-- Run ```snapshot``` to test if the screenshots work as expected
-- Remove the line ```screenshots_path``` from your ```Deliverfile``` to automatically create new screenshots for each deployment.
-
-From now on, when you start ```deliver```, it will first create the new screenshots for you, which then will be uploaded to iTunes Connect.
-
More information about ```snapshot``` can be found on the [Snapshot GitHub page](https://github.com/KrauseFx/snapshot).
## Jenkins integration
-Depending on how you set up your Jenkins instance, there might be problems with the ```phantomjs``` dependency.
+Detailed instructions about how to set up `deliver` and `fastlane` in `Jenkins` can be found in the [fastlane README](https://github.com/KrauseFx/fastlane#jenkins-integration).
-I've been using [Jenkins App](https://github.com/stisti/jenkins-app) for a long time, where ```Deliver``` works just fine.
-
-You should not deploy a new App Store update after every commit, since you still have to wait for your review. Instead I recommend using Git Tags, or custom triggers to deploy a new update.
-
## Editing the ```Deliverfile```
Change syntax highlighting to *Ruby*.
# Need help?
-- If there is a technical problem with ```Deliver```, submit an issue. Run ```deliver --trace``` to get the stacktrace.
+- If there is a technical problem with ```deliver```, submit an issue. Run ```deliver --trace``` to get the stack trace.
- I'm available for contract work - drop me an email: deliver@krausefx.com
# License
This project is licensed under the terms of the MIT license. See the LICENSE file.