Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

tungdev1209/xcode-ci

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

149 Commits

Repository files navigation

xcode-ci

Description

CI iOS/MacOS app via command line.

Requirements

xcodebuild

Install

$ brew tap tungdev1209/xcode-ci
$ brew install xcode-ci

Initialize

$ cd path/to/ios/project
$ xcode-ci init

Ex:

$ cd /Users/tungdev1209/Projects/iOS/HelloWorld
$ xcode-ci init

Adjust default value

After initialized, .ci dir is created automatically, then you have to adjust params in both deploy_config.json and export_config.plist (ignore this file if you don't want to export)

=> ./.ci/deploy_config.json

{
 "project_path":".",
 "project_name":"HelloWorld.xcodeproj",
 "build_path":"./Build",
 "build_scheme":"HelloWorld",
 "archive_path":"./Archive",
 "archive_scheme":"HelloWorld",
 "build_args":"clean",
 "test_args":"",
 "archive_args":"",
 "export_args":""
}

=> ./.ci/export_config.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>compileBitcode</key>
	<true/>
	<key>method</key>
	<string>enterprise</string>
	<key>provisioningProfiles</key>
	<dict>
		<key>com.tungdev1209.helloworld</key>
		<string>70f47xxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</string>
	</dict>
	<key>signingCertificate</key>
	<string>iPhone Distribution</string>
	<key>signingStyle</key>
	<string>manual</string>
	<key>stripSwiftSymbols</key>
	<true/>
	<key>thinning</key>
	<string>&lt;none&gt;</string>
</dict>
</plist>

Command

Syntax:

$ xcode-ci <command>
  • init [-f/--force] : Initialize ci components (-f force re-init)
  • -b/--build 'build args' : Additional Build command arguments (plus build_args value in deploy_config.json in order to make final Build command)
  • -t/--test 'test args' : Additional Test command arguments (plus test_args value in deploy_config.json in order to make final Test command)
  • -a/--archive 'archive args' : Additional Archive command arguments (plus archive_args value in deploy_config.json in order to make final Archive command)
  • -e/--export 'export args' : Additional Export command arguments (plus export_args value in deploy_config.json in order to make final Export command)
  • -fw/--framework 'u.d.s' : Indicate this is the framework project, 'u' if you just want to export Universal framework, 'd' => Device framework and 's' => Simulator framework, 'u.d' if you would both Universal & Device frameworks. Default: export all kind of frameworks if you just -fw, if you don't -fw, xcode-ci understand this is normal application project
  • -r/--run 'b.t.a.e' : Indicate whether ci process will be run or not, 'b' if you just want to run Build process, 't' => Test process, 'a' => Archive process and 'e' => Export process, 'a.e' if you would like to run Archive and then Export process. Default: run all kind of processes one by one (Build -> Test -> Archive -> Export) if you don't type -r
  • -v/--version : show the version

Default arguments

By default, xcode-ci detect current type of project you would like to build (whether project or workspace) by project_name value (whether .xcodeproj or .xcworkspace) in deploy_config.json in order to make final Build command

  • Build : -project/-workspace project_path/project_name -scheme build_scheme -sdk iphonesimulator -configuration Debug ONLY_ACTIVE_ARCH=NO build
  • Test : same default Build args + test
  • Archive : -project/-workspace project_path/project_name -scheme archive_scheme -archivePath archive_path/archive_scheme.xcarchive -configuration Release archive
  • Export : -exportArchive -archivePath archive_path/archive_scheme.xcarchive -exportOptionsPlist ./.ci/export_config.plist -exportPath archive_path/export_path (export_path: auto generate each time xcode-ci run Export process)

You could override above args via deploy_config.json and xcode-ci command

Hooks

$ xcode-ci

Above command means: xcode-ci will run all of the processes one by one (Build -> Test -> Archive -> Export) with config files (deploy_config.json and export_config.plist). Before and after each process, xcode-ci allow you add more processes you would like to run via ./hooks file

  • pre_build.sh
  • pre_test.sh
  • post_build.sh
  • post_test.sh
  • pre_archive.sh
  • post_archive.sh
  • pre_export.sh
  • post_export.sh

Example:

'The right example is worth 1000 lines of documentation'. I belive it!

=> For normal project:

$ xcode-ci -r 'b'

=> For framework project:

$ xcode-ci -fw 'u.d' -r 'a.e'

License

This project is licensed under the terms of the MIT license.

Have fun!

About

CI iOS/MacOS app via command-line

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /