Swifty Waves

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.

Tagged with: