1
votes

I am currently in the process of setting up an iOS application with Xcode bots for continuous integration on a Mac OSX Server instance. The source code is hosted on a remote git repository, so it will not be hosted on the Mac OSX Server. The application is available in several countries. In order to solve this efficiently we chose to have different build configurations depending on:

  • Which server environment it's going towards:
    • Development environment
    • Stage environment
    • Production environment
  • Which country is being built

I have watched the Continuous Integration with Xcode 5 & Testing in Xcode 5 WWDC 2013 videos but there are still a few things unclear.

When adding a shared scheme Xcode creates a new ApplicationName.xcscheme file.
Looking in this XML file there is a section near the end of the file:

<ArchiveAction
    buildConfiguration = "Gondor Production Release"
    revealArchiveInOrganizer = "YES">
</ArchiveAction>

The create a new bot dialouge doesn't seem to have an option specifing which build configuration you wish to build the application with.

Now in order to mimize git conflicts of hell what is the best approach here? To have multiple shared schemes for each build configuration or to simply change one scheme in your feature/release branch when you are creating new bots?

The different release builds have different Bundle Identifiers, different code signing identities and different development teams. When switching development team the project.pbxproj file removes these "CODE_SIGN_IDENTITY" strings. Is the best approach here to have a shell script checking that:

  • The appropriate "CODE_SIGN_IDENTITY" string exists and matches the appropriate values
  • The "DevelopmentTeam" string exists and matches the appropriate values

Or can I accomplish this through adding a user defined setting?

1

1 Answers

2
votes

You can specify the build configuration in the build scheme under the "Archive" section. What you are wanting todo would require different schemes that you would then create a bot from.