spotify/ios-ci

Name: ios-ci

Owner: Spotify

Description: A collection of scripts Spotify runs on its Open Source iOS projects.

Created: 2016-02-16 18:30:41.0

Updated: 2018-04-28 14:12:03.0

Pushed: 2016-12-05 20:50:22.0

Homepage:

Size: 41

Language: Shell

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Spotify CI Scripts

Build Status Platforms supported: iOS, tvOS, watchOS and OS X

A collection of scripts Spotify runs on its Open Source iOS, tvOS, watchOS and OS X projects. The scripts are opinionated and will not work with any CI setup. However should you choose a similar stack as ours they should work for you as well.

We?re currently using the following stack:

Installing

There are primarily two routes on how to add the scripts to your repository. Either as a git submodule (only appropriate for apps) or using git subtree merging.

For applications

If you want to add ios-ci as a dependency to an application, add the repository as a submodule. When this is done continue with configuring the CI

For frameworks and libraries

If you want to add ios-ci as a dependency to a framework or library, prefer subtree merging. As it will make sure the ci files are bundled with the repo, thus making sure the repo stays intact and doesn?t require users to deal with your submodule.

To add the scripts as a subtree for the first time:

t remote add ios-ci https://github.com/spotify/ios-ci.git
t fetch ios-ci
t read-tree --prefix=ci/ -u ios-ci/master
t reset

Then add the files to git as normally and commit.

To bring in upstream changes later:

t fetch -p ios-ci
t merge --squash -s subtree --no-commit -Xsubtree=ci/ ios-ci/master
t reset

You might have to fix some merge conflicts. If so resolve the conflicts like any other git merge conflicts and then git add the file to mark it as resolved.

Configuring

First of all you?ll need to copy the provided sample Gemfile to the repository root, or append it?s list of gem?s to your existing one. And then update them so the CI system will know which version to use.

 ci/sample/Gemfile .
ndle update

Next you should configure Travis-CI.

Travis-CI

Also have a look at the travis.yml file.

The important environment variables you need to have set are:

| Environment variable | Description | |——————————– |——————————————————————————————– | | PROJECT_NAME | The name of the project/module, used for deployment. | | PROJECT | Which Xcode project file to use when building. | | SCHEME | Which Xcode scheme to use. | | BUILD_ACTIONS | The build actions that should be passed to xcodebuild, e.g. build or build test. | | EXTRA_ARGUMENTS | Any extra argument you want to pass to xcodebuild, e.g. -enableCodeCoverage YES. | | TEST_SDK | The SDK which should be used when build and testing. | | TEST_DEST | The destination the tests should be ran for. | | PODSPEC | The path to the project?s CocoaPods podspec file. | | EXPECTED_LICENSE_HEADER_FILE | The path to a file containing the license header source files are expected to include. | | LICENSED_SOURCE_FILES_GLOB | A glob for finding all files which should be checked that they include the license header. |

Contributing :mailbox_with_mail:

Contributions are welcomed, have a look at the CONTRIBUTING.md document for more information.

License :memo:

The project is available under the Apache 2.0 license.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.