dda-devops-build/doc/architecture/Domain.md

161 lines
3.6 KiB
Markdown
Raw Permalink Normal View History

2023-03-12 16:55:15 +01:00
# Domain
```mermaid
classDiagram
2023-03-14 12:04:52 +01:00
class Devops {
2023-04-28 14:49:23 +02:00
<<AggregateRoot>>
2023-03-12 19:09:32 +01:00
name
module
2023-04-29 20:19:07 +02:00
stage
2023-03-12 19:09:32 +01:00
build_dir_name
2023-04-29 20:19:07 +02:00
project_root_path
2023-03-12 16:55:15 +01:00
}
2023-03-12 17:40:10 +01:00
class Image {
2023-07-13 20:41:52 +02:00
image_naming
2023-04-29 20:19:07 +02:00
image_dockerhub_user
image_dockerhub_password
image_publish_tag
image_build_dir_name
image_use_package_common_files
image_build_commons_path
image_build_commons_dir_name
2023-03-14 19:11:34 +01:00
}
2023-03-14 15:07:47 +01:00
class C4k {
2023-04-29 20:19:07 +02:00
c4k_executabel_name
2023-03-12 19:09:32 +01:00
c4k_mixin_config
c4k_mixin_auth
2023-05-22 11:08:34 +02:00
c4k_grafana_cloud_user
c4k_grafana_cloud_password
}
class ProvsK3s {
k3s_provision_user
k3s_letsencrypt_email
k3s_letsencrypt_endpoint
k3s_enable_echo
k3s_app_filename_to_provision
2023-03-12 19:09:32 +01:00
}
2023-05-25 14:49:14 +02:00
class TerraformDomain {
2023-05-24 08:34:43 +02:00
tf_additional_vars
2023-05-25 15:21:13 +02:00
tf_additional_resources_from_package
2023-05-24 08:34:43 +02:00
tf_output_json_name
tf_use_workspace
tf_use_package_common_files
tf_build_commons_path
tf_commons_dir_name
tf_debug_print_terraform_command
tf_additional_tfvar_files
tf_terraform_semantic_version
}
class ProviderDigitalocean {
do_api_key
do_spaces_access_key
do_spaces_secret_key
2023-05-26 14:39:13 +02:00
do_as_backend
do_account_name
do_endpoint
do_bucket
do_bucket_key
do_region
}
2023-05-26 08:42:59 +02:00
class ProviderHetzner {
2023-05-26 08:42:59 +02:00
hetzner_api_key
}
2023-05-26 16:56:02 +02:00
class ProviderAws {
aws_access_key
aws_secret_key
aws_bucket
aws_bucket_kms_key_id
2023-05-26 16:56:02 +02:00
aws_account_name
aws_bucket_key
aws_as_backend
aws_region
2023-05-26 16:56:02 +02:00
}
2023-03-12 19:09:32 +01:00
class DnsRecord {
fqdn
ipv4
ipv6
}
2023-04-22 12:40:40 +00:00
class Release {
2023-05-10 19:52:53 +02:00
release_type
2023-04-29 20:19:07 +02:00
release_main_branch
release_current_branch
2023-08-11 15:37:07 +02:00
release_artifact_server_url
release_organisation
release_repository_name
2023-08-14 19:06:57 +02:00
release_artifact_token
}
class Artifact {
2023-08-14 20:39:59 +02:00
path_str
path()
type()
2023-05-05 11:57:36 +02:00
}
2023-05-16 08:47:11 +02:00
class Credentials {
<<AggregateRoot>>
2023-05-16 08:47:11 +02:00
}
class CredentialMapping {
name
gopass_path
gopass_field
gopass_type()
name_for_input()
name_for_environment ()
}
2023-05-05 11:57:36 +02:00
class BuildFile {
2023-05-10 09:28:43 +02:00
<<AggregateRoot>>
file_path [id]
2023-05-05 11:57:36 +02:00
content
2023-05-11 09:20:59 +02:00
build_file_type()
2023-05-13 16:01:35 +02:00
get_version()
set_version(version)
2023-05-05 11:57:36 +02:00
}
class Version {
2023-05-12 14:32:05 +02:00
to_string()
2023-05-10 09:28:43 +02:00
create_major()
create_minor()
2023-05-10 19:37:15 +02:00
create_patch()
create_bump(snapshot_suffix)
2023-04-22 12:40:40 +00:00
}
2023-05-25 14:49:14 +02:00
Devops *-- "0..1" Image: specialized_builds
Devops *-- "0..1" C4k: specialized_builds
Devops *-- "0..1" ProvsK3s: specialized_builds
Devops *-- "0..1" TerraformDomain: specialized_builds
2023-04-29 22:03:44 +02:00
Devops *-- "0..1" Release: mixins
TerraformDomain *-- "0..1" ProviderDigitalocean: providers
TerraformDomain *-- "0..1" ProviderHetzner: providers
TerraformDomain *-- "0..1" ProviderAws: providers
2023-05-12 14:32:05 +02:00
Release o-- "0..1" BuildFile: primary_build_file
Release o-- "0..n" BuildFile: secondary_build_files
2023-08-14 19:06:57 +02:00
Release "1" *-- "0..n" Artifact: release_artifacts
2023-07-12 08:09:57 +02:00
Release "1" *-- "1" Version: version
BuildFile *-- "1" Version: version
2023-05-22 11:08:34 +02:00
C4k *-- DnsRecord: dns_record
ProvsK3s *-- DnsRecord: provision_dns
2023-06-02 12:47:56 +02:00
Credentials *-- "0..n" CredentialMapping: mappings[name]
Credentials *-- "0..n" CredentialMapping: default_mappings
2023-03-12 19:09:32 +01:00
```
# Infrastructure
```mermaid
classDiagram
2023-03-12 17:40:10 +01:00
class ProjectRepository {
2023-03-14 12:04:52 +01:00
get_devops(project): Devops
set_devops(project, build)
}
2023-03-12 16:55:15 +01:00
```