Help us understand the problem. What is going on with this article?

Xcodegenのサンプル

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試してわかったことを載せていきます

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away