deliver •
snapshot •
frameit •
PEM •
sigh •
produce •
cert
-------
sigh
============
[![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/sigh/blob/master/LICENSE)
[![Gem](https://img.shields.io/gem/v/sigh.svg?style=flat)](http://rubygems.org/gems/sigh)
###### Because you would rather spend your time building stuff than fighting provisioning
Tired of manually creating, renewing and downloading your iOS provisioning profiles?
```sigh``` handles all that for you. Just run ```sigh``` and it will do the rest.
Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx)
-------
Features •
Installation •
Usage •
Resign •
How does it work? •
Tips •
Need help?
-------
sigh
is part of fastlane: connect all deployment tools into one streamlined workflow.
# Features
- **Download** the latest provisioning profile for your app
- **Renew** a provisioning profile, when it has expired
- **Repair** a provisioning profile, when it is broken
- **Create** a new provisioning profile, if it doesn't exist already
- Supports **App Store**, **Ad Hoc** and **Development** profiles
- Support for **multiple Apple accounts**, storing your credentials securely in the Keychain
- Support for **multiple Teams**
- Support for **Enterprise Profiles**
To automate iOS Push profiles you can use [PEM](https://github.com/KrauseFx/PEM).
### Why not let Xcode do the work?
- ```sigh``` can easily be integrated into your CI-server (e.g. Jenkins)
- Xcode sometimes invalidates all existing profiles ([Screenshot](assets/SignErrors.png))
- You have control over what happens
- You still get to have the signing files, which you can then use for your build scripts or store in git
See ```sigh``` in action:
![assets/sighRecording.gif](assets/sighRecording.gif)
# Installation
sudo gem install sigh
Make sure, you have the latest version of the Xcode command line tools installed:
xcode-select --install
# Usage
sigh
Yes, that's the whole command!
```sigh``` will create, repair and download profiles for the App Store by default.
You can pass your bundle identifier and username like this:
sigh -a com.krausefx.app -u username
If you want to generate an **Ad Hoc** profile instead of an App Store profile:
sigh --adhoc
If you want to generate a **Development** profile:
sigh --development
To generate the profile in a specific directory:
sigh -o "~/Certificates/"
### Advanced
By default, ```sigh``` will install the downloaded profile on your machine. If you just want to generate the profile and skip the installation, use the following flag:
sigh --skip_install
To save the provisioning profile under a specific name, use the -f option:
sigh -a com.krausefx.app -u username -f "myProfile.mobileprovision"
If you need the provisioning profile to be renewed regardless of its state use the `--force` option. This gives you a profile with the maximum lifetime. `--force` will also add all available devices to this profile.
sigh --force
By default, ```sigh``` will include all certificates on development profiles, and first certificate on other types. If you need to specify which certificate to use you can either use the environment variable `SIGH_CERTIFICATE`, or pass the name or expiry date of the certificate as argument:
sigh -c "SunApps GmbH"
Or identify be expire date if you're using the same names for multiple certificates
sigh -d "Nov 11, 2017"
# Resign
If you generated your `ipa` file but want to apply a different code signing onto the ipa file, you can use `sigh resign`:
sigh resign
`sigh` will find the ipa file and the provisioning profile for you if they are located in the current folder.
You can pass more information using the command line:
sigh resign ./path/app.ipa -i "iPhone Distribution: Felix Krause" -p "my.mobileprovision"
## Environment Variables
In case you prefer environment variables:
- `SIGH_USERNAME`
- `SIGH_APP_IDENTIFIER`
- `SIGH_TEAM_ID` (The Team ID, e.g. `Q2CBPK58CA`)
- `SIGH_DISABLE_OPEN_ERROR` - in case of error, `sigh` won't open Preview with a screenshot of the error when this variable is set.
Choose signing certificate to use:
- `SIGH_CERTIFICATE` (The name of the certificate to use)
- `SIGH_CERTIFICATE_ID` (The ID of the certificate)
- `SIGH_CERTIFICATE_EXPIRE_DATE` (The expire date of the certificate)
If you're using [cert](https://github.com/KrauseFx/cert) in combination with [fastlane](https://github.com/KrauseFx/fastlane) the signing certificate will automatically be selected for you.
# How does it work?
```sigh``` will access the ```iOS Dev Center``` to download, renew or generate the ```.mobileprovision``` file. Check out the full source code: [developer_center.rb](https://github.com/KrauseFx/sigh/blob/master/lib/sigh/developer_center.rb).
## How is my password stored?
```sigh``` uses the [password manager](https://github.com/KrauseFx/CredentialsManager) from `fastlane`. Take a look the [CredentialsManager README](https://github.com/KrauseFx/CredentialsManager) for more information.
# Tips
## [`fastlane`](http://fastlane.tools) Toolchain
- [`fastlane`](http://fastlane.tools): Connect all deployment tools into one streamlined workflow
- [`deliver`](https://github.com/KrauseFx/deliver): Upload screenshots, metadata and your app to the App Store using a single command
- [`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
- [`produce`](https://github.com/KrauseFx/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
- [`cert`](https://github.com/KrauseFx/cert): Automatically create and maintain iOS code signing certificates
## Use the 'Provisioning Quicklook plugin'
Download and install the [Provisioning Plugin](https://github.com/chockenberry/Provisioning).
It will show you the ```mobileprovision``` files like this:
![assets/QuickLookScreenshot.png](assets/QuickLookScreenshot.png)
# Need help?
- If there is a technical problem with ```sigh```, submit an issue.
- I'm available for contract work - drop me an email: sigh@krausefx.com
# License
This project is licensed under the terms of the MIT license. See the LICENSE file.
# Contributing
1. Create an issue to start a discussion about your idea
2. Fork it (https://github.com/KrauseFx/sigh/fork)
3. Create your feature branch (`git checkout -b my-new-feature`)
4. Commit your changes (`git commit -am 'Add some feature'`)
5. Push to the branch (`git push origin my-new-feature`)
6. Create a new Pull Request