All Projects → d4r1091 → on-demand-delivery-fastlane-slack

d4r1091 / on-demand-delivery-fastlane-slack

Licence: MIT license
iOS On-Demand delivery architecture via slack/jenkins/fastlane. Demo project for: #PragmaConf2019

Programming Languages

ruby
36898 projects - #4 most used programming language
swift
15916 projects
shell
77523 projects

Projects that are alternatives of or similar to on-demand-delivery-fastlane-slack

Fastlane--Packaging
Fastlane--自动打包文件配置和流程
Stars: ✭ 38 (+111.11%)
Mutual labels:  fastlane, fastfile
walkiebot
walkiebot opensource
Stars: ✭ 42 (+133.33%)
Mutual labels:  slackbot
Office Simulator
Miss the office life? You won't any more with this wonderful office slack simulator.
Stars: ✭ 152 (+744.44%)
Mutual labels:  slackbot
fastlane-plugin-validate app
Validate your app with altool before uploading to iTunes Connect
Stars: ✭ 16 (-11.11%)
Mutual labels:  fastlane
Chatskills
Run and debug Alexa skills on the command-line. Create bots. Run them in Slack. Run them anywhere!
Stars: ✭ 171 (+850%)
Mutual labels:  slackbot
birthtalk
Meet who have birth common with you
Stars: ✭ 36 (+100%)
Mutual labels:  fastlane
Slack Block Builder
Lightweight, no-dependency JavaScript library for creating Slack Block Kit UIs, with a builder syntax, inspired by SwiftUI.
Stars: ✭ 129 (+616.67%)
Mutual labels:  slackbot
slack-metabot
Extract metadata (EXIF) from uploaded files on Slack
Stars: ✭ 15 (-16.67%)
Mutual labels:  slackbot
pedax
Reversi Board with edax, which is the strongest reversi engine.
Stars: ✭ 18 (+0%)
Mutual labels:  fastlane
Awesome Bots
The most awesome list about bots ⭐️🤖
Stars: ✭ 2,864 (+15811.11%)
Mutual labels:  slackbot
Slack Ruby Bot Server
A library that enables you to write a complete Slack bot service with Slack button integration, in Ruby.
Stars: ✭ 225 (+1150%)
Mutual labels:  slackbot
Knary
A simple HTTP(S) and DNS Canary bot with Slack/Discord/MS Teams & Pushover support
Stars: ✭ 187 (+938.89%)
Mutual labels:  slackbot
coalibot
Slack bot for the school 42 using nlopes/slack Slack api client. This bot provide tools for student to access school informations.
Stars: ✭ 22 (+22.22%)
Mutual labels:  slackbot
Fantasy football chat bot
GroupMe Discord and Slack Chatbot for ESPN Fantasy Football
Stars: ✭ 166 (+822.22%)
Mutual labels:  slackbot
expense-manager
Developers : Checkout this repo for complete CI-CD of flutter with fastlane. Android/iOS both apps are getting deployed on stores with Fastlane.
Stars: ✭ 28 (+55.56%)
Mutual labels:  fastlane
Slackbotapi
node.js Slack RTM API module
Stars: ✭ 135 (+650%)
Mutual labels:  slackbot
Sactive Bot
😈 An extensible chat bot framework. sactive-bot is an evolution of the open source hubot project. - https://www.shipengqi.top/sactive-bot .
Stars: ✭ 212 (+1077.78%)
Mutual labels:  slackbot
Localizr
Localizr is a Tool that handles and automates the generation of localization files for IOS and Android so there will be only one source of truth for all of your localization strings.
Stars: ✭ 33 (+83.33%)
Mutual labels:  fastlane
efp
A framing protocol bridging the gap between elementary stream data and transport protocols.
Stars: ✭ 24 (+33.33%)
Mutual labels:  delivery
delivery-truck
DEPRECATED: Delivery build cb for pipelines
Stars: ✭ 36 (+100%)
Mutual labels:  delivery

On-Demand delivery for iOS via Jenkins and Slack

Slack a message to get an app!

Thanks to

Purpose

  • Automate, or better delegate, the process of building and delivering that specific version of your app to a different source.
  • Make your app delivery more reliable
  • Save you time, a lot.

Introduction

Let's provide some context and real use-case scenario this architecture can be applied to.

Imagine having your App to match:

  • different theme/style
  • specific add-ons
  • different settings

The codebase will be the same, apart from some details.

You can come up with many ideas like:

  • building up a Framework and import that framework to each specific Xcode Project (or Workspace of course)
  • having different targets in one Xcode Project (or Workspace of course)

In this example we've chosen the second option, the targets one.

This is applicable to any project of any scale (even single-target project). The example is meant to cover the scenario in which more than an App delivery is involved.

Tools 🧰

Can be an instance of a Mac Machine somewhere as well as your in-house Mac machine.

Getting started

In the machine you would like to set-up your architecture...

Make sure you have the latest Xcode command lines tools Run:

xcode-select --install

Create project and initialize Fastlane

dotenv

To facilitate our work of mix and match we introduced the .env environment as recommended from the fastlane doc, storing environment that is target specific.

Dotenv wants you to make files following its convention, which is absolutely the way you should go for if you have one project to maintain. In the case studied and explained in the talk, I've mentioned about different environment, projects, variables, so I had to adapt the dotenv loading to be controlled manually. That's why in the project we'll show how to tailor it having:

  • target
    • we will call it partner within the dotenv structure
  • build configuration (development, staging, uat, production)
    • we will call it environment within the dotenv structure

If you'd like to make your dotenv files encrypted, follow secure_dotenv project

Reminder 🚨: in the example Fasfile is used the manually loaded procedure.
  • Create your dotenv files following the standard convention

    • .env (root file)
    • .env.development (development file) .env.staging and so on…
  • Create your dotenv files following the manually loaded files

    • .env (root file)
    • [partner]-[environment].env (i.e. - partnerA-Staging.env) and so on…

Populate .env file

Open the newly created .env file and paste this line:

ENV_VAR_TEST=Hi there I'm an EVN VAR loaded from the root dotenv file 😁 !

Testing time 🤞🏽👨🏼‍⚕️

Lets see if our journey is going well, let's try to launch a fastlane action from the terminal. Reminder: you must be in the project directory.

bundle exec fastlane test_dotenv

That's how the output should look like:

Creating a subsidiary Fastfile

Code separation is always a good practice. We are going to manage our Fastlane's lanes having more or less the same approach. In the example there are few more Fastfile to be imported.

  • BetaDeliveryFastfile: manages the beta delivery through services like Fabric
  • PartnerDeliveryFastfile: exsclusively delegated to handle partner facing / production-like releases
  • ArchiveFastfile: contains the lane that manages the Archiving process (creates .ipa)
  • CodeSignFastfile: manages the process of manually codesign the app processing certificates and provisioning profiles
  • AuxiliaryFastfile: contains lane helpers which don't necessarily belong to any of the above

Having the three Fastfiles in our project, by executing the public lane:

bundle exec fastlane test_external_fastfile_import

In this test we will load the Partner and Beta Delivery Fastfile The result on your terminal will look like this:

OK! The basic stuff have been setup! 👌

Let's go ahead setting up:

  • Homebrew
    • open your terminal and paste /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Jenkins following its dedicated doc

Skip the docker integration below if you've tried the cloud hosted one

In your Xcode Project:

In oder to deliver ready-to-test builds, we choose Firebase App Distribution as provider of such.

For further setup and more info follow:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].