Verified Commit 4251aebf authored by Geoff Pado's avatar Geoff Pado
Browse files

Add "talks" section and first talk (CI).

parent 009b1909
......@@ -7,5 +7,11 @@ permalink: /blog/:year/:month/:title/
baseurl: "" # the subpath of your site, e.g. /blog/
url: "http://pado.name" # the base hostname & protocol for your site
# Collections
collections:
talks:
output: true
permalink: /:collection/:path/
# Build settings
markdown: kramdown
......@@ -2,7 +2,7 @@
<h1><a href="/">Geoff Pado</a></h1>
<nav>
<a href="/blog/" {% if page.highlight == 'blog' %}class="active"{% endif %}>Blog</a>
<a href="/about/" {% if page.highlight == 'about' %}class="active"{% endif %}>About</a>
<a href="/talks/" {% if page.highlight == 'talks' %}class="active"{% endif %}>Talks</a>
<a href="/resume/" {% if page.highlight == 'resume' %}class="active"{% endif %}>R&eacute;sum&eacute;</a>
</nav>
</header>
---
layout: talks
---
<h2>{{ page.title }}</h2>
{{ content }}
---
layout: default
highlight: talks
---
<aside class="blogroll">
<a href="mailto:geoff@pado.name">Contact Me</a>
</aside>
<article class="post">
{{content}}
</article>
---
layout: talk
highlight: talks
title: Continuous Integration (February 2018)
description: A talk about continuous integration for iOS. Goes over the basics, discusses the benefits to teams both large and small, and gives an overview of the (many) options available for iOS developers.
---
A talk about continuous integration for iOS. Goes over the basics, discusses the benefits to teams both large and small, and gives an overview of the (many) options available for iOS developers.
### Artifacts
[Slides (PDF)](slides.pdf)
[Slides (Keynote)](slides.key)
[Notes (Markdown)](notes.md)
### Links
["Alternatives" Blog Post](/blog/2018/01/exploring-alternatives-to-buddybuild/)
[Xcode Server](https://developer.apple.com/library/content/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/)
[Jenkins](https://jenkins.io/)
[Gitlab CI](https://about.gitlab.com/gitlab-ci/)
[Fastlane.ci](https://github.com/fastlane/ci)
[Buddybuild](https://buddybuild.com/)
[Circle](https://circleci.com)
[Bitrise](https://www.bitrise.io/)
[AppCenter](https://appcenter.ms/)
# Continuous Integration for iOS
## Introduction
- iOS Developer
- Work with Mark at L4 Digital
- The company soon to be known as the company formerly known as L4 Digital
- Also have several apps in the store individually
### What is Continuous Integration?
- Ask about who already has a continuous integration setup
- Making sure your code is always in a state that is stable for development.
- Other things such as continuous delivery and continuous deployment, those aren’t being discussed here.
- Automated building
- Systematic building
- Makes sure you always have the same build every time.
- Given stable code, you should always be able to make the same build without having to mess around with your environment.
### Benefits
#### For Teams
- Make sure everyone can build
- Nothing is locked on any person’s machine
- Can continue to build even if you lose people
- Signing!
- First-pass review
- Linting
- Tests
- Block failing builds!
- QA/stakeholders get regular releases
- Give walkthrough of what we do for L4 releases
- On merge request
- Run the tests
- Update status on GitLab
- On master branch
- Builds app three times
- Signs app for App Store, Enterprise, and Ad-Hoc
- Puts build artifacts on Dropbox
- Generates documentation
- Sends a Slack message to a set of stakeholders
#### For Individuals
- Automate release
- Submission to iTunes Connect
- TestFlight
- Give walkthrough of what I do for Scrawl Notes
- Run Carthage
- Run tests
- Download signing credentials (cert, profiles)
- Sets the build number
- Builds the app for App Store
- Uploads to iTunes Connect
## Concepts
### Pipeline
- A set of tasks you want run in order to accomplish a goal.
- e.g., build app, run tests, deploy
- Multiple pipelines can be run per trigger, for composable sets of recurring tasks
- Perhaps you always want to run tests, but only deploy `master`
### Runner
- The machine/process that is executing the pipelines.
- This basically has to be a Mac for any Xcode work.
- For self-hosted solutions, usually involves installing some kind of software on your machine.
- Can be a physical machine or just a virtual one.
### Host
- The system that manages all of the continuous integration tasks that are available.
- Does not necessarily need to be a Mac (my GitLab CI host is a Linux server).
- Communicates with the outside world (Slack, SCM, etc.)
## Available Solutions
### On-Site
- Pros
- Privacy/security (not uploading source to third party)
- Cost (most on-site are free)
- Avoiding lock-in
#### Xcode Server
- Built into Xcode.
- Can easily run on every Mac.
- Managed through Xcode
- In app, under the reports area
- Limited
- One machine per bot, can’t distribute across machines
- Limited non-Xcode scripting
#### Jenkins
- Oracle
- Tons of integrations
- So many integrations
- Works with basically everything
### GitLab CI
- Single-file setup
- YAML defines pipelines, artifacts, etc.
- Pretty dependent on already being in the GitLab ecosystem
### Fastlane.ci
- Recently announced
- Not too much information yet
- Mobile-focused
### Hosted
- Pros
- Less fiddling, more handled for you
- Don’t have to use machines you might otherwise have use for
- Easier to scale upward as needed
#### Buddybuild
- So good.
- …that it was bought by Apple.
- No longer available. 😭
#### Circle
- One of the most well-known hosted setups.
- Good documentation, big community
- Handles everything
- Not much hand holding
#### Bitrise
- Powerful.
- Confusing.
#### AppCenter
- Microsoft owned.
- Very nice!
- Limited.
## Conclusion
- Link to information available
- Recording(?)
- Slides
- Contact Information
- Links to solutions
\ No newline at end of file
---
layout: talks
style: post.css
highlight: talks
title: "Talks"
---
{% for talk in site.talks %}
<h2>
<a href="{{ site.baseurl }}{{ talk.url }}">{{ talk.title }}</a>
</h2>
<div class="entry">
{{ talk.description | markdownify }}
</div>
{% endfor %}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment