XcodeServerSDK 0.7.1

XcodeServerSDK 0.7.1

TestsTested โœ“
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Aug 2016
SPMSupports SPM โœ—

Maintained by Esteban Torres, Honza Dvorsky.

Xcode Server SDK

satellite badge

Use Xcode Serverโ€™s API with native Swift objects.

First brought to you in Buildasaur, now in an independent project. This is an unofficial, community-maintained project and is not associated with Apple. We also maintain the unofficial documentation of Xcode Server in case youโ€™d like to integrate using a different programming language! ๐Ÿ˜‰

๐ŸŽ“ Getting Started With Xcode Server

To find out how to set up Xcode Server on your Mac in minutes (and more), check out my series of tutorials.
To see how easy it is to integrate XcodeServerSDK into an iOS app, check out the XCSDemo project created by @cojoj.

๐Ÿ“ถ Xcode Server API Versions

Xcode Server API Supported?
Xcode 7 and newer โœ… from 0.1
Xcode 6 and older โœ… up to 0.0.4

Youโ€™ll need OS X Server of version >= 4. For Xcode 7 you need OS X >= 10.10.4.

The latest version supporting the old, undocumented Xcode 6 version of the Xcode Server API is 0.0.4. All newer versions only support the new, first publicly documented Xcode 7 version of the API.

:octocat: Sources

One way to integrate XcodeServerSDK into your project is with CocoaPods. Add this to your Podfile (with the version being the latest released pod version: :

pod 'XcodeServerSDK'

๐Ÿ”ง Usage

Create the server config object with the serverโ€™s URL, username and password.

do {
    let config = XcodeServerConfig(host: "", user: "IRuleBots", password: "superSecr3t")
} catch ConfigurationErrors.NoHostProvided {
    fatalError("You haven't provided any host")
} catch ConfigurationErrors.InvalidHostProvided(let host){
    fatalError("You've provided invalid host: \(host)")
} catch ConfigurationErrors.InvalidSchemeProvided(let scheme) {
    fatalError("You've provided invalid scheme: \(scheme)")
} catch {
    fatalError("Error, not related to XcodeServerConfig; \(error)")

Instantiate XcodeServer.

let server = XcodeServerFactory.server(config: config)

Go wild!

server.getBots { bots, error in
    guard error == nil else {
        Log.error("Oh no! \(error.description)")

    // go crazy with bots
    if let firstBot = bots?.first {
        // use the first bot...

๐Ÿ“ถ Swift Versions

The latest Swift 1.2 compatible version is 0.0.4, so put this exact version in your Podfile if youโ€™re targeting Swift 1.2. All newer releases will be targeting Swift 2, because weโ€™re all just so forward-thinking.

๐ŸŽช Play with Playground

Weโ€™re providing a Plaground in which you can easily interact with XcodeServerSDK and test itโ€™s functionalities without any need to create a new app. Playground target is set to be OS X (so donโ€™t use UIKit inside).

๐Ÿš€ Features

Apple has finally shipped the official docs for Xcode Server. Theyโ€™re slightly different from what has been presented on WWDC (slide 69). Below is the table with features described in docs - divided into categories. Last category, unofficial, is the cluster of features reverse engineered while working on XcodesServerSDK, so you wonโ€™t find them in docs, but theyโ€™re definitely in code! ๐Ÿ˜ƒ

Category Description XcodeServerSDK support
Creates a new bot โœ…
Retrieve a list of bots โœ…
Retrieve a single bot โœ…
Update a single bot โ›”
Delete a single bot โœ…
Duplicate an existing bot โ›”
Begin an integration for the specified bot โœ…
Retrieve a single integration โœ…
Delete an integration โ›”
Cancel a integration currently being executed โœ…
Retrieve options to perform filters, selections and calculations on all integrations for the specified bot partially
Retrieve options to perform filters, selections and calculations on all integrations partially
Retrieve the tests for an integration partially
Retrieve the test information list for a given integration and device identifier partially
Retrieve the test information list of issues for a given integration and device identifier โœ…
Retrieve the list of files for a given integration โ›”
Retrieve an asset given its relative path โ›”
Code Coverage
Retrieve the Code Coverage information for a given integration โ›”
Check if user can create bots โœ…
List hosted repositories on server โœ…
Create a new hosted repository โœ…
Get supported platforms โœ…
Get SCM branches from Blueprint โœ…
Verify user can manage server โœ…

๐ŸŒ‡ Supported Platforms

Currently XcodeServerSDK provides support for the following platforms:

Platform Minimum Version CocoaPods
OS X 10.10 โœ…
iOS 8.0 โœ…
watchOS 2.0 โœ…
tvOS 9.0 โœ…

๐ŸŽ‰ Projects using XcodeServerSDK

  • Buildasaur - connect Xcode Server with GitHub Pull Requests.
  • (using XcodeServerSDK too? Send a PR with a link to your project added here!)

Want to create yours but need some inspiration? Watch this WWDC 2015 session on Xcode Server! Using hardware buttons to start integrations? Why not! The sky is the limit.

โœŒ๏ธ License


๐Ÿšข Building & Testing

We use CocoaPods for dependency management. When you clone the repo, youโ€™ll need to run pod install to download the necessary dependencies.

๐Ÿ’™ Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

โœ๏ธ Contributing

Create an issue or (preferably) send a pull request. Do you just want to get involved and help out? See the issues marked as up-for-grabs. These are the ones just waiting for some beautiful soul like you to build/fix it. We just donโ€™t have enough bandwidth and any help is welcome :) (Youโ€™ll be in the contributors list of the release if you send a PR! ๐ŸŽ†)

๐Ÿ’ฌ Get in touch

For things like general problems/ideas please report an issue, so anyone can see them and relate to them in the future. Itโ€™s realy important for Open Source projects like this! If your problem requires a deep discussion or you have a great idea and you really want to share it with someone before opening an issue you can join the official Buildasaurs Slack team! (To do so, ping @czechboy0 on Twitter and have your e-mail address ready ๐Ÿ“ง)

๐ŸŽ… Origin Story

This code has been pulled out of Buildasaur, bringing you integration of GitHub Pull Requests to Xcode Bots.

๐Ÿ‘ฝ Author

Honza Dvorsky honzadvorsky.com @czechboy0