Architecture & File Structure
Core Ruby library
Any and all logic that does not require Fastlane should be here, and thoroughly unit tested.
apadmi-grout-ruby (root)
├── lib
├── spec
├── apadmi_grout.gemspec
├── ....
The top level lib
and spec
directories are the source and test directories for the core ruby gem respectively.
Warning
Please make sure any changes or new features are thoroughly covered by tests. This will be enforced on PRs.
Architecture
Currently this is a simple 2 layer architecture which could be expanded in future if needed.
stateDiagram-v2
state "Actions" as actions
state "Services & Utils" as wrappers
actions --> wrappers
Example
The BoardService
interface provides a consistent interfafce to both ADO and Jira for the higher level logic.
stateDiagram-v2
state "MoveJiraTicketsAction" as action
state "JiraBoardService" as jira
state "AdoBoardService" as ado
action --> jira
action --> ado
Testing
Almost all tests are fully end to end tests and are pretty self explanatory. See test code.
Fastlane Plugin
The Fastlane plugin lives in a subdirectory of the main repo.
apadmi-grout-ruby (root)
├── fastlane-plugin-apadmi_build
├ ├── lib
├ ├── fastlane
├ ├── fastlane-plugin-apadmi_grout.gemspec
Warning
Please don't put any logic directly in the Fastlane plugin that could be done in pure Ruby these should live in the core, with a Fastlane wrapper action if needed.
Testing
Testing here is done through Fastlane itself in order to fully verify that everything works.
See Fastfile
, should be self explanatory.