Carthage 및 CocoaPods의 최신 버전 정보를 Slack에 알리는 fastlane 플러그인을 만들었습니다.
기능으로서는
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_outdated
CocoaPods
의 최신 버젼의 릴리스 상태를 취득해, 필요하면 Slack
에 통지한다.내부적으로는
pod outdated
를 실행하고 있을 뿐.carthage_outdated
Carthage
의 최신 버전의 릴리스 상태를 얻고 필요한 경우 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
생략
Reference
이 문제에 관하여(Carthage 및 CocoaPods의 최신 버전 정보를 Slack에 알리는 fastlane 플러그인을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/matsuda/items/302b5a245c2339aef259텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)