From e7db1d2ebafe1ad9dedb47daad385745eb3fe52a Mon Sep 17 00:00:00 2001 From: Viktor Orda Date: Thu, 16 Apr 2020 21:14:58 +0300 Subject: [PATCH] Add teamcity to CI section --- config.py | 1 + diagrams/onprem/ci.py | 5 ++ docs/nodes/onprem.md | 155 ++++++++++++++++++++------------------- resources/onprem/ci/teamcity.png | Bin 0 -> 17112 bytes 4 files changed, 84 insertions(+), 77 deletions(-) create mode 100644 resources/onprem/ci/teamcity.png diff --git a/config.py b/config.py index 6756286..2f56913 100644 --- a/config.py +++ b/config.py @@ -72,6 +72,7 @@ ALIASES = { "ci": { "Circleci": "CircleCI", "Travisci": "TravisCI", + "Teamcity": "TC", }, "container": { "Rkt": "RKT", diff --git a/diagrams/onprem/ci.py b/diagrams/onprem/ci.py index 490fcd8..f6302b0 100644 --- a/diagrams/onprem/ci.py +++ b/diagrams/onprem/ci.py @@ -16,6 +16,10 @@ class Jenkins(_Ci): _icon = "jenkins.png" +class Teamcity(_Ci): + _icon = "teamcity.png" + + class Travisci(_Ci): _icon = "travisci.png" @@ -24,3 +28,4 @@ class Travisci(_Ci): CircleCI = Circleci TravisCI = Travisci +TC = Teamcity diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index e262d1e..1458616 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -5,6 +5,60 @@ title: OnPrem Node classes list of onprem provider. +## onprem.gitops + +- **diagrams.onprem.gitops.Argocd**, **ArgoCD** (alias) + +## onprem.analytics + +- **diagrams.onprem.analytics.Beam** +- **diagrams.onprem.analytics.Flink** +- **diagrams.onprem.analytics.Hadoop** +- **diagrams.onprem.analytics.Hive** +- **diagrams.onprem.analytics.Norikra** +- **diagrams.onprem.analytics.Spark** +- **diagrams.onprem.analytics.Storm** + +## onprem.security + +- **diagrams.onprem.security.Trivy** +- **diagrams.onprem.security.Vault** + +## onprem.monitoring + +- **diagrams.onprem.monitoring.Datadog** +- **diagrams.onprem.monitoring.Grafana** +- **diagrams.onprem.monitoring.Kibana** +- **diagrams.onprem.monitoring.Prometheus** +- **diagrams.onprem.monitoring.Splunk** + +## onprem.mlops + +- **diagrams.onprem.mlops.Polyaxon** + +## onprem.etl + +- **diagrams.onprem.etl.Embulk** + +## onprem.container + +- **diagrams.onprem.container.Docker** +- **diagrams.onprem.container.Rkt**, **RKT** (alias) + +## onprem.iac + +- **diagrams.onprem.iac.Terraform** + +## onprem.logging + +- **diagrams.onprem.logging.Fluentd** +- **diagrams.onprem.logging.Logstash**, **LogStash** (alias) + +## onprem.compute + +- **diagrams.onprem.compute.Nomad** +- **diagrams.onprem.compute.Server** + ## onprem.database - **diagrams.onprem.database.Cassandra** @@ -24,24 +78,12 @@ Node classes list of onprem provider. - **diagrams.onprem.database.Postgresql**, **PostgreSQL** (alias) - **diagrams.onprem.database.Scylla** -## onprem.security - -- **diagrams.onprem.security.Trivy** -- **diagrams.onprem.security.Vault** - -## onprem.ci - -- **diagrams.onprem.ci.Circleci**, **CircleCI** (alias) -- **diagrams.onprem.ci.Jenkins** -- **diagrams.onprem.ci.Travisci**, **TravisCI** (alias) - -## onprem.etl - -- **diagrams.onprem.etl.Embulk** - -## onprem.mlops +## onprem.workflow -- **diagrams.onprem.mlops.Polyaxon** +- **diagrams.onprem.workflow.Airflow** +- **diagrams.onprem.workflow.Digdag** +- **diagrams.onprem.workflow.Kubeflow**, **KubeFlow** (alias) +- **diagrams.onprem.workflow.Nifi**, **NiFi** (alias) ## onprem.network @@ -62,44 +104,12 @@ Node classes list of onprem provider. - **diagrams.onprem.network.Vyos**, **VyOS** (alias) - **diagrams.onprem.network.Zookeeper** -## onprem.inmemory - -- **diagrams.onprem.inmemory.Aerospike** -- **diagrams.onprem.inmemory.Hazelcast** -- **diagrams.onprem.inmemory.Memcached** -- **diagrams.onprem.inmemory.Redis** - -## onprem.search - -- **diagrams.onprem.search.Elasticsearch** -- **diagrams.onprem.search.Solr** - -## onprem.container - -- **diagrams.onprem.container.Docker** -- **diagrams.onprem.container.Rkt**, **RKT** (alias) - -## onprem.iac - -- **diagrams.onprem.iac.Terraform** - -## onprem.compute - -- **diagrams.onprem.compute.Nomad** -- **diagrams.onprem.compute.Server** - -## onprem.vcs - -- **diagrams.onprem.vcs.Git** -- **diagrams.onprem.vcs.Github** -- **diagrams.onprem.vcs.Gitlab** - -## onprem.workflow +## onprem.ci -- **diagrams.onprem.workflow.Airflow** -- **diagrams.onprem.workflow.Digdag** -- **diagrams.onprem.workflow.Kubeflow**, **KubeFlow** (alias) -- **diagrams.onprem.workflow.Nifi**, **NiFi** (alias) +- **diagrams.onprem.ci.Circleci**, **CircleCI** (alias) +- **diagrams.onprem.ci.Jenkins** +- **diagrams.onprem.ci.Teamcity**, **TC** (alias) +- **diagrams.onprem.ci.Travisci**, **TravisCI** (alias) ## onprem.queue @@ -113,35 +123,26 @@ Node classes list of onprem provider. - **diagrams.onprem.cd.Spinnaker** -## onprem.gitops +## onprem.search -- **diagrams.onprem.gitops.Argocd**, **ArgoCD** (alias) +- **diagrams.onprem.search.Elasticsearch** +- **diagrams.onprem.search.Solr** -## onprem.monitoring +## onprem.vcs -- **diagrams.onprem.monitoring.Datadog** -- **diagrams.onprem.monitoring.Grafana** -- **diagrams.onprem.monitoring.Kibana** -- **diagrams.onprem.monitoring.Prometheus** -- **diagrams.onprem.monitoring.Splunk** +- **diagrams.onprem.vcs.Git** +- **diagrams.onprem.vcs.Github** +- **diagrams.onprem.vcs.Gitlab** + +## onprem.inmemory + +- **diagrams.onprem.inmemory.Aerospike** +- **diagrams.onprem.inmemory.Hazelcast** +- **diagrams.onprem.inmemory.Memcached** +- **diagrams.onprem.inmemory.Redis** ## onprem.client - **diagrams.onprem.client.Client** - **diagrams.onprem.client.User** - **diagrams.onprem.client.Users** - -## onprem.logging - -- **diagrams.onprem.logging.Fluentd** -- **diagrams.onprem.logging.Logstash**, **LogStash** (alias) - -## onprem.analytics - -- **diagrams.onprem.analytics.Beam** -- **diagrams.onprem.analytics.Flink** -- **diagrams.onprem.analytics.Hadoop** -- **diagrams.onprem.analytics.Hive** -- **diagrams.onprem.analytics.Norikra** -- **diagrams.onprem.analytics.Spark** -- **diagrams.onprem.analytics.Storm** diff --git a/resources/onprem/ci/teamcity.png b/resources/onprem/ci/teamcity.png new file mode 100644 index 0000000000000000000000000000000000000000..54e922d19c4f84645a93b57c30763e2128bb12f2 GIT binary patch literal 17112 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 literal 0 HcmV?d00001