Skip to content

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.

Back to top