2023-03-12 15:55:15 +00:00
|
|
|
# Domain
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
classDiagram
|
2023-03-14 11:04:52 +00:00
|
|
|
class Devops {
|
2023-04-28 12:49:23 +00:00
|
|
|
<<AggregateRoot>>
|
2023-03-12 18:09:32 +00:00
|
|
|
name
|
|
|
|
module
|
2023-04-29 18:19:07 +00:00
|
|
|
stage
|
2023-03-12 18:09:32 +00:00
|
|
|
build_dir_name
|
2023-04-29 18:19:07 +00:00
|
|
|
project_root_path
|
2023-03-12 15:55:15 +00:00
|
|
|
}
|
2023-03-12 16:40:10 +00:00
|
|
|
|
2023-03-17 16:27:36 +00:00
|
|
|
class Image {
|
2023-04-29 18:19:07 +00: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 18:11:34 +00:00
|
|
|
}
|
2023-03-14 11:22:05 +00:00
|
|
|
|
2023-03-14 14:07:47 +00:00
|
|
|
class C4k {
|
2023-04-29 18:19:07 +00:00
|
|
|
c4k_executabel_name
|
2023-03-12 18:09:32 +00:00
|
|
|
c4k_mixin_config
|
|
|
|
c4k_mixin_auth
|
2023-05-22 09:08:34 +00: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 18:09:32 +00:00
|
|
|
}
|
|
|
|
|
2023-05-25 12:49:14 +00:00
|
|
|
class TerraformDomain {
|
2023-05-24 06:34:43 +00:00
|
|
|
tf_additional_vars
|
2023-05-25 13:21:13 +00:00
|
|
|
tf_additional_resources_from_package
|
2023-05-24 06:34:43 +00: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
|
|
|
|
}
|
|
|
|
|
2023-05-25 15:57:57 +00:00
|
|
|
class Digitalocean {
|
|
|
|
do_api_key
|
|
|
|
do_spaces_access_key
|
|
|
|
do_spaces_secret_key
|
2023-05-26 12:39:13 +00:00
|
|
|
do_as_backend
|
|
|
|
do_account_name
|
|
|
|
do_endpoint
|
|
|
|
do_bucket
|
|
|
|
do_bucket_key
|
|
|
|
do_region
|
2023-05-25 15:57:57 +00:00
|
|
|
}
|
2023-05-26 06:42:59 +00:00
|
|
|
|
|
|
|
class Hetzner {
|
|
|
|
hetzner_api_key
|
|
|
|
}
|
2023-05-26 14:56:02 +00:00
|
|
|
|
|
|
|
class Aws {
|
|
|
|
aws_account_name
|
|
|
|
}
|
2023-05-25 15:57:57 +00:00
|
|
|
|
2023-03-12 18:09:32 +00:00
|
|
|
class DnsRecord {
|
|
|
|
fqdn
|
|
|
|
ipv4
|
|
|
|
ipv6
|
|
|
|
}
|
|
|
|
|
2023-04-22 12:40:40 +00:00
|
|
|
class Release {
|
2023-05-10 17:52:53 +00:00
|
|
|
release_type
|
2023-04-29 18:19:07 +00:00
|
|
|
release_main_branch
|
|
|
|
release_current_branch
|
2023-05-10 07:28:43 +00:00
|
|
|
version
|
2023-05-05 09:57:36 +00:00
|
|
|
}
|
2023-05-16 06:47:11 +00:00
|
|
|
class Credentials {
|
2023-05-16 17:21:31 +00:00
|
|
|
<<AggregateRoot>>
|
2023-05-16 06:47:11 +00:00
|
|
|
}
|
|
|
|
class CredentialMapping {
|
|
|
|
name
|
|
|
|
gopass_path
|
|
|
|
gopass_field
|
|
|
|
gopass_type()
|
|
|
|
name_for_input()
|
|
|
|
name_for_environment ()
|
|
|
|
}
|
|
|
|
|
2023-05-05 09:57:36 +00:00
|
|
|
|
|
|
|
class BuildFile {
|
2023-05-10 07:28:43 +00:00
|
|
|
<<AggregateRoot>>
|
|
|
|
file_path [id]
|
2023-05-05 09:57:36 +00:00
|
|
|
content
|
2023-05-11 07:20:59 +00:00
|
|
|
build_file_type()
|
2023-05-13 14:01:35 +00:00
|
|
|
get_version()
|
|
|
|
set_version(version)
|
2023-05-05 09:57:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class Version {
|
2023-05-12 12:32:05 +00:00
|
|
|
to_string()
|
2023-05-10 07:28:43 +00:00
|
|
|
create_major()
|
|
|
|
create_minor()
|
2023-05-10 17:37:15 +00:00
|
|
|
create_patch()
|
|
|
|
create_bump(snapshot_suffix)
|
2023-04-22 12:40:40 +00:00
|
|
|
}
|
|
|
|
|
2023-05-25 12:49:14 +00: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 20:03:44 +00:00
|
|
|
Devops *-- "0..1" Release: mixins
|
2023-05-26 06:42:59 +00:00
|
|
|
TerraformDomain *-- "0..1" Digitalocean: providers
|
|
|
|
TerraformDomain *-- "0..1" Hetzner: providers
|
2023-05-26 14:56:02 +00:00
|
|
|
TerraformDomain *-- "0..1" Aws: providers
|
2023-05-12 12:32:05 +00:00
|
|
|
Release o-- "0..1" BuildFile: primary_build_file
|
|
|
|
Release o-- "0..n" BuildFile: secondary_build_files
|
2023-05-05 09:57:36 +00:00
|
|
|
BuildFile *-- "1" Version
|
2023-05-22 09:08:34 +00:00
|
|
|
C4k *-- DnsRecord: dns_record
|
|
|
|
ProvsK3s *-- DnsRecord: provision_dns
|
2023-05-16 06:47:11 +00:00
|
|
|
Credentials *-- "0..n" CredentialMapping: mappings
|
2023-03-12 18:09:32 +00:00
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
# Infrastructure
|
|
|
|
|
|
|
|
```mermaid
|
|
|
|
classDiagram
|
2023-03-12 16:40:10 +00:00
|
|
|
class ProjectRepository {
|
2023-03-14 11:04:52 +00:00
|
|
|
get_devops(project): Devops
|
|
|
|
set_devops(project, build)
|
|
|
|
}
|
2023-03-12 15:55:15 +00:00
|
|
|
|
|
|
|
```
|