The document discusses setting up continuous integration (CI) with Travis CI for iOS projects. It begins with initializing a Fastlane project which integrates with Travis CI and the Apple Developer Portal. It then covers configuring the .travis.yml file, common extensions to CI like linting, testing and code coverage, and alternatives to Travis CI like CircleCI. The goal of CI is to avoid last minute issues, be able to ship at any time, and save developer time through automation.
3. Hi, I’m [Florian Harr].
• 10/2011 - 10/2014 Bachelors Degree in Computer Science, Stuttgart Germany
• 10/2014 - 01/2016 iOS Software Engineer @ Big Nerd Ranch, Atlanta, GA
• 01/2016 - Today iOS Software Engineer @ Stable|Kernel, Atlanta, GA
4. We’re stable|kernel.
stable|kernel is an Atlanta-based mobile development company
to craft smartly-designed mobile applications that connect brands
directly with their users.
Our team of engineers and designers takes clients from
strategy through design, development and deployment,
ensuring timely delivery of the highest quality applications.
6. @stablekernel
Extreme programming (XP) is a software
development methodology which is
intended to improve software quality
and responsiveness to changing customer
requirements. As a type of agile software
development, it advocates frequent
"releases" in short development cycles,
which is intended to improve
productivity and introduce checkpoints
at which new customer requirements can
be adopted.
8. @stablekernel
kən-ˈtin-yü-əs ˌin-tə-ˈgrā-shən
Continuous Integration
Continuous Integration (CI) is a development practice that requires
developers to integrate code into a shared repository several times a day.
• Each check-in is then verified by an automated build, allowing teams to
detect problems early.
adjective noun
9. @stablekernel
kən-ˈtin-yü-əs ˌin-tə-ˈgrā-shən
Continuous Integration
Continuous Integration (CI) is a development practice that requires
developers to integrate code into a shared repository several times a day.
• Each check-in is then verified by an automated build, allowing teams to
detect problems early.
adjective noun
10. @stablekernel
Continuous Integration (CI) is a
development
practice
that requires developers to integrate code into a shared repository several times a day.
Each check-in is then verified by an
automated build
allowing teams to detect problems early.
21. @stablekernel
Configured through .travis.yml file
before_install:
install:
before_script:
script:
after_success:
(after_failure:)
(before_deploy:)
(deploy:)
(after_deploy:)
(after_script:)
You can do everything that you can do in your Terminal(.app)….
.travis.yml
language:
22. @stablekernel
Configured through .travis.yml file
You can do everything that you can do in your Terminal(.app)…
…. which is pretty much everything*
*exclusions and smaller limitations reserved
.travis.yml
language:
show live demo after this?!
Maybe live demo could show app and
right afterwards integration results
including snapshots
before_install:
install:
before_script:
script:
after_success:
(after_failure:)
(before_deploy:)
(deploy:)
(after_deploy:)
(after_script:)
26. @stablekernel
Florians-MacBookPro:FizzBuzz evils$ fastlane init
[23:20:03]: Detected iOS/Mac project in current directory...
[23:20:03]: This setup will help you get up and running in no time.
[23:20:03]: fastlane will check what tools you're already using and set up
[23:20:03]: the tool automatically for you. Have fun!
[23:20:03]: Created new folder './fastlane'.
[23:20:03]: $ xcodebuild clean -showBuildSettings -project ./FizzBuzz.xcodeproj
Your Apple ID (e.g. fastlane@krausefx.com): harr.florian@gmx.de
[23:20:08]: Verifying if app is available on the Apple Developer Portal and iTunes Connect...
[23:20:08]: Starting login with user 'harr.florian@gmx.de'
Multiple teams found on the Developer Portal, please enter the number of the team you want to use:
1) Z6QSU67DFL "FeMoSo Systems GmbH" (Company/Organization)
2) DR3HWS5LMB "Florian Harr" (Individual)
3) CM487E42JY "Rheem Manufacturing Company" (Company/Organization)
4) R9AR4U6NWF "Stable Kernel, LLC" (Company/Organization)
2
+----------------+-------------------------------------------------------+
| Detected Values |
+----------------+-------------------------------------------------------+
| Apple ID | harr.florian@gmx.de |
| App Name | FizzBuzz |
| App Identifier | com.iFlorian.FizzBuzz |
| Project | /Users/evils/Repositories/FizzBuzz/FizzBuzz.xcodeproj |
+----------------+-------------------------------------------------------+
[23:20:12]: This app identifier doesn't exist on iTunes Connect yet, it will be created for you
[23:20:12]: This app identifier doesn't exist on the Apple Developer Portal yet, it will be created for you
Please confirm the above values (y/n)
y
[23:20:22]: Created new file './fastlane/Appfile'. Edit it to manage your preferred app metadata information.
[23:20:22]: Creating the app on iTunes Connect and the Apple Developer Portal
[23:20:22]: $ xcodebuild clean -showBuildSettings -project ./FizzBuzz.xcodeproj
23:21:24]: Successfully finished setting up fastlane
27. @stablekernel
Florians-MacBookPro:FizzBuzz evils$ fastlane init
[23:20:03]: Detected iOS/Mac project in current
directory...
[23:20:03]: This setup will help you get up and
running in no time.
[23:20:03]: fastlane will check what tools you're
already using and set up
[23:20:03]: the tool automatically for you. Have fun!
[23:20:03]: Created new folder './fastlane'.
[23:20:03]: $ xcodebuild clean -showBuildSettings -
project ./FizzBuzz.xcodeproj
Your Apple ID (e.g. fastlane@krausefx.com):
harr.florian@gmx.de
[23:20:08]: Verifying if app is available on the
Apple Developer Portal and iTunes Connect...
28. @stablekernel
Florians-MacBookPro:FizzBuzz evils$ fastlane init
[23:20:03]: Detected iOS/Mac project in current
directory...
[23:20:03]: This setup will help you get up and
running in no time.
[23:20:03]: fastlane will check what tools you're
already using and set up
[23:20:03]: the tool automatically for you. Have fun!
[23:20:03]: Created new folder './fastlane'.
[23:20:03]: $ xcodebuild clean -showBuildSettings -
project ./FizzBuzz.xcodeproj
Your Apple ID (e.g. fastlane@krausefx.com):
harr.florian@gmx.de
[23:20:08]: Verifying if app is available on the
Apple Developer Portal and iTunes Connect...
29. @stablekernel
Florians-MacBookPro:FizzBuzz evils$ fastlane init
[23:20:03]: Detected iOS/Mac project in current
directory...
[23:20:03]: This setup will help you get up and
running in no time.
[23:20:03]: fastlane will check what tools you're
already using and set up
[23:20:03]: the tool automatically for you. Have fun!
[23:20:03]: Created new folder './fastlane'.
[23:20:03]: $ xcodebuild clean -showBuildSettings -
project ./FizzBuzz.xcodeproj
Your Apple ID (e.g. fastlane@krausefx.com):
harr.florian@gmx.de
[23:20:08]: Verifying if app is available on the
Apple Developer Portal and iTunes Connect...
30. @stablekernel
Florians-MacBookPro:FizzBuzz evils$ fastlane init
[23:20:03]: Detected iOS/Mac project in current
directory...
[23:20:03]: This setup will help you get up and
running in no time.
[23:20:03]: fastlane will check what tools you're
already using and set up
[23:20:03]: the tool automatically for you. Have fun!
[23:20:03]: Created new folder './fastlane'.
[23:20:03]: $ xcodebuild clean -showBuildSettings -
project ./FizzBuzz.xcodeproj
Your Apple ID (e.g. fastlane@krausefx.com):
harr.florian@gmx.de
[23:20:08]: Verifying if app is available on the
Apple Developer Portal and iTunes Connect...
31. @stablekernel
Florians-MacBookPro:FizzBuzz evils$ fastlane init
[23:20:03]: Detected iOS/Mac project in current
directory...
[23:20:03]: This setup will help you get up and
running in no time.
[23:20:03]: fastlane will check what tools you're
already using and set up
[23:20:03]: the tool automatically for you. Have fun!
[23:20:03]: Created new folder './fastlane'.
[23:20:03]: $ xcodebuild clean -showBuildSettings -
project ./FizzBuzz.xcodeproj
Your Apple ID (e.g. fastlane@krausefx.com):
harr.florian@gmx.de
[23:20:08]: Verifying if app is available on the
Apple Developer Portal and iTunes Connect...
55. @stablekernel
Alternatives to TravisCI
• Similar to a managed full stack Travis CI Setup
• Includes TestFlight like beta environment
• Compatible with:
• BitBucket
• GitHub
• GitLab
65. @stablekernel
Conclusion
Why do we do all of this?
• Avoid last minute emergencies early on
• Ability to ship at any point
• Regularly run tests
• Save hours and hours of your time through automation
https://github.com/evils/FizzBuzz
Find Examples and more at ….