Xcodegenを導入しようとしたけどサンプルが少なくて手間取りました
自分が同僚に教えてもらいながら作ったものを載せておきます
同僚には大感謝
注意
真似する場合は自己責任でお願いします
間違い含めて気づいた点あればむしろコメントで教えてほしいです
前提
Xcode:10.3
Swift:5.0
Xcodeプロジェクト作成からSchemeとBuildConfigurations(Debug・Develop・Staging・Release)追加・Swiftlint導入、Xcodegen導入までの話なので、ライブラリのインストールはまだしてないです
サンプル
プロジェクト名と.pbxprojを自身の環境用に変更してもらえれば問題ないはず
project.yml
name: プロジェクト名
configs:
Debug: debug
Develop: develop
Staging: staging
Release: release
options:
deploymentTarget:
iOS: "11.0"
settings:
base:
SWIFT_VERSION: 5.0
PRODUCT_NAME: $TARGET_NAME
CURRENT_PROJECT_VERSION: 1
schemes:
プロジェクト名:
build:
targets:
プロジェクト名: all
プロジェクト名Tests: [test]
プロジェクト名UITests: [test]
run:
config: Debug
test:
config: Debug
profile:
config: Develop
analyze:
config: Develop
archive:
config: Develop
プロジェクト名-staging:
build:
targets:
プロジェクト名: all
run:
config: Debug
test:
config: Debug
profile:
config: Staging
analyze:
config: Debug
archive:
config: Staging
プロジェクト名-store:
build:
targets:
プロジェクト名: all
run:
config: Debug
test:
config: Debug
profile:
config: Release
analyze:
config: Debug
archive:
config: Release
targets:
プロジェクト名:
type: application
platform: iOS
sources:
プロジェクト名
settings:
CODE_SIGN_STYLE: Manual
INFOPLIST_FILE: プロジェクト名/Info.plist
configs:
Debug:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEBUG
CODE_SIGN_IDENTITY: iPhone Developer
DEVELOPMENT_TEAM: .pbxproj参照
PRODUCT_BUNDLE_IDENTIFIER: .pbxproj参照
PRODUCT_NAME: $TARGET_NAME
PROVISIONING_PROFILE_SPECIFIER: .pbxproj参照
Develop:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEVELOP
CODE_SIGN_IDENTITY: iPhone Distribution
DEVELOPMENT_TEAM: .pbxproj参照
PRODUCT_BUNDLE_IDENTIFIER: .pbxproj参照
PRODUCT_NAME: $TARGET_NAME
PROVISIONING_PROFILE_SPECIFIER: .pbxproj参照
Staging:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: STAGING
CODE_SIGN_IDENTITY: iPhone Distribution
DEVELOPMENT_TEAM: .pbxproj参照
PRODUCT_BUNDLE_IDENTIFIER: .pbxproj参照
PRODUCT_NAME: $TARGET_NAME
PROVISIONING_PROFILE_SPECIFIER: .pbxproj参照
Release:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: RELEASE
CODE_SIGN_IDENTITY: iPhone Developer
PRODUCT_BUNDLE_IDENTIFIER: .pbxproj参照
PRODUCT_NAME: $TARGET_NAME
PROVISIONING_PROFILE_SPECIFIER: .pbxproj参照
scheme:
testTargets:
- プロジェクト名Tests
- プロジェクト名UITests
prebuildScripts:
- name: Run SwiftLint
script: |
if which swiftlint >/dev/null; then
swiftlint autocorrect --format
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
プロジェクト名Tests:
type: bundle.unit-test
platform: iOS
sources: プロジェクト名Tests
dependencies:
- target: プロジェクト名
プロジェクト名UITests:
type: bundle.ui-testing
platform: iOS
sources: プロジェクト名UITests
dependencies:
- target: プロジェクト名
追記
これだとscheme「プロジェクト名」のProfile・ReleaseのConfigurationがそれぞれ本来DevelopになってほしいはずがReleaseになっていたので
scheme:
testTargets:
- プロジェクト名Tests
- プロジェクト名UITests
の箇所をまるごとごっそり削除してあげたら期待どおりの設定になりました
この後はまだ確認できてないです
使用する中でなにか不備が発生するかもしれませんので
最初にもかいた通り使用する場合は自己責任でおねがいします
また時間があったらXcodegen試してわかったことを載せていきます