• This repository has been archived on 17/Jan/2023
  • Stars
    star
    251
  • Rank 161,862 (Top 4 %)
  • Language
    Ruby
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A fastlane setup to deploy Objective-C and Swift frameworks.

Objective-C/Swift Framework Deployment made easy

🚧 Note this is still a work in progress, and is not ready for production yet 🚧

Creating a new release for an Objective-C/Swift open source framework is a tedious process. This fastlane setup is an attempt to streamline that process by creating a single button to generate a new release, allowing developers to focus on great updates, without the overhead of creating new releases.

It is recommended to have a high level understanding of what fastlane is, but it is not required. You can read up more on fastlane here.

Installation

To install fastlane, simply use gem (related: Should I use sudo?):

[sudo] gem install fastlane

Why?

The goal is to create a one button release like so with almost no overhead for a developer.

fastlane prepare_framework_release version:3.0.0 env --deploy

That does the following:

  1. Verifies the git branch is clean
  • Ensures the lane is running on the master branch
  • Verifies the Github milestone is ready for release (no open issues, and at least one closed issue)
  • Pulls the remote to verify the latest the branch is up to date
  • Updates the version of the info plist used by the framework
  • Updates the version of the podspec
  • Generates a changelog based on the Github milestone
  • Updates the changelog file
  • Commits the changes to master
  • Pushes the commited branch to the remote
  • Creates a new tag
  • Pushes the tag to the remote
  • Runs the tests on the CI server

When the tests have passed on CI, the complete_framework_release lane will automatically run:

  1. Generates a changelog for the Github Release Page
  • Creates a Github Release
  • Builds Carthage Frameworks
  • Uploads Carthage Framework to Github Release
  • Pushes podspec to pod trunk
  • Lints the pod spec to ensure it is valid
  • Closes the associated Github milestone

Github Management Best Practices

In order to get the most out of this tool, it is recommended you manage your Github repo with the following best practices. It's easy to do, and gives you a lot of automation power with fastlane. Below is how AFNetworking is being managed:

  • Any changes that should be referenced in the changelog shoud be merged using pull requests.
  • The title of the pull request should be concise, and ready to display in the changelog. This means as the admin of the repo, it may be appropriate for you to edit a pull request's title to make it more meaningful.
  • All releases should be managed with a Github milestone. Not only does this provide a well documented place for users to get a clear view of what went in to a release, but it will also serve as the main component for changelog generation. The milestone name should match the planned tag name.
  • All issues merged should be grouped into one of five categories using Github labels. This allows the changelog to be divided into multiple, logical sections, like so. You can see an example of an AFNetworking release managed this way.
    • Added
    • Updated
    • Changed
    • Fixed
    • Removed

Getting Started

There are primary use cases for these fastlanes: testing and deployment. When used together, a full continuous integration system can be created.

Testing

Getting the testing harness configured is an easy process.

  1. Configure the scheme's test action to run a test target, and confirm all tests pass locally
  2. Setup the Fastfile
  3. Setup the env files
  4. Setup CI (optional)
  5. Profit πŸ’°

Follow the getting started guide to configure the framework for testing.

Deployment

Getting up and running is a simple process:

  1. Setup the Fastfile
  2. Setup the env files
  3. Setup CI (optional)
  4. Generate a Github API Token
  5. Generate a Pod Trunk Access Token
  6. Profit πŸ’°

A full deployment guide has been created to help get developers get started with automating deployment.

Available Fastlane Lanes

The lanes provided are divided into two groups: lanes meant for for testing, and lanes meant for deployment. In combination with the Github best practices above, developers can fully automate the release process.

More Repositories

1

AFNetworking

A delightful networking framework for iOS, macOS, watchOS, and tvOS.
Objective-C
33,334
star
2

AFIncrementalStore

1,687
star
3

AFOAuth2Manager

AFNetworking Extension for OAuth 2 Authentication
Objective-C
1,186
star
4

AFNetworkActivityLogger

AFNetworking 3.0 Extension for Network Request Logging
Objective-C
560
star
5

AFAmazonS3Manager

AFNetworking Client for the Amazon S3 API
Objective-C
362
star
6

Xcode-Project-Templates

Objective-C
221
star
7

AFHTTPRequestOperationLogger

AFNetworking Extension for HTTP Request Logging
Objective-C
214
star
8

AFOAuth1Client

AFNetworking Extension for OAuth 1.0a Authentication
Objective-C
210
star
9

AFJSONRPCClient

Client for interacting with JSON-RPC APIs
Objective-C
189
star
10

AFgzipRequestSerializer

gzip Request Serializer for AFNetworking
Objective-C
165
star
11

AFRocketClient

152
star
12

AFOnoResponseSerializer

An XML and HTML response serializer for AFNetworking 2.0, using Ono
Objective-C
113
star
13

AFNetworking-ASIHTTPRequest

75
star
14

AFCoreImageResponseSerializer

AFNetworking 2.0 Serialization Module to apple Core Image Filters to Images
Objective-C
68
star
15

AFWebDAVManager

AFNetworking manager for WebDAV
Objective-C
64
star
16

AFMsgPackSerialization

AFNetworking 2.0 Serialization Module for MsgPack
Objective-C
64
star
17

WebKit-AFNetworking

AFNetworking Extensions for WebKit
Objective-C
48
star
18

AFContentRequestOperations

Legacy content-specific request operation subclasses re-implemented with AFNetworking 2.0 APIs
Objective-C
25
star
19

AFCollectionJSONRequestOperation

AFNetworking Extension for Collection+JSON Hypermedia
20
star
20

afnetworking.com

Source code for AFNetworking.com
CSS
8
star