Book Image

Continuous Delivery for Mobile with fastlane

By : Doron Katz
Book Image

Continuous Delivery for Mobile with fastlane

By: Doron Katz

Overview of this book

Competitive mobile apps depend strongly on the development team’s ability to deliver successful releases, consistently and often. Although continuous integration took a more mainstream priority among the development industry, companies are starting to realize the importance of continuity beyond integration and testing. This book starts off with a brief introduction to fastlane—a robust command-line tool that enables iOS and Android developers to automate their releasing workflow. The book then explores and guides you through all of its features and utilities; it provides the reader a comprehensive understanding of the tool and how to implement them. Themes include setting up and managing your certificates and provisioning and push notification profiles; automating the creation of apps and managing the app metadata on iTunes Connect and the Apple Developer Portal; and building, distributing and publishing your apps to the App Store. You will also learn how to automate the generation of localized screenshots and mesh your continuous delivery workflow into a continuous integration workflow for a more robust setup. By the end of the book, you will gain substantial knowledge on delivering bug free, developer-independent, and stable application release cycle.
Table of Contents (27 chapters)
Title Page
Dedication
www.PacktPub.com
Foreword
Contributors
Preface
Index

Adding Slack actions into our workflow


We will be working with the in-built slack action and calling it within our Fastfile, so go ahead and open up the file. The first thing we are going to do is create a private lane, which is a lane that can’t be called from the command line (or externally), but only from within another lane. At the bottom of the file, add the following:

private_lane :slack do |options|
    message = options[:message]
    success = options[:success]
    payload = options[:payload]
    version     = get_version_number(xcodeproj: "Client.xcodeproj")
    build       = get_build_number(xcodeproj: "Client.xcodeproj")
    slack(
      message: message + " :" + version + ":" + build,
      slack_url: "https://YOUR_WEBHOOK_URL",    
      success: success,
      payload: payload)
end

What we are doing here is creating a generic function called slack that we can call by passing arguments depending on the type of Slack message we want to convey. Make sure you replace the slack_url...