All Projects → tungdev1209 → Xcode Ci

tungdev1209 / Xcode Ci

Licence: mit
CI iOS/MacOS app via command-line

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to Xcode Ci

Ic
去哪儿公司内部CI、CD以及devops体系建设过程中使用的消息系统和数据中心。由于其基于HTTP协议的特性,具有跨平台、跨语言的优点。而devops体系搭建中,会引入各种开源工具,这些工具的语言差异也很大。基于IC,我们不仅快速实现了流程自动化,而且系统解耦,自动化进程大大提高。
Stars: ✭ 73 (-15.12%)
Mutual labels:  devops-tools, ci
changie
Automated changelog tool for preparing releases with lots of customization options
Stars: ✭ 180 (+109.3%)
Mutual labels:  ci, devops-tools
Flint
Fast and configurable filesystem (file and directory names) linter
Stars: ✭ 115 (+33.72%)
Mutual labels:  devops-tools, ci
Previs
🎯 Testing your project locally in a clean environment.
Stars: ✭ 312 (+262.79%)
Mutual labels:  devops-tools, ci
Rocket
Automated software delivery as fast and easy as possible 🚀
Stars: ✭ 217 (+152.33%)
Mutual labels:  devops-tools, ci
Iceci
IceCI is a continuous integration system designed for Kubernetes from the ground up.
Stars: ✭ 29 (-66.28%)
Mutual labels:  devops-tools, ci
Terraboard
🌍 📋 A web dashboard to inspect Terraform States
Stars: ✭ 1,192 (+1286.05%)
Mutual labels:  devops-tools
Gohci
Go on Hardware CI: 100% free open source CI to run on RPis, macOS and Windows
Stars: ✭ 79 (-8.14%)
Mutual labels:  ci
Jest Action
Wraps and install Jest test runner in a github action.
Stars: ✭ 74 (-13.95%)
Mutual labels:  ci
Jmeter Elasticsearch Backend Listener
JMeter plugin that lets you send sample results to an ElasticSearch engine to enable live monitoring of load tests.
Stars: ✭ 72 (-16.28%)
Mutual labels:  ci
Leeroyci
Leeroy is a self hosted, continuous integration and build service
Stars: ✭ 84 (-2.33%)
Mutual labels:  ci
Kubesanity
KubeSanity a sanity checking framework for Kubernetes
Stars: ✭ 82 (-4.65%)
Mutual labels:  devops-tools
Documentation
Documentation for Codeship CI & CD service
Stars: ✭ 78 (-9.3%)
Mutual labels:  ci
Ocurrent
Keeps things up-to-date (a CI/CD pipeline OCaml eDSL)
Stars: ✭ 76 (-11.63%)
Mutual labels:  ci
Php Backslasher
[Git hook] Tool to add all PHP internal functions and constants to its namespace by adding backslash to them.
Stars: ✭ 79 (-8.14%)
Mutual labels:  ci
Cintodeutilidadesdocker
My Docker templates repository 🐳 ☁️ 🐳
Stars: ✭ 74 (-13.95%)
Mutual labels:  devops-tools
Lightkeeper
Run Lighthouse tests in Pull Requests for multiple URLs with custom budgets
Stars: ✭ 83 (-3.49%)
Mutual labels:  ci
Azure
Azure-related repository
Stars: ✭ 78 (-9.3%)
Mutual labels:  devops-tools
Docker Builder
Docker builder builds Docker images from a friendly config file.
Stars: ✭ 81 (-5.81%)
Mutual labels:  ci
Setup Msys2
GitHub Action to setup MSYS2 (MSYS, MINGW64 and/or MINGW32)
Stars: ✭ 78 (-9.3%)
Mutual labels:  ci

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!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].