SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
iOS CI/CD Continuous integration and continuous
delivery (CI/CD) is widely used by
development teams, even in open-source
communities. It offers a sustainable way to
test and deploy code many times a day
without the hurdle of doing it manually.
In this guide, you’ll learn the foundations of
getting started with CI/CD for iOS.
Continuous Integration
and Continuous Delivery
Explained
1
Contents:
1. The importance of CI/CD for iOS developers
2. Principles of iOS CI/CD
3. The top benefits of CI/CD for iOS
4. Best practices to remember for iOS CI/CD
5. An iOS CI/CD workflow example
6. Getting started with CI/CD for iOS
7. Choosing the right iOS CI/CD platform
By the end of this presentation, you’ll be able to evaluate your current workflow, adopt the best CI/CD
practices, and ship your iOS applications faster.
2
1
The importance of
CI/CD for iOS
developers
CI/CD for iOS will save you days of
preparing app submissions, fixing critical
bugs, and uploading screenshots to the App
Store. Automating these processes means
that any member of the team will be able to
release bug fixes or updates.
The CI/CD can check in and check out the
source code so all members on your team
will be on the same page. Leading to better
communication, increased app development
quality, and more frequent releases.
3
The Real Value of DevOps
DevOps is a cultural change in the organization where the operations and development teams join forces
to continuously deliver high-quality software.
Because teams employing DevOps ideals are focused on delivering value to users as quickly and
efficiently as possible, continuous integration and delivery is a natural extension of their operations.
The end goal is to help iOS developers build and release apps at high velocity by defining a process for
effective app delivery.
4
2
Principles of iOS
CI/CD
One of the most important aspects of
implementing CI/CD for iOS is learning
about the principles that can increase the
value of your current workflow.
5
Use Static Code Analysis
So that the build can fail early (in the event of serious coding errors), static code analysis should be the
absolute first step in the build process. This way, you can fix the issues as soon as they are found by the
server.
6
Keep the Code Deployable
Once the linter step is passed, we can move on to the building and compiling of the source code. The last
step in the app build process should be to generate the archive to be submitted to iTunes Connect. In the
case of iOS, it should be an IPA file.
7
Notify Your Team
Any developer can deploy any version of the app to any environment at a push of a button. Once the build
is finished, it’s important to send a notification to other developers with the status of the build. This can
be an email, Slack message, or similar notification service. The iOS CI/CD pipeline should trigger this
notification at the end of every build.
8
Design for Iterative Releases
Have a well-defined pipeline that focuses on automated delivery. Implement static analytics on your
source code to detect issues or crashes (even in production).
9
3
The top benefits of
CI/CD for iOS
Aside from making your previous iOS
development process more efficient,
implementing a CI/CD pipeline helps your
team.
10
1. Build faster
A continuous and automated development cycle helps mobile development teams make high-value
releases faster.
11
2. Detect problems early
A continuous integration pipeline can run test suites on every code change. Thus, problems can be
spotted before they can reach production.
12
3. Provide effective feedback
In a continuous integration workflow, the entire team can view and monitor source code activity. When
new problems appear, the team members that introduced the failure are automatically notified.
13
4. Automate the testing process
Manually testing iOS apps on a simulator or multiple devices is a time-consuming process. In a CI/CD
workflow, the process is automatic and straightforward. Simply configure the devices and simulators into
the server workflow and let your pipeline do the work for you.
14
5. Build deployment logs
In a CI/CD pipeline, all build deployments are logged. This means that at any given time, you can identify
the exact point where your app failed.
15
4
Best practices to
remember for iOS
CI/CD
When implementing a CI/CD workflow for
iOS development, it’s vital you adhere to
standard best practices.
Why? The guidelines below are designed to
help you push high-quality code with every
release.
16
1. Keep your Pipeline Fast
Always improve the quality of your pipeline by inspecting its configuration, improving build times,
removing any unnecessary code or assets, configuring the right environments, and removing any
bottlenecks causing issues on the deploy process.
17
2. Run Code Analysis Early
Fail fast: Include unit tests and linters early in the pipeline.
18
3. Separate Build Configurations
Use profiles to separate build configurations. Internal and testing builds are different from the builds for
your users. By default, an iOS app includes Debug and Release build configurations. It makes sense to add
Test, Staging and Production builds.
19
4. Automate Your Builds
Compiling and building an iOS app takes a great deal of time. Using CI/CD workflow you can automate
the process and save time.
20
5. Deploy Only Through the Pipeline
The pipeline is configured to help and enforce best practices of CI/CD for your development cycle. Avoid
at all cost manual deploys.
Making your code run through your pipeline requires each change to conform with your code standards
and styles. This mechanism safeguards your codebase from untrusted code.
21
6. Maintain Similar Environments
If possible, try to maintain similar pipelines in all your environments. Changes that pass the requirements
of one environment should pass in another. This also includes feature branches.
22
7. Monitor the Pipeline
Apps are unpredictable. No matter how cool you think your code is, the app can fail for a lot of reasons.
Therefore, you’ll need to proactively monitor your deploys throughout the pipeline so you can catch
problems before they reach the App Store.
23
5
An iOS CI/CD
workflow example
After understanding and adopting essential
CI/CD principles, the next step is to set up
your pipeline.
One of the more painful parts of iOS
development is iterative releases. It’s
tedious and time-consuming.
The role of CI/CD here is to automate all of
these steps.
24
25
Before CI/CD
Before implementing CI/CD, a typical release to the App Store looks like this:
1. Check out source code from some remote repository (GitHub, Bitbucket, GitLab, etc.).
2. Do some static analysis of the code using SwiftLint, for example.
3. Compile and build your iOS app in a simulator or device to check that everything is running as
expected.
4. Run unit, UI or other kinds of tests.
5. Code signing and archive your app.
6. Submit your app to iTunes Connect.
7. Notify users about your release.
This process can be error-prone; you may experience merge conflicts and poor management of versions
(as this is done manually by each developer). 26
After CI/CD
Fortunately, we can improve it with automation. When we use an iOS CI/CD pipeline, our workflow looks
more like this:
1. Code the application changes with Xcode.
2. When the code is ready for integration, it automatically pushes to a Git repository.
3. Next, CI triggers the execution of test cases that will confirm the code is ready for release.
4. Finally, the release pipeline triggers to deploy the archive produced in the CI stage, and a build is
released with TestFlight.
See how the iOS developer has far less to do with CI/CD? That’s the beauty of automation.
27
6
Getting Started
with iOS CI/CD
28
Getting started with CI/CD
To integrate CI/CD into your iOS development process, start by exploring what things can make your
team’s job easier. You need to understand and collect information about your current workflow and
provide feedback to the team until you have defined a process for your pipeline.
Using this information, your team can evaluate and define how to automate the current workflow to lead
to a better development lifecycle. Optimizing and automating the current process should be the priority.
29
Getting started with CI/CD
Ultimately, this approach increases transparency through all your team. When your iOS CI/CD pipeline is
set up, your entire team will know what’s going on with the builds and will receive the latest results of
tests, which means they can move on to resolving new issues.
This process allows developers to stay focused on writing code and observing the app’s behavior.
Meanwhile, product stakeholders have access to updated metrics. Code changes and tests are available
for review at any time.
The lesson here is that, as a faster feedback loop emerges, each member of the team can learn from each
other and take responsibility for the code that is shipped.
30
7
Choosing the Right
iOS CI/CD Platform
31
Self-hosted or Cloud-based?
Self-hosted CI/CD solutions require owning hardware and setting up infrastructure. Maintenance
becomes a big endeavor.
Software-as-a-service (SaaS) solutions, on the other hand, offer cross-platform capabilities with zero
maintenance
These cloud-based CI/CD tools are easy to set up and all the hardware and software maintenance is
managed by the service provider. Developers can skip a lot of tedious or repetitive tasks, such as code
signing and publishing.
Cloud-based CI/CD also comes with a big advantage: it unifies your team around a single platform,
mobilizing your iOS, Android and web developers within a consistent tool.
32
Summing Up A well-defined process and the right CI/CD
tools will make your iOS development cycle
faster and more efficient.
If you want to explore CI/CD for iOS in a
more hands-on way, check out our tutorial
on building, testing, & deploying an iOS App
with CI/CD.
Have any questions about this guide? Don’t
hesitate to reach out to us on Twitter
@semaphoreci.
33
Get in touch
More about Semaphore >> https://semaphoreci.com
Contact us >> https://semaphoreci.com/contact
Contact Sales: +1-415-992-7565
This guide was written by Amarildo Lucas and was originally published at
https://semaphoreci.com/ios-continuous-integration.
34

Mais conteúdo relacionado

Mais procurados

Ansible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD ProcessAnsible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD ProcessKhairul Zebua
 
Maven Basics - Explained
Maven Basics - ExplainedMaven Basics - Explained
Maven Basics - ExplainedSmita Prasad
 
.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1aminmesbahi
 
Ansible with oci
Ansible with ociAnsible with oci
Ansible with ociDonghuKIM2
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionSparkbit
 
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB AtlasWebinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB AtlasMongoDB
 
CORS - Enable Alfresco for CORS
CORS - Enable Alfresco for CORSCORS - Enable Alfresco for CORS
CORS - Enable Alfresco for CORSJared Ottley
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabFilipa Lacerda
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsSarath C
 
Modernizing Web Apps with .NET 6.pptx
Modernizing Web Apps with .NET 6.pptxModernizing Web Apps with .NET 6.pptx
Modernizing Web Apps with .NET 6.pptxEd Charbeneau
 
All about Context API
All about Context APIAll about Context API
All about Context APISouvik Basu
 

Mais procurados (20)

Ansible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD ProcessAnsible with Jenkins in a CI/CD Process
Ansible with Jenkins in a CI/CD Process
 
Maven Basics - Explained
Maven Basics - ExplainedMaven Basics - Explained
Maven Basics - Explained
 
.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
Firebase Overview
Firebase OverviewFirebase Overview
Firebase Overview
 
Ansible with oci
Ansible with ociAnsible with oci
Ansible with oci
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Firebase
FirebaseFirebase
Firebase
 
Jenkins
JenkinsJenkins
Jenkins
 
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB AtlasWebinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
 
CORS - Enable Alfresco for CORS
CORS - Enable Alfresco for CORSCORS - Enable Alfresco for CORS
CORS - Enable Alfresco for CORS
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Gitlab flow
Gitlab flowGitlab flow
Gitlab flow
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at Gitlab
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS Apps
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Modernizing Web Apps with .NET 6.pptx
Modernizing Web Apps with .NET 6.pptxModernizing Web Apps with .NET 6.pptx
Modernizing Web Apps with .NET 6.pptx
 
React Native
React NativeReact Native
React Native
 
All about Context API
All about Context APIAll about Context API
All about Context API
 

Semelhante a iOS CI/CD: Continuous Integration and Continuous Delivery Explained

Path To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfPath To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfpCloudy
 
Salesforce cicd integration a quick guide
Salesforce cicd integration a quick guideSalesforce cicd integration a quick guide
Salesforce cicd integration a quick guideKaty Slemon
 
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxDeploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxPankaj Goyal
 
Industrialization of Android Development (Concept)
Industrialization of Android Development (Concept)Industrialization of Android Development (Concept)
Industrialization of Android Development (Concept)Mohamed TAIEB
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous EverythingAndrea Tino
 
Continuous integration - CI
Continuous integration - CIContinuous integration - CI
Continuous integration - CINhan Nguyen
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatmdevtalk
 
Hyd virtual meetupslides11jul
Hyd virtual meetupslides11julHyd virtual meetupslides11jul
Hyd virtual meetupslides11julSantosh Ojha
 
Mobile CICD
Mobile CICD Mobile CICD
Mobile CICD Gurzu Inc
 
Building CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxBuilding CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxGurzuInc
 
iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsShashikant Jagtap
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)Hui (Henry) Chen
 
IBM Bluemix cloudfoundry platform
IBM Bluemix cloudfoundry platformIBM Bluemix cloudfoundry platform
IBM Bluemix cloudfoundry platformDaniela Zuppini
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesGetting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesAmazon Web Services
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker, Inc.
 

Semelhante a iOS CI/CD: Continuous Integration and Continuous Delivery Explained (20)

DevOps: Age Of CI/CD
DevOps: Age Of CI/CDDevOps: Age Of CI/CD
DevOps: Age Of CI/CD
 
Path To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfPath To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdf
 
DevOps Delivery Pipeline
DevOps Delivery PipelineDevOps Delivery Pipeline
DevOps Delivery Pipeline
 
Salesforce cicd integration a quick guide
Salesforce cicd integration a quick guideSalesforce cicd integration a quick guide
Salesforce cicd integration a quick guide
 
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxDeploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
 
Industrialization of Android Development (Concept)
Industrialization of Android Development (Concept)Industrialization of Android Development (Concept)
Industrialization of Android Development (Concept)
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Continuous integration - CI
Continuous integration - CIContinuous integration - CI
Continuous integration - CI
 
Ci/cd for App development
Ci/cd  for App developmentCi/cd  for App development
Ci/cd for App development
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
 
Hyd virtual meetupslides11jul
Hyd virtual meetupslides11julHyd virtual meetupslides11jul
Hyd virtual meetupslides11jul
 
Mobile CICD
Mobile CICD Mobile CICD
Mobile CICD
 
Building CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxBuilding CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptx
 
iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS Apps
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
 
IBM Bluemix cloudfoundry platform
IBM Bluemix cloudfoundry platformIBM Bluemix cloudfoundry platform
IBM Bluemix cloudfoundry platform
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesGetting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
 
Continuous Integration vs Continuous Delivery vs Continuous Deployment
Continuous Integration vs Continuous Delivery vs Continuous Deployment Continuous Integration vs Continuous Delivery vs Continuous Deployment
Continuous Integration vs Continuous Delivery vs Continuous Deployment
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker Cloud
 

Último

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 

Último (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 

iOS CI/CD: Continuous Integration and Continuous Delivery Explained

  • 1. iOS CI/CD Continuous integration and continuous delivery (CI/CD) is widely used by development teams, even in open-source communities. It offers a sustainable way to test and deploy code many times a day without the hurdle of doing it manually. In this guide, you’ll learn the foundations of getting started with CI/CD for iOS. Continuous Integration and Continuous Delivery Explained 1
  • 2. Contents: 1. The importance of CI/CD for iOS developers 2. Principles of iOS CI/CD 3. The top benefits of CI/CD for iOS 4. Best practices to remember for iOS CI/CD 5. An iOS CI/CD workflow example 6. Getting started with CI/CD for iOS 7. Choosing the right iOS CI/CD platform By the end of this presentation, you’ll be able to evaluate your current workflow, adopt the best CI/CD practices, and ship your iOS applications faster. 2
  • 3. 1 The importance of CI/CD for iOS developers CI/CD for iOS will save you days of preparing app submissions, fixing critical bugs, and uploading screenshots to the App Store. Automating these processes means that any member of the team will be able to release bug fixes or updates. The CI/CD can check in and check out the source code so all members on your team will be on the same page. Leading to better communication, increased app development quality, and more frequent releases. 3
  • 4. The Real Value of DevOps DevOps is a cultural change in the organization where the operations and development teams join forces to continuously deliver high-quality software. Because teams employing DevOps ideals are focused on delivering value to users as quickly and efficiently as possible, continuous integration and delivery is a natural extension of their operations. The end goal is to help iOS developers build and release apps at high velocity by defining a process for effective app delivery. 4
  • 5. 2 Principles of iOS CI/CD One of the most important aspects of implementing CI/CD for iOS is learning about the principles that can increase the value of your current workflow. 5
  • 6. Use Static Code Analysis So that the build can fail early (in the event of serious coding errors), static code analysis should be the absolute first step in the build process. This way, you can fix the issues as soon as they are found by the server. 6
  • 7. Keep the Code Deployable Once the linter step is passed, we can move on to the building and compiling of the source code. The last step in the app build process should be to generate the archive to be submitted to iTunes Connect. In the case of iOS, it should be an IPA file. 7
  • 8. Notify Your Team Any developer can deploy any version of the app to any environment at a push of a button. Once the build is finished, it’s important to send a notification to other developers with the status of the build. This can be an email, Slack message, or similar notification service. The iOS CI/CD pipeline should trigger this notification at the end of every build. 8
  • 9. Design for Iterative Releases Have a well-defined pipeline that focuses on automated delivery. Implement static analytics on your source code to detect issues or crashes (even in production). 9
  • 10. 3 The top benefits of CI/CD for iOS Aside from making your previous iOS development process more efficient, implementing a CI/CD pipeline helps your team. 10
  • 11. 1. Build faster A continuous and automated development cycle helps mobile development teams make high-value releases faster. 11
  • 12. 2. Detect problems early A continuous integration pipeline can run test suites on every code change. Thus, problems can be spotted before they can reach production. 12
  • 13. 3. Provide effective feedback In a continuous integration workflow, the entire team can view and monitor source code activity. When new problems appear, the team members that introduced the failure are automatically notified. 13
  • 14. 4. Automate the testing process Manually testing iOS apps on a simulator or multiple devices is a time-consuming process. In a CI/CD workflow, the process is automatic and straightforward. Simply configure the devices and simulators into the server workflow and let your pipeline do the work for you. 14
  • 15. 5. Build deployment logs In a CI/CD pipeline, all build deployments are logged. This means that at any given time, you can identify the exact point where your app failed. 15
  • 16. 4 Best practices to remember for iOS CI/CD When implementing a CI/CD workflow for iOS development, it’s vital you adhere to standard best practices. Why? The guidelines below are designed to help you push high-quality code with every release. 16
  • 17. 1. Keep your Pipeline Fast Always improve the quality of your pipeline by inspecting its configuration, improving build times, removing any unnecessary code or assets, configuring the right environments, and removing any bottlenecks causing issues on the deploy process. 17
  • 18. 2. Run Code Analysis Early Fail fast: Include unit tests and linters early in the pipeline. 18
  • 19. 3. Separate Build Configurations Use profiles to separate build configurations. Internal and testing builds are different from the builds for your users. By default, an iOS app includes Debug and Release build configurations. It makes sense to add Test, Staging and Production builds. 19
  • 20. 4. Automate Your Builds Compiling and building an iOS app takes a great deal of time. Using CI/CD workflow you can automate the process and save time. 20
  • 21. 5. Deploy Only Through the Pipeline The pipeline is configured to help and enforce best practices of CI/CD for your development cycle. Avoid at all cost manual deploys. Making your code run through your pipeline requires each change to conform with your code standards and styles. This mechanism safeguards your codebase from untrusted code. 21
  • 22. 6. Maintain Similar Environments If possible, try to maintain similar pipelines in all your environments. Changes that pass the requirements of one environment should pass in another. This also includes feature branches. 22
  • 23. 7. Monitor the Pipeline Apps are unpredictable. No matter how cool you think your code is, the app can fail for a lot of reasons. Therefore, you’ll need to proactively monitor your deploys throughout the pipeline so you can catch problems before they reach the App Store. 23
  • 24. 5 An iOS CI/CD workflow example After understanding and adopting essential CI/CD principles, the next step is to set up your pipeline. One of the more painful parts of iOS development is iterative releases. It’s tedious and time-consuming. The role of CI/CD here is to automate all of these steps. 24
  • 25. 25
  • 26. Before CI/CD Before implementing CI/CD, a typical release to the App Store looks like this: 1. Check out source code from some remote repository (GitHub, Bitbucket, GitLab, etc.). 2. Do some static analysis of the code using SwiftLint, for example. 3. Compile and build your iOS app in a simulator or device to check that everything is running as expected. 4. Run unit, UI or other kinds of tests. 5. Code signing and archive your app. 6. Submit your app to iTunes Connect. 7. Notify users about your release. This process can be error-prone; you may experience merge conflicts and poor management of versions (as this is done manually by each developer). 26
  • 27. After CI/CD Fortunately, we can improve it with automation. When we use an iOS CI/CD pipeline, our workflow looks more like this: 1. Code the application changes with Xcode. 2. When the code is ready for integration, it automatically pushes to a Git repository. 3. Next, CI triggers the execution of test cases that will confirm the code is ready for release. 4. Finally, the release pipeline triggers to deploy the archive produced in the CI stage, and a build is released with TestFlight. See how the iOS developer has far less to do with CI/CD? That’s the beauty of automation. 27
  • 29. Getting started with CI/CD To integrate CI/CD into your iOS development process, start by exploring what things can make your team’s job easier. You need to understand and collect information about your current workflow and provide feedback to the team until you have defined a process for your pipeline. Using this information, your team can evaluate and define how to automate the current workflow to lead to a better development lifecycle. Optimizing and automating the current process should be the priority. 29
  • 30. Getting started with CI/CD Ultimately, this approach increases transparency through all your team. When your iOS CI/CD pipeline is set up, your entire team will know what’s going on with the builds and will receive the latest results of tests, which means they can move on to resolving new issues. This process allows developers to stay focused on writing code and observing the app’s behavior. Meanwhile, product stakeholders have access to updated metrics. Code changes and tests are available for review at any time. The lesson here is that, as a faster feedback loop emerges, each member of the team can learn from each other and take responsibility for the code that is shipped. 30
  • 31. 7 Choosing the Right iOS CI/CD Platform 31
  • 32. Self-hosted or Cloud-based? Self-hosted CI/CD solutions require owning hardware and setting up infrastructure. Maintenance becomes a big endeavor. Software-as-a-service (SaaS) solutions, on the other hand, offer cross-platform capabilities with zero maintenance These cloud-based CI/CD tools are easy to set up and all the hardware and software maintenance is managed by the service provider. Developers can skip a lot of tedious or repetitive tasks, such as code signing and publishing. Cloud-based CI/CD also comes with a big advantage: it unifies your team around a single platform, mobilizing your iOS, Android and web developers within a consistent tool. 32
  • 33. Summing Up A well-defined process and the right CI/CD tools will make your iOS development cycle faster and more efficient. If you want to explore CI/CD for iOS in a more hands-on way, check out our tutorial on building, testing, & deploying an iOS App with CI/CD. Have any questions about this guide? Don’t hesitate to reach out to us on Twitter @semaphoreci. 33
  • 34. Get in touch More about Semaphore >> https://semaphoreci.com Contact us >> https://semaphoreci.com/contact Contact Sales: +1-415-992-7565 This guide was written by Amarildo Lucas and was originally published at https://semaphoreci.com/ios-continuous-integration. 34