Xcode Project
In this article I will detail how I like my Xcode projects to be configured.
Index:
- LICENSE
For libraries and sample apps , use MIT.
For App Store apps, use a custom License agreement based on isowords' agreement. The idea behind is to allow everything but copy/paste for commercial use.
- gitignore
Here the base is the template provided by github for Swift.
- Xcode project
- SPM
For projectr setup, I like to follow the approach Pointfree.co
has adopted for the Isowords' codebase.
- Lint and Format (Swiftlint and SwiftFormat)
To be run locally, via fastlane, or on CI, via GitHub actions.
- Unit Tests
- Xcode Server
We will use the free plan as long as possible, in particular to upload to TestFligh
- Github actions
We will use github actions for some basic checks, in particular for lint and code format.
- Fastlane
Fastlane is a really useful and complete tool to help with the build, CI and automation of the project.
No sure if this is still is the case but, in the past, fastlane support in CI services has not been great, meaning, we needed to use brew to install fastlane. All this delays the build, using precious minutes while using these free tier plans in GitHub and/or Xcode Server.
Moving forward, will use fastlane mainly for use locally, via command line. Will have the basic functionalities, such as running tests, bump versions, etc.