About the Book
P.S: THIS BOOK PUBLISHED as HALF FINISHED, without reviewed as author joins Apple. Some chapters are outdated. The author is no longer maintaining the book.
For a while now, IT industries are hearing buzzwords like continuous delivery and DevOps to speed up the delivery of the new features. Continuous Delivery and DevOps practices proved to be worked well for web applications. However, mobile application developments have unique challenges and require different skill to enable those practices. The traditional DevOps practices don't help or scale a lot in mobile application development. This initiates need for Mobile DevOps. The DevOps and Continuous Delivery applied to the mobile platform like iOS, Android and other mobile platforms.
This book is aimed to solve the above-mentioned challenges of iOS development by applying practical Mobile DevOps and Continuous Delivery techniques. It will also help your iOS team to automate the entire release process of iOS apps including analysing, building, testing, achieving and distribution to App Store through Continuous Integration. You will also learn about dealing with complex iOS development tasks like Apple development certificates, provisioning profiles, code signing and distribution to App Store Connect. This book aims to be practical, as there will be code snippets, GitHub repositories, images all over the book to demonstrate things in reality.
What This Book Covers
The target audience for this book is iOS Developers all around the world. They might be having different skill sets so not everyone will want to read this book end to end but it would be good to go sequentially and skip chapters that you already know about. Once the basics are covered then you can attack different part needed for your current context.
This book is divided into six main parts.
Part 1 – Basics of Continuous Delivery and Mobile DevOps
This part describes how practices like Mobile DevOps and Continuous Delivery help to ease the pain of iOS releases. This will cover basics general concepts of DevOps and Continuous delivery applied to iOS
Chapter 1, “Basics of DevOps and CI/CD” outlines general concepts of DevOps and Continuous Delivery that are currently being used in the IT industry for deploying applications. This chapter also covers the benefits of adopting DevOps and Continuous Delivery practices.
Chapter 2, “iOS Development Challenges” starts with some common challenges that we see in the iOS development teams.
Chapter 3, “ iOS: Mobile DevOps” highlights different between traditional DevOps and Mobile DevOps. This chapter also explains the unique challenges of mobile deployment for iOS apps and why we need DevOps for iOS apps.
Part 2 – iOS Package Managers
This part explains the project structure of iOS apps and basic concepts of iOS development including Xcode project, build sets, targets, schemes etc. The main goal of this chapter is to understand the concept of package managers like CocoaPods, Cartage and Swift package Manager.
Chapter 4, “iOS and Xcode Project” gives a basic overview of an iOS application in Xcode and understanding concepts like targets, schemes, build phases and build settings.
Chapter 5, “CocoaPods”, covers the most popular iOS package manager. This chapter will cover the basics of CocoaPods and using CocoaPods in iOS apps. We will also cover the internals of CocoaPods and how CocoPods affect Xcode project.
Chapter 6, “Carthage”, covers another popular iOS package manager which is Carthage. This chapter will cover the basics of Cartage and using Carthage in iOS apps. We will also cover steps involved in the setting up Carthage for iOS app with example app.
Chapter 7, “Swift Package Manager” gives an overview of Swift Package manager with detailed examples. Currently, Swift Package Manager doesn’t officially support iOS but it will be in the future.
Chapter 8 “Selecting the right Package Manager” covers the tips to select the right package manager for iOS app. We will explore what are the pros and cons of each package manager and evaluate the criteria for selecting the right package manager.
Part 3: iOS Code Signing
Chapter 9 "iOS Code Signing Basics" covers all the internal aspects of the code signing.
Chapter 10 "Certificates and Provisioning Profiles" covers the details of the code signing certificate and provisioning profiles.
Chapter 11 "Code Signing iOS apps" covers how Xcode code sign iOS apps. This chapter will also include code signing iOS apps from the command line.
Part 4 – iOS Deployment Pipeline Automation
This part of the book is one of the biggest as it covers automation of the entire iOS deployment pipeline. Starting from command line Apple developer tools, we will cover how to automate each iOS development task in details e.g building, testing, archiving of iOS app.
Chapter 12, “Command Line Apple Developer Tools” introduces useful command line tools provided by Apple for scripting iOS development tasks. We will cover tools like xcodebuild, xcrun, Xcode-select etc
Chapter 13, “Basics of Ruby and Fastlane” covers the basic introduction to Ruby tools for Fastlane setup.
Chapter 14, “Automating iOS Builds” discusses the ways of automating static code analysis, building, testing, deploying using both native tools and Fastlane.
Part 5: iOS Continuous Integration
Chapter 15, ‘iOS Continuous Integration’ gives an overview of the Continuous Integration for iOS which covers both self-hosted and cloud-based CI options. This chapter will also cover some tips to select the right Continuous Integration server and why it’s important for any iOS project.
Chapter 16, “Implementing CI/CD with Xcode Server”, presents Continuous Integration Service from Apple for iOS apps. This chapter shows end to end process of setting up Xcode Server Continuous Integration for any iOS app with detailed architecture.
Chapter 17, “Implementing CI/CD with Cloud-Based CI Services”, demonstrate setting up cloud-based CI server for iOS Continuous Integration and Deployment. This chapter will also cover how the cloud base CI server differs from self-hosted CI servers. We will demonstrate one of the popular iOS cloud-based CI services like TravisCI, CircleCI, BuddyBuild, Bitrise and Nevercode.
Chapter 18, “Continuous Integration for iOS SDK” covers how to add CI for iOS libraries and SDKs. Why adding CI for libraries is equally important as the main app.
Chapter 19, “Managing Self-Hosted CI Servers” discusses the configuration management tools like Ansible that can be used for provisioning and manage iOS CI servers.
Chapter 20, “Managing Release Trains” sets out practices to manage build train in the current version and automate releases on GitHub or similar source control.
Part 6: App Store Connect & App Store Connect API
Chapter 21, “App Store Connect” covers how to make use of TestFlight and AppStore Connects features efficiently for iOS Continuous Delivery. This chapter will discuss multi-build features of TestFlight and Phased releases features of App Store Connects.
Chapter 22 “AppStore Connect API” covers the basics of the AppStore Connect API. This chapter will explore App Store Connect API using JWT token generation process to access API.
Note: This is tentative structure of our book and might change as we go on writing. Please let me know if we miss something to cover in this book, we will happy to cover anything about DevOps, CI/CD or Test Automation in this book.
About the Author
Shashikant is DevOps practitioner for mobile apps and Director at XCTEQ Limited. He has automated release pipelines, implemented CI/CD and enabled DevOps flavoured Test Automation practices for many mobile apps.
He blogs about mobile DevOps and CI/CD (XCBlog) Check-out XCTEQ for more: https://www.xcteq.co.uk/