Carthage 및 CocoaPods의 최신 버전 정보를 Slack에 알리는 fastlane 플러그인을 만들었습니다.

2번 달여, 혹은 바퀴의 재발명일지도 모르지만, 자신의 (좁은) 관측 범위에서 보이지 않았던 것과, 약간의 툴 작성에 딱 좋은 것 같은 규모감이었기 때문에 만들어 보았습니다.
  • RubyGems
  • GitHub

  • 기능으로서는 CocoaPods 이나 Carthage 로 인스톨 하고 있는 라이브러리의 최신 버젼의 릴리스 상황을 취득해, 필요하면 결과를 Slack 에 통지하는 것입니다.

    프로젝트에서 이용하고 있는 라이브러리의 업데이트는 리그레션 테스트(회귀 테스트)가 필요하거나 좀처럼 허리가 무거운 작업입니다만, 일단 새로운 버전이 릴리스되고 있는 것만으로도 알아차리게 해, 다소 압력을 주어지는 상황을 만들면 좋을까라고 생각했습니다.Jenkins 등의 CI툴에 설정해 정기적으로 Slack 에 통지하는 것만으로도 좋을까, 그런 느슨한 사용법을 상정하고 있습니다.

    또, 실행한 최신 버젼의 결과를 출력 변수에 세트 하고 있으므로, 다른 액션으로 이용하는 것도 가능합니다.
    예를 들면 이 기사 와 같이, GitHub 의 issue나 PR 를 만드는 CI 플로우에서도 이용할 수 있을까 생각합니다.
    cocoapods_outdated 액션은 lane_context[SharedValues::COCOAPODS_OUTDATED_LIST]
    [{:name=>"SDWebImage", :current=>"4.4.5", :available=>"4.4.6", :latest=>"5.0.0-beta6"}, {:name=>"SVProgressHUD", :current=>"2.2.4", :available=>"2.2.4", :latest=>"2.2.5"}]
    

    이와 같은 느낌으로 값이 세트 되어 있어, carthage_outdated 액션 쪽에도 lane_context[SharedValues::CARTHAGE_OUTDATED_LIST] 에 이것과 같은 구조로 값이 세트 되고 있습니다.

    주의점



    현재는 아직 방금 작성한 것과 다른 소스 코드를 조사하면서 구현하고 있어, 이용할 수 있는 것 같은 로직을 팩해 참고로 한 부분도 많아, 실제로 거동을 확인할 수 없는 부분이 많다 입니다. 특히 Slack 옵션 주위.
     

    Actions


  • cocoapods_outdatedCocoaPods의 최신 버젼의 릴리스 상태를 취득해, 필요하면 Slack에 통지한다.
    내부적으로는 pod outdated 를 실행하고 있을 뿐.
  • carthage_outdatedCarthage의 최신 버전의 릴리스 상태를 얻고 필요한 경우 Slack에 알림
    내부적으로는 carthage outdated 를 실행하고 있을 뿐.
  • dependency_manager_outdated
    위 두 가지 실행

  • Slack에 알림





    설치


    $ fastlane add_plugin dependency_manager_outdated
    

    액션 실행


    $ bundle exec fastlane run cocoapods_outdated
    $ bundle exec fastlane run carthage_outdated
    

    Fastlane에 내장


    lane :test_cocoapods do |options|
      cocoapods_outdated(
        no_repo_update: true,
        slack_url: "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
      )
    end
    
    lane :test_carthage do |options|
      carthage_outdated(
        project_directory: "path/to/xcode/project",
      )
    end
    

    플러그인 도움말


    +-----------------------------------------+---------+------------------------------+
    |                                   Used plugins                                   |
    +-----------------------------------------+---------+------------------------------+
    | Plugin                                  | Version | Action                       |
    +-----------------------------------------+---------+------------------------------+
    | fastlane-plugin-dependency_manager_out  | 0.2.1   | cocoapods_outdated           |
    | dated                                   |         | dependency_manager_outdated  |
    |                                         |         | carthage_outdated            |
    +-----------------------------------------+---------+------------------------------+
    
    +-----------------------------------------+-----------------------------------------+------------------+
    |                                      Available fastlane actions                                      |
    +-----------------------------------------+-----------------------------------------+------------------+
    | Action                                  | Description                             | Author           |
    +-----------------------------------------+-----------------------------------------+------------------+
    |                                            ...                                                       |
    | carthage_outdated                       | Check outdated Carthage dependencies    | matsuda          |
    |                                            ...                                                       |
    | cocoapods_outdated                      | Check outdated CocoaPods dependencies   | matsuda          |
    |                                            ...                                                       |
    +-----------------------------------------+-----------------------------------------+------------------+
    
    

    cocoapods_outdated 액션


    $ bundle exec fastlane action cocoapods_outdated
    
    ############################ 省略 ##############################
    
    +-------------------+------------------------------+------------------------------+------------------------------+
    |                                           cocoapods_outdated Options                                           |
    +-------------------+------------------------------+------------------------------+------------------------------+
    | Key               | Description                  | Env Var                      | Default                      |
    +-------------------+------------------------------+------------------------------+------------------------------+
    | project_directory | The path to the root of the  | DEPENDENCY_MANAGER_PROJECT_  |                              |
    |                   | project directory            | DIRECTORY                    |                              |
    | use_bundle_exec   | Use bundle exec when there   | DEPENDENCY_MANAGER_COCOAPOD  | true                         |
    |                   | is a Gemfile presented       | S_USE_BUNDLE_EXEC            |                              |
    | no_repo_update    | Skip running `pod repo       | COCOAPODS_OUTDATED_REPO_UPD  |                              |
    |                   | update` before install       | ATE                          |                              |
    | slack_url         | Create an Incoming WebHook   | DEPENDENCY_MANAGER_SLACK_UR  |                              |
    |                   | for your Slack group to      | L                            |                              |
    |                   | post results there           |                              |                              |
    | slack_channel     | #channel or @username        | DEPENDENCY_MANAGER_SLACK_CH  |                              |
    |                   |                              | ANNEL                        |                              |
    | slack_username    | Overrides the webhook's      | DEPENDENCY_MANAGER_SLACK_US  | fastlane                     |
    |                   | username property if         | ERNAME                       |                              |
    |                   | slack_use_webhook_configure  |                              |                              |
    |                   | d_username_and_icon is       |                              |                              |
    |                   | false                        |                              |                              |
    | slack_icon_url    | Overrides the webhook's      | DEPENDENCY_MANAGER_SLACK_IC  | https://s3-eu-west-1.amazon  |
    |                   | image property if            | ON_URL                       | aws.com/fastlane.tools/fast  |
    |                   | slack_use_webhook_configure  |                              | lane.png                     |
    |                   | d_username_and_icon is       |                              |                              |
    |                   | false                        |                              |                              |
    | skip_slack        | Don't publish to slack,      | DEPENDENCY_MANAGER_SKIP_SLA  | false                        |
    |                   | even when an URL is given    | CK                           |                              |
    +-------------------+------------------------------+------------------------------+------------------------------+
    * = default value is dependent on the user's system
    
    +-------------------------+-------------------------------------------------------+
    |                       cocoapods_outdated Output Variables                       |
    +-------------------------+-------------------------------------------------------+
    | Key                     | Description                                           |
    +-------------------------+-------------------------------------------------------+
    | COCOAPODS_OUTDATED_LIST | List of the outdated pods in the current Podfile.lock |
    +-------------------------+-------------------------------------------------------+
    
    ############################ 省略 ##############################
    
    

    carthage_outdated 액션


    $ bundle exec fastlane action carthage_outdated
    
    ############################ 省略 ##############################
    
    +-------------------+------------------------------+------------------------------+------------------------------+
    |                                           carthage_outdated Options                                            |
    +-------------------+------------------------------+------------------------------+------------------------------+
    | Key               | Description                  | Env Var                      | Default                      |
    +-------------------+------------------------------+------------------------------+------------------------------+
    | project_directory | The path to the root of the  | DEPENDENCY_MANAGER_PROJECT_  |                              |
    |                   | project directory            | DIRECTORY                    |                              |
    | use_ssh           | Use SSH for downloading      | DEPENDENCY_MANAGER_CARTHAGE  |                              |
    |                   | GitHub repositories          | _USE_SSH                     |                              |
    | slack_url         | Create an Incoming WebHook   | DEPENDENCY_MANAGER_SLACK_UR  |                              |
    |                   | for your Slack group to      | L                            |                              |
    |                   | post results there           |                              |                              |
    | slack_channel     | #channel or @username        | DEPENDENCY_MANAGER_SLACK_CH  |                              |
    |                   |                              | ANNEL                        |                              |
    | slack_username    | Overrides the webhook's      | DEPENDENCY_MANAGER_SLACK_US  | fastlane                     |
    |                   | username property if         | ERNAME                       |                              |
    |                   | slack_use_webhook_configure  |                              |                              |
    |                   | d_username_and_icon is       |                              |                              |
    |                   | false                        |                              |                              |
    | slack_icon_url    | Overrides the webhook's      | DEPENDENCY_MANAGER_SLACK_IC  | https://s3-eu-west-1.amazon  |
    |                   | image property if            | ON_URL                       | aws.com/fastlane.tools/fast  |
    |                   | slack_use_webhook_configure  |                              | lane.png                     |
    |                   | d_username_and_icon is       |                              |                              |
    |                   | false                        |                              |                              |
    | skip_slack        | Don't publish to slack,      | DEPENDENCY_MANAGER_SKIP_SLA  | false                        |
    |                   | even when an URL is given    | CK                           |                              |
    +-------------------+------------------------------+------------------------------+------------------------------+
    * = default value is dependent on the user's system
    
    +--------------------------+-------------------------------------------------------+
    |                        carthage_outdated Output Variables                        |
    +--------------------------+-------------------------------------------------------+
    | Key                      | Description                                           |
    +--------------------------+-------------------------------------------------------+
    | CARTHAGE_OUTDATED_LIST   | List of the outdated dependencies in the current      |
    |                          | Cartfile.resolved                                     |
    | CARTHAGE_REPOSITORY_LIST | List of dependencies in the current Cartfile.resolved |
    +--------------------------+-------------------------------------------------------+
    
    ############################ 省略 ##############################
    
    

    dependency_manager_outdated



    생략

    좋은 웹페이지 즐겨찾기