ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Fastlane Tutorial: Actions and Plugins
    Raywenderlich/Articles 2020. 12. 2. 09:56

    www.raywenderlich.com/11744293-fastlane-tutorial-actions-and-plugins

     

    fastlane Tutorial: Actions and Plugins

    In this fastlane tutorial, you’ll use actions and plugins to overlay your app icon, upload to Firebase and message your team once the beta build is ready.

    www.raywenderlich.com

    Version

    Swift 5, iOS 14, Xcode 12

     

    fastlane은 개발(development) 및 릴리스(release) 과정(process)을 자동화(automates)하여, 시간을 절약하고 반복적인(repetitive) 작업을 제거(eliminating)하며 인적 오류(human error)를 최소화(minimizing)하는 도구(tool)이다. fastlane Tutorial: Getting Started 에서 fastlane을 사용하여 어떻게 앱(app)을 설정(set up), 빌드(build), 테스트(test), 보관(archive), TestFlight에 업로드(upload)하는지 배웠다.

    이 튜토리얼(tutorial)은 이러한 기술(skills)을 기반으로 하므로, 계속하기 전에 해당 튜토리얼(tutorial)를 완료하는 것이 좋다. 여기에서는 다른 액션(actions)과 플러그인(plugins)을 사용하여 베타 버전용(beta versions) 앱(app) 아이콘(icon)에 오버레이(overlay) 추가, 테스터 용 Firebase 업로드(upload), 빌드(build) 준비 완료시 Slack으로 팀(team)에 메시지(message) 전송을 알아 본다.

    Note: 이 튜토리얼(tutorial)은 유료(paid) Apple Developer 계정(account)이 있고, command line, Xcode 및 임시 테스트(ad-hoc testing) 과정(process)에 대한 기본 지식(basic knowledge)이 있다고 가정한다. 계정(account)이 없는 경우, How to Submit an App to the Apple Store이 도움이 될 것이다.

     

    Getting Started

    이 페이지(page)의 상단(top) 또는 하단(bottom)에 있는 Download Materials 버튼(button)을 사용하여 샘플 프로젝트(sample project)의 사본(copy)을 가져온다(grab). 자료를 다운로드(downloaded)한 후, 컴퓨터의 편한(convenient) 위치에 .zip 아카이브(archive)를 추출(extract)한다.

    첫 번째 튜토리얼(tutorial)에서와 같이, 무제한(no-limit) Texas Hold 'Em의 토너먼트용(tournaments) 계산기(calculator)인 mZone Poker라는 샘플 앱(sample app)을 작업하게 된다. 입력(enter)한 칩(chip)의 수(count)와 현재 빅 블라인드 레벨(current big blind level)을 기반으로(based on) 권장 행동(recommended action)를 표시(displaying)한다.

    확인하기 위해, 빌드(build)하고 실행(run)한다:

     

    그러나 앱(app) 작업을 시작하기 전에 잠시 시간을 내어 모든 것을 올바르게(properly) 설정되었는지 확인한다.

     

    fastlane Configuration

    이전 튜토리얼(tutorial)에서 이미 fastlane과 Bundler를 설정(set up)했을 것이다. 터미널(Terminal)을 열고 시작(starter) 프로젝트(project) 디렉토리(directory)로 이동하여 다음 명령(command)을 실행(run)한다:

    bundle install

    이 명령(command)은 Bundler에게 Gemfile에 정의(defined)된 모든 종속성(dependencies)을 설치(install)하도록 요청(asks)하여, 이 튜토리얼(tutorial)의 나머지 명령(commands)을 실행(execute)할 준비가 되도록 한다.

     

    Signing Assets Configuration

    시작하기 전에 Xcode에서 서명 ID(signing identity)와 번들(bundle) ID를 설정(set up)해야 한다. 이러한 값(values)은 Apple Developer 계정(account)의 고유한(unique) 팀(team) ID와 Apple Developer PortalIdentifiers 섹션(section)에서 생성한 고유한(unique) 앱(app) 번들(bundle) 식별자(identifier)이다. 이전 튜토리얼(tutorial)을 진행했다면, 이미 설정(set)되어 있어야 한다.

    계정(account)을 설정(set up)한 후, 다음 단계(steps)를 수행(perform)한다:

    1. 시작(starter) 폴더(folder)에서 mZone Poker.xcodeproj를 연다.
    2. Xcode의 왼쪽 창(left pane)에서 프로젝트 탐색기(Project navigator)를 표시(reveal)한다.
    3. 최상위 mZone Poker 프로젝트(project) 노드(node)를 선택한다.
    4. Targets 제목(heading) 아래에 있는 mZone Poker 대상(target)을 클릭(click)한다.
    5. 가운데 창(middle pane)에서 Signing & Capabilities 탭(tab)을 선택(select)한다.
    6. Automatically Manage Signing 체크 박스(checkbox)를 선택(selected)했는지 확인(ensure)한다.
    7. Team 드롭 다운(drop-down)에서 해당하는 개발팀(development team)을 선택(select)한다.
    8. Bundle Identifier 필드(field)에 번들(bundle) ID를 입력(enter)한다.

    아래 이미지(image)에서 이러한 각 단계(steps)를 수행할 위치를 확인할 수 있다:

     

    Note: 드롭 다운(drop-down) 목록에 개발팀(development team)이 표시되지 않으면, Apple ID로 로그인(signing in) 해 본다. 메뉴(menu)에서 Xcode ▸ Preferences ▸ Accounts으로 이동하여 이 작업을 할 수 있다.

    위의 단계(steps)를 수행하면, "Signing for mZone Poker requires a development team"라는 오류(error)가 사라지고(disappear), 준비가 완료된다. 이제 mZone Poker 앱을 개선(improving)할 때이다.

     

    Adding an Overlay to the App Icon

    베타 테스터(beta testers)가 앱(app) 아이콘(icon)을 보고, 기기(device)에서 베타 빌드(beta builds)를 차별화(differentiate)할 수 있다면 좋을 것이다. fastlane을 사용하면 이를 쉽게 구현할 수 있다.

    이 단계(step)에서는 베타 빌드(beta builds)용 앱(app) 아이콘(icon)을 업데이트(update)하는 lane을 설정(set up)한다. 업데이트(updated)된 아이콘(icon)에는 기기(device)의 베타 빌드(beta build)에 대한 정보(information)를 쉽게 볼 수 있는 사용자 정의 텍스트(custom text)가 포함(include)된다.

     

    그러나(however) 시작하기 전에 빠르게(quick) 우회(detour)하여 fastlane 플러그인(plugins)을 먼저 이해한다.

     

    fastlane Plugins

    fastlane은 기본 설치(default install)로 기본 액션 집합(default set of actions)을 게시(publishes)하며, 추가적인(lanes) 작업없이 lanes에서 사용할(available) 수 있다. 기본 액션(default actions)은 주로 Xcode나 Android Studio 같은 퍼스트 파티(first-party) 도구(tools) 용이지만, 서드 파티(third-party) 도구(tools) 또는 필수가 아닌(non-essential) 유틸리티(utilities)에 대한 통합(integration)을 제공(provide)하는 다른 많은 액션(actions)이 있다.

    이러한 추가 액션(additional actions)은 플러그인(plugins)으로 추가할(available) 수 있으며, 기본(default) fastlane 설치(installation)와 함께 설치할 수 있다. 일단 설치(install)하면, 기본 액션(default actions)만큼이나 쉽게 Fastfile에서 사용할 수 있다.

    공식 문서(official documentation)를 읽어보면 플러그인(plugins) 작동 방식에 대해 자세히 알아볼 수 있다(find out). fastlane 문서(docs)에서 게시된(published) 플러그인(plugins)의 전체 목록(complete list)을 확인해 볼 수 있다.

     

    Icon Versioning Prerequisites

    앱 아이콘(app icon)에 오버레이(overlay)를 추가하기 위한 fastlane 구성(configuring) 전에, 몇 가지 작업(housekeeping)이 필요하다. 아이콘(icon) 오버레이(overlay)에 사용할 fastlane 플러그인(plugin)은 ImageMagick command-line 유틸리티(utility)이다. Homebrew 패키지 관리자(package manager)를 사용하여 설치(install)한다.

    Homebrew가 아직 설치(installed)되어 있지 않은 경우, 사이트로 이동하여 홈페이지의 설치(installation) 스크립트(script)를 복사(copy)하여 터미널(Terminal) 세션(session)에 붙여 넣는다(paste). 명령(command)을 실행(run)하고, 화면(on-screen)의 지시(instructions)에 따라 설정(setup)을 완료(complete)한다.

    그 후, 다음 명령(command)을 사용하여 ImageMagick을 설치(install)한다:

    brew install ImageMagick

    ImageMagick과 모든 종속성(dependencies)이 설치(install)되면, 첫 번째 fastlane 플러그인(plugin)을 설정(set up)할 준비가 된 것이다.

     

    Installing the Icon Versioning Plugin

    플러그인(plugin)을 사용하려면 몇 가지 추가 단계(extra steps)를 수행(perform)하여 설치(install)하여, fastlane에서 사용할 수 있도록(available) 해야한다. Icon Versioning 플러그인(plugin)을 사용하여 앱 아이콘(app icon)을 업데이트(update)한다.

    시작하려면 터미널(Terminal)을 열고 다음 명령(command)을 실행(run)한다:

    bundle exec fastlane add_plugin fastlane-plugin-icon_versioning

    이 프로젝트(project)에 플러그(plugin)인을 추가하는 것이 처음이므로 다음과 같은 출력(output)이 표시된다:

     

    이것은 몇 가지 중요한(important) 사항을 알려준다:

    1. Pluginfile에 플러그인(plugin)을 성공적으로 추가했다.
    2. 이전에 플러그인(plugins)을 사용하지 않았기 때문에, fastlane이 플러그인(plugins)을 참조(reference)하도록 Gemfile을 수정(modify)해야 한다. 이것은 fastlane이 생성하지 않은 파일(file)을 수정(modify)할 권한(permission)이 있는지 확인하기 위해 표시되는 일회성 프롬프트(one-time prompt)이다. 이 파일(file)은 다운로드(downloaded)한 자료(materials) 중 하나이다.

    y를 누르면 계속 진행(process)된다:

     

    Note: Seems like this plugin is not available on RubyGems이라는 메시지(message)가 표시되면, 옵션(option) 3을 선택한다. 그러면 RubyGems에서 플러그인(plugin) 설치(install)를 시도한다(attempt to).

    ./fastlane/Pluginfile을 연다. 내용(contents)은 다음과 같다:

    # Autogenerated by fastlane
    #
    # Ensure this file is checked in to source control!
    
    gem 'fastlane-plugin-icon_versioning'

    이 파일은 자동 생성(auto-generated)되므로 편집(edit)할 필요가 없다. 기본적으로(basically) fastlane에 특별히(specifically) 추가한 gem, 즉 플러그인(plugins)을 나열(lists)하는 Gemfile이다.

    fastlane은 기존 Gemfile에 이 파일(file)에 대한 참조(reference)를 추가하므로, bundle install을 다시 실행할 때마다(whenever) 플러그인(plugin)도 설치(installed)된다(아직 설치되지 않은 경우).

    이는 소스 제어(source control)를 사용하여 다른 팀 구성원과 함께 작업할 때 또는 플러그인(plugins)을 설치(install)해야 하는 빌드 서버(build servers)에 의존(relying on)할 때 유용하다.

    이제 앱(app) 아이콘(icon) 오버레이(overlay)를 설정할 차례이다.

     

    Creating a Lane for Icon Overlay

    Atom 이나 Visual Studio Code같은 일반 텍스트 편집기(plain text editor)를 연다. 시작 프로젝트(starter project)의 기본 디렉토리(base directory)에서 ./fastlane/Fastfile을 열고, platform :ios do 아래에 다음 코드를 추가한다:

    desc "Overlay the app icon with build information"
    lane :overlay_icon do
      build_number = get_build_number
      # 내장된 get_build_number action을 사용하여 현재 build number를 검색한다.
      
      version_number = get_version_number
      # 내장된 get_version_number action을 사용하여 현재 app의 marketing version을 가져온다.
      
      version_icon(
        appiconset_path: "mZone Poker/Assets.xcassets/AppIcon.appiconset",
        text: "beta: #{version_number} (#{build_number})"
        # version_icon 플러그인의 version_icon action을 호출하여 
        # 하단에 app version과 build number를 overlay로 표시하는 app icon으로 업데이트한다.
      )
    end

    이제 터미널(Terminal)을 열고, 다음 명령(command:Now)을 실행(run)한다:

    bundle exec fastlane overlay_icon

    일부의 터미널(terminal) 출력(output)과 성공 메시지(success message)를 볼 수 있다. 스크립트(script)가 완료(finishes)되면, 다음 단계(steps)를 수행하여 변경 사항을 확인(validate)하고 오버레이(overlay)를 만든다:

    1. Finder에서 프로젝트(project) 디렉토리(directory)로 이동한다.
    2. mZone Poker ▸ Assets.xcassets ▸ AppIcon-Versioned.appiconset 경로(path)로 이동한다. 이것은 원래(original) 아이콘 세트(icon set)의 사본(copy)이다. Icon Versioning 플러그인(plugin)은 이 아이콘 세트(icon set)를 원본(original)의 복제본(duplicate)으로 생성하고, 여기에 베타(beta) 아이콘(icons)에 대한 오버레이(overlay)를 생성했다.
    3. 파일(files) 중 하나를 선택하여 미리 본다(preview).

    이제 마케팅 버전(marketing version)과 빌드 번호(build number)가 포함된(containing) 아이콘(icon)에 오버레이(overlay)가 표시된다.

     

    베타(beta) 빌드(build)를 위한 새로운 앱 아이콘(App Icon)을 생성했으므로, 이제 fastlane의 gym 액션(action)을 사용하여 빌드(build)를 생성(generate)할 차례이다.

     

    Creating a Build

    fastlane에는 액션(actions)의 공식(official) 라이브러리(library)가 있다. 이는 fastlane과 함께 설치되며 모든 lane에서 호출(call)할 수 있다. 사용 가능한 작업의 전체 목록을 보려면 fastlane의 액션(actions) 문서(documentation)를 확인한다(check out). gym은 이러한 명령어(commands) 중 하나이다.

     

    Setting up Gym to Build

    바이너리(binary)를 생성(generate)해야 베타 테스터(beta testers)를 위한 업로드(upload)를 수행할 수 있다. gym 명령(command)을 사용하여 .ipa 파일(file)을 생성(generate)한다.

    텍스트 편집기(text editor)에서 fastlane/Fastfile을 열고, overlay_icon 아래에 다음 코드를 입력하여 새로운 lane을 만든다:

    desc "Build beta ipa"
    lane :build_beta do
      enable_automatic_code_signing
      # provisioning profiles과 다른 code-signing settings에 신경 쓸 필요가 없는 automatic code signing을 설정한다.
      gym(
        export_method: "ad-hoc",
        # gym 명령을 실행하고, export_method 매개변수를 ad-hoc로 설정한다.
        # 이는 테스트를 위한 앱을 생성한다. Apple Developer 계정에 연결된 모든 기기는 앱을 실행할 수 있다.
        xcargs: "ASSETCATALOG_COMPILER_APPICON_NAME=AppIcon-Versioned"
        # 기본 앱 icon 대신 이전에 생성한 AppIcon-Versioned을 사용하도록 강제하도록 overrides 한다.
        # 베타 build를 만들 때, 베타 icon만 적용하도록 하는 좋은 방법이다.
      )
    end

    Fastfile을 저장(save)하고, 다음 명령(command)을 사용하여 새 lane을 실행(run)한다:

    bundle exec fastlane build_beta

    fastlane에서 gym 명령(command)을 처음 실행(first time running)하는 경우, 다음과 같은 codesign 프롬프트(prompt)가 표시될 수 있다:

     

    관리자(administrator) 암호(password)를 입력(enter)하고, 항상 허용(Always Allow)을 선택(select)하여 계속(continue)한다. fastlane이 앱(app) 빌드(building)를 마치면, 성공(success) 메시지(message)를 받게 된다. 바로 위의 파일 시스템(file system)에서 빌드(build)를 저장한(saved) 위치가 표시된다.

    Finder에서 ./fastlane/builds/ 디렉토리(directory)로 이동하면, mZone Poker.ipa가 업로드(upload)를 기다리고 있는 것을 볼 수 있다.

     

    Uploading to Firebase

    다음 단계(step)는 테스터(testers)가 빌드(builds)를 사용할 수 있도록 하는 것이다. 테스트를 위해 임시(ad-hoc) 빌드(builds)를 업로드(uploading)할 수 있는 여러 플랫폼(platforms)이 있다. 여기에서는 Firebase를 사용한다.

    Firebase를 시작하기 전에 계정(account)을 설정(set up)하고, command line interface(CLI)를 설치(install)해야 한다.

     

    Setting up a Firebase Account

    아직 Firebase 계정(account)이 없는 경우, Firebase로 이동하여 설정한다. 이렇게 하면 베타 빌드(beta builds)를 배포(distribute)하는 데 사용할 수 있는 Firebase App Distribution에 접근(access)할 수 있다.

    계정(account)이 활성화(active)되면, 다음 단계(step)는 Firebase CLI를 설치(install)하는 것이다.

    Note: 대다수의 Firebase 기능(features)은 사용하려면 Firebase 프레임워크(framework)를 앱(app)에 삽입(embed)해야 하지만, App Distribution는 그중 하나가 아니다. 베타 빌드(beta builds)를 배포(distribute)하기 위해 Firebase SDK를 사용할 필요는 없다.

     

    Setting up the Firebase CLI

    Firebase CLI 설치(installation) 페이지(page)로 이동하여 지시(directions)에 따라 설정한다. CLI를 구성(configuring)한 후, 지침(instructions)에 따라 로그인(log in)하고 권장(recommended) 테스트(test)를 실행(run)한다.

     

    Setting up Your Project on Firebase

    도구(tools)를 설정(set up)했으면, 이제 Firebase에서 프로젝트(project)와 앱(app)을 만들 차례이다.

    프로젝트(project)는 하나 이상의 앱(apps)에 대한 논리적(logical) 컨테이너(container)이다. 하나의 프로젝트(project)에 여러(multiple) 앱(apps)이 있을 수 있으며, 설정(settings), 테스터(testers), 기타 Firebase 값(values) 등을 모두 공유(share)할 수 있다.

    프로젝트(project)를 생성하려면 다음 단계(steps)를 따른다:

    1. Firebase 콘솔(console)로 이동한다.
    2. 프로젝트 추가(Add project) 옵션(option)을 클릭(click)한다.
    3. 프로젝트(project) 이름을 지정한다.
    4. Google 애널리틱스(Analytics) 사용 여부를 선택한다. 이 튜토리얼(tutorial)에서는 필요하지 않다.
    5. Firebase가 새로 생성된 프로젝트(project)의 프로젝트 개요(Project Overview)로 리디렉션(redirects)할 때까지, 나머지(remaining) 화면(screens)을 계속(continue) 진행한다.

    이제 Firebase 프로젝트(project)를 설정(set up)했으므로, 새 프로젝트(project)에 앱(app)을 추가할 차례이다.

     

    Setting up Your App on Firebase

    프로젝트 개요(Project Overview) 페이지(page)에서 앱(app)에 Firebase를 추가하라는 메시지가 표시(prompt)된다. 둥근(rounded) iOS 버튼을 선택(select)하여 앱(app) 구성(configuring)을 시작한다:

     

    앞서 Xcode에서 사용했던 번들 식별자(bundle identifier)를 iOS 번들(bundle) ID 필드(field)에 입력하여 새 앱(app)을 설정(set up)한다. 나머지 두 필드(fields)는 비워두고(blank), 앱 등록(Register app)을 클릭(click)한다.

     

    이 앱(app)에서는 Firebase SDK를 구성(configure)할 필요가 없으므로, 다음 세 단계(steps)에서 다음(Next)을 선택(select)한다. 5 단계(step)에 도달(reach)하면, 콘솔로 이동(Continue to console)을 클릭(click)하여 프로젝트 개요(Project Overview)로 돌아간다. 페이지(page) 상단(top)에 앱(app)이 표시(displayed)된다:

     

    다음으로 mZone Poker의 App Distribution를 설정한다.

     

    Setting up App Distribution

    새로 생성한(newly-created) 앱(app)에 대한 App Distribution를 설정(set up)하려면, 화면 왼쪽(left of the screen)의 메뉴(menu)에서 App Distribution 항목(item)을 클릭(click)하여 대시 보드(dashboard)로 이동한다:

     

    처음 방문(visit)하면, Firebase는 해당 기능(feature)에 대해 자세히 알아볼 수 있는 리소스(resources)를 제공(present)한다. 이 경우 시작하기(Get Started)를 클릭(click)하여 바로 시작할 수 있다.

    이 화면(screen)에서 테스터 및 그룹(Testers & Groups) 탭(tab)으로 이동하여, 그룹 추가(Add Group)를 클릭(click)한다. 여기에서 새 그룹(group)의 이름을 beta-testers로 지정하고 저장(Save)을 클릭(click)한다.

     

    이제 테스터 추가(Add testers) 버튼(button)이 표시된다. 클릭(click)하여 이메일(email) 주소(address)를 입력(type)하고, Enter를 눌러 테스터(tester)로 추가한다.

     

    이제 Firebase에 업로드(upload)하는 모든 빌드(builds)를 테스트(test)할 수 있다. 그러나 업로드(uploading)를 시작하기 전에 Firebase 콘솔(Console)에서 필요한 것이 하나 더 있다. 바로 Firebase 앱(App) ID이다.

     

    Finding your Firebase App ID

    Firebase에 앱(apps)을 업로드(upload)할 위치를 알려줘야(tell) 한다. 그러려면 이전에 생성한 앱(app)의 고유 식별자(unique identifier)를 사용해야 한다.

    Firebase 콘솔(Console)에서 이 값(value)을 찾으려면 왼쪽 메뉴(left-side menu)에서 설정(settings) 톱니(cog)를 클릭(click)하고, 프로젝트 설정(Project Settings) 옵션(option)을 선택(select)한다.

     

    일반(General) 탭(tab)에서 내 앱(Your apps) 섹션(section)까지 스크롤(scroll down)하고, 앱 ID(App ID)에서 값(value)을 찾는다.

    ID를 기록(take note)해 둔다. 이제 플러그인(plugin) 통합(integrating)을 시작할 준비가 되었다.

     

    Setting up the Firebase App Distribution Plugin

    다음으로 Firebase App Distribution 플러그인(plugin)을 설정(set up)해야 한다. 이 도구(tool)를 사용하면 액션(action)으로 fastlane에서 Firebase로 업로드(upload)할 수 있다.

    터미널(Terminal)에서 다음 명령(command)을 실행(run)하여 fastlane 설치(installation)에 App Distribution 플러그인(plugin)을 추가한다:

    bundle exec fastlane add_plugin firebase_app_distribution

     

    이제 플러그인(plugin)을 설치(installed)했으므로 다음으로 lane을 생성한다.

     

    Creating an Upload Lane

    Fastfile을 열어 다음 lane을 추가하고, [[FIREBASE APP ID]]를 Firebase 프로젝트(project)를 설정(setting up)할 때 기록(noted)해 둔 App ID로 바꾼다(replace):

    desc "Upload to Firebase"
    lane :upload_firebase do
      firebase_app_distribution(
      # 새로 추가한 plugin에서 제공하는 firebase_app_distribution action을 호출한다.
        ipa_path: "./fastlane/builds/mZone Poker.ipa",
        # 업로드할 .ipa의 위치를 action에 알려준다.
        app: "[[FIREBASE APP ID]]",
        groups: "beta-testers",
        # 업로드할 app 및 access group을 지정한다.
        release_notes: "Added icon overlay and started distributing via Firebase"
        # beta tester가 build의 새로운 기능을 알 수 있도록 release notes를 제공한다.
        # 지금은 단순하게 hard coding하고 있지만, git을 사용하는 경우 changelog_from_git_commits와 같은 다른 action과 결합하여 release notes를 자동으로 작성할 수 있다.
      )
    end

    모든 설정(setup)을 마치면 테스트(testing) 시작을 위해 터미널(Terminal)에서 다음 명령(command)을 실행(run)한다:

    bundle exec fastlane upload_firebase

    lane이 완료(completes)된 후, 몇 분 뒤에 Firebase로부터 베타 테스트(test) 초대장(invitation)을 이메일로 받게 된다. 이제 반복 가능한(repeatable) 빌드(build) 스크립트(script) 내에서 베타(beta) 버전을 생성(generate)하는 방법이 제공된다.

    마지막 단계(step)에서는 빌드(build)를 사용할 수 있을 때, Slack 그룹(group)에 메시지(message)를 보내는 방법을 알아본다.

     

    Messaging Your Team on Slack

    이 단계(step)에서는 작업 영역(workspace)에 대한 접근(access) 권한이 있는 Slack 계정(account)이 있어야 한다.

    그런 다음 Firebase가 수신(incoming) 메시지(messages)를 Slack에 게시(post)할 수 있도록 Incoming WebHook을 추가(add)해야 한다. 이렇게 하려면 Slack 앱 디렉토리(App Directory)에서 Incoming WebHook 앱(app)을 찾아 Add to Slack을 클릭(click)한다. 그러면 구성(configuration) 페이지(page)가 표시된다:

     

    이 페이지(page)의 Choose a channel...드롭 다운(drop-down)에서 기존(existing) 채널(channel)을 선택(select)하거나, create a new channel을 클릭(click)하고 다음 단계(steps)를 따른다. 원하는(desired) 채널(channel)을 선택(selected)한 후, Add Incoming WebHooks Integration을 클릭(click)하면 Webhook URL이 표시된다:

     

    Fastfile로 돌아가 마지막 lane 아래에 다음 코드를 입력하여 새로운 lane을 추가한다:

    desc "Send Slack notification for build"
    lane :send_slack do 
      build_number = get_build_number
      # 내장된 get_build_number action을 사용하여, 현재 build number를 가져온다.
      version_number = get_version_number
      # 내장된 get_version_number action을 사용하여, 현재 app marketing version을 가져온다.
    
      slack(
        message: "App build complete for Version: #{version_number} (#{build_number})",
        success: true,
        payload: {
          "Build Date" => Time.new.to_s,
          "Built by" => 'fastlane'
        },
        slack_url: "[[SLACK INCOMING WEBHOOK URL]]"
      )
      # slack action을 실행하여, build notification과 함께 slack의 workspace에 메시지를 게시한다.
    end

    [[SLACK INCOMING WEBHOOK URL]]을 방금 얻은(obtained) Webhook URL로 바꾸는(replace) 것을 잊지 말아야 한다.

    action은 다음 값(values)을 받는다(receives):

    • message: 게시(post)할 메시지(message)로, 1, 2 단계(step)의 빌드 번호(build number)와 마케팅 버전(marketing versions)을 사용한다.
    • success: 빌드(build) 성공(success)을 나타내는 Boolean이다.
    • payload: 전달(pass)할 추가(additional) 메시지(message) 데이터로, 키(keys)와 값(values)의 해시(hash)를 포함(contain)해야 한다. 이 경우, 빌드(build) 시간(time)과 Built by 속성(attribute)을 전달(passing)한다.
    • slack_url: incoming webhook URL이다.

    터미널(Terminal)에서 다음 명령(command)을 실행(running)하여, 새 lane을 테스트(test)한다:

    bundle exec fastlane send_slack

    Slack의 #test 채널(channel)에서 알림(notification)을 받는다:

     

    이 action에는 사용할(available) 수 있는 다양한(a ton of) 사용자 정의(customization) 옵션(options)이 있다. slack action에서 사용할 수 있는 모든(full range) 매개 변수(parameters)에 대해 알아 보려면 fastlane 문서(documentation)를 확인한다.

     

    Putting It All Together

    이제 새로운 actions을 하나의 lane으로 결합(combine)할 수 있다. send_slack 아래에 다음을 추가한다:

    desc "Create and distribute a beta build"
    lane :beta do
      increment_build_number
      overlay_icon
      build_beta
      upload_firebase
      send_slack
    end

    여기서 새로운 것은 increment_build_number 뿐이다. 기본 제공(built-in)되는 이 action은 기존(existing) 빌드 번호(build number)를 가져와 1씩 늘리고(increments), Info.plistCFBundleVersion 키(key)로 저장(saves)한다.

    고유한(unique) 빌드 번호(build number)는 App Store 및 사용하는 모든 테스트 서비스(testing services)에 제출(submitted)된 각 바이너리(binary)를 식별(identifies)한다. 이 lane의 나머지 부분은 이 튜토리얼(tutorial)에서 구축한(built in) actions을 연결한다.

    전체(complete) 구현(implementation)을 테스트(test)하려면 터미널(Terminal)에서 다음을 실행(run)한다:

    bundle exec fastlane beta

     

    Where to Go From Here?

    이 튜토리얼(tutorial)의 상단(top) 또는 하단(bottom)에 있는 Download Materials 버튼(button)을 클릭(clicking)하여 최종 프로젝트(final project)를 다운로드(download)할 수 있다.

    이 튜토리얼(tutorial)에서는 베타 테스트(beta testing)용 바이너리(binary) 준비(prepare) 및 빌드(build), 빌드(build) 정보(information)를 표시하도록 앱 아이콘(app icon) 업데이트(update), Firebase에 테스트 빌드(test build) 업로드(upload), 준비 완료시 Slack으로 팀에 알림(notification) 메시지(message) 전송을 배웠다.

    fastlane과 fastlane 플러그인(plugins)을 사용해 더 많은 actions을 사용할 수 있다. fastlane 기술(skills)을 더 발전(further)시키려면, 사용 가능한(available) 모든 actions과 플러그인(plugins)을 검토(review)하고 다른 작업을 시도해 본다.

    자신의 요구(needs)에 맞는 것을 찾지 못한다면, 직접 구축(building)하여 커뮤니티(community)에 기여(contributing)하는 것이 좋다.

    더 심층적인(further in-depth) 튜토리얼(tutorials)은 fastlane for iOS 과정(course)을 확인(check out)한다. Submitting Your App With fastlane, Taking Screenshots, App Provisioning에 대한 스크린 캐스트(screencasts)도 있다.

    이 튜토리얼(tutorial)이 즐거웠기를 바란다. 질문(questions)이나 의견(comments)이 있으면, 아래 포럼(forum) 토론(discussion)에 참여할 수 있다.

Designed by Tistory.