You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dda-devops-build/doc/architecture/ReleaseMixinArchitecture.md

4.3 KiB

Architecture of ReleaseMixin

Link to live editor

sequenceDiagram    
    rect rgb(103, 103, 10)
    build ->> ReleaseMixin: __init__(project, config_file)
    activate ReleaseMixin    
    ReleaseMixin ->> GitApi: __init__()
    ReleaseMixin ->> ReleaseTypeRepository: __init__(GitApi)
    participant ReleaseType
    ReleaseMixin ->> VersionRepository: __init__(config_file)
    participant Version
    ReleaseMixin ->> ReleaseRepository: __init__(VersionRepository, ReleaseTypeRepository, main_branch)
    participant Release
    end
    rect rgb(10, 90, 7)
    build ->> ReleaseMixin: prepare_release()
    rect rgb(20, 105, 50)
    ReleaseMixin ->> PrepareReleaseService: __init__(ReleaseRepository)
    activate PrepareReleaseService
    PrepareReleaseService ->> ReleaseRepository: get_release()
    activate ReleaseRepository
    ReleaseRepository ->> ReleaseTypeRepository: get_release_type()
    activate ReleaseTypeRepository
    ReleaseTypeRepository ->> GitApi: get_latest_commit()
    activate GitApi
    deactivate GitApi
    ReleaseTypeRepository ->> ReleaseType:     
    deactivate ReleaseTypeRepository
    ReleaseRepository ->> VersionRepository: get_version()
    activate VersionRepository
    VersionRepository ->> VersionRepository: load_file()
    VersionRepository ->> VersionRepository: parse_file()
    VersionRepository ->> Version: __init__(file, version_list)
    deactivate VersionRepository
    ReleaseRepository ->> Release: __init__(ReleaseType, Version, current_branch)
    end
    deactivate ReleaseRepository
    activate ReleaseRepository
    deactivate ReleaseRepository
    rect rgb(20, 105, 50)
    ReleaseMixin ->> PrepareReleaseService: write_and_commit_release()
    PrepareReleaseService ->> Release: release_version()
    activate Release
    Release ->> Version: create_release_version()    
    deactivate Release
    PrepareReleaseService ->> PrepareReleaseService: __write_and_commit_version(Version)
    PrepareReleaseService ->> ReleaseRepository: 
    ReleaseRepository ->> VersionRepository: write_file(version_string)
    PrepareReleaseService ->> GitApi: add()
    PrepareReleaseService ->> GitApi: commit()
    end
    rect rgb(20, 105, 50)
    ReleaseMixin ->> PrepareReleaseService: write_and_commit_bump()
    PrepareReleaseService ->> Release: bump_version()    
    activate Release
    Release ->> Version: create_bump_version()    
    deactivate Release
    PrepareReleaseService ->> PrepareReleaseService: __write_and_commit_version(Version)
    PrepareReleaseService ->> ReleaseRepository: 
    ReleaseRepository ->> VersionRepository: write_file(version_string)
    PrepareReleaseService ->> GitApi: add()
    PrepareReleaseService ->> GitApi: commit()
    deactivate PrepareReleaseService
    end
    end
    rect rgb(120, 70, 50)
    build ->> ReleaseMixin: tag_and_push_release()    
    ReleaseMixin ->> TagAndPushReleaseService: __init__(GitApi)
    activate TagAndPushReleaseService    
    ReleaseMixin ->> TagAndPushReleaseService: tag_and_push_release()
    TagAndPushReleaseService ->> TagAndPushReleaseService: tag_release()
    TagAndPushReleaseService ->> GitApi: tag_annotated()
    TagAndPushReleaseService ->> TagAndPushReleaseService: push_release()
    TagAndPushReleaseService ->> GitApi: push()
    deactivate TagAndPushReleaseService
    deactivate ReleaseMixin
    end