From 3d0abf9676f774f7766377319e27f59f5981841f Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Mon, 13 Jul 2020 15:14:00 -0700 Subject: [PATCH 01/10] wip: improving lx --- README.md | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5164f30e1..bc8811d5e 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,27 @@ https://app.zenhub.com/workspaces/commit-zero-5da8decc7046a60001c6db44/board?fil ## Getting Started -TBD +Before getting started with Zero on your local machine there are a few prerequisites tools required to get up and running. + +### Prerequisites +- [git] +- [kubectl] +- [terraform] +- [jq] +- [aws-cli] + +### Zero and AWS + +Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications / containers. EKS is deeply integrated with other AWS services such as: + +- [Amazon Virtual Private Cloud][vpc] +- [AWS Identity and Access Management][iam] +- [Amazon Cloud Watch][acw]. +- [Auto Scaling Groups][asg]. +- etc. + + + #### Building this tool @@ -39,6 +59,15 @@ Documents should all be stored in the [Commit Zero Google Drive][drive] -[drive]: https://drive.google.com/drive/u/0/folders/1_b8qqy5iN5envfWvIYPW5SNR_ektt5kJ -[ux]: https://docs.google.com/document/d/1yQ4bZ5z0slL9PpmduItEiCXYKIor0nX-nnGT3J-JOFw -[old]: https://github.com/commitdev/zero-old +[drive]: https://drive.google.com/drive/u/0/folders/1_b8qqy5iN5envfWvIYPW5SNR_ektt5kJ +[ux]: https://docs.google.com/document/d/1yQ4bZ5z0slL9PpmduItEiCXYKIor0nX-nnGT3J-JOFw +[old]: https://github.com/commitdev/zero-old +[git]: https://git-scm.com +[kubectl]: https://kubernetes.io/docs/tasks/tools/install-kubectl/ +[terraform]:https://www.terraform.io/downloads.html +[jq]: https://github.com/stedolan/jq +[aws-cli]: https://aws.amazon.com/cli/ +[acw]: https://aws.amazon.com/cloudwatch/ +[vpc]: https://aws.amazon.com/vpc/ +[iam]: https://aws.amazon.com/iam/ +[asg]: https://aws.amazon.com/autoscaling/ \ No newline at end of file From 84fc079d51cffd61e7470eec6a79d1d00b699d3e Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Fri, 17 Jul 2020 15:57:32 -0700 Subject: [PATCH 02/10] wip: readme update --- README.md | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index bc8811d5e..257c2120b 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,21 @@ ![zero](https://github.com/commitdev/zero/blob/master/docs/img/logo-small.png?raw=true) -This is a WIP version of our tool Zero which aims to make it quick and easy for developers to bootstrap a new environment and get to writing code. +Zero is a developer cli tool which aims to make it quick and easy for developers to bootstrap a production ready infrasturcture and get to writing code. +*** -For the older, simple tool that just rendered templates, see [commitdev/zero-old][old] - -## Press Release -Learn more about Zero's vision here: -https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit +## Getting Started -## Project Board -https://app.zenhub.com/workspaces/commit-zero-5da8decc7046a60001c6db44/board?filterLogic=any&repos=203630543,247773730,257676371,258369081 +### Download and Install Zero +Download the latest [zero binary] based on your local system archetecture. unzip your download add copy the zero binary to the desired location then add it to your system path. -## Getting Started +Zero curretnly supports: +| System | Support| +| --------|:-----:| +| MacOS | ✅ | +| Linux | ✅ | +| Windows | ❌ | -Before getting started with Zero on your local machine there are a few prerequisites tools required to get up and running. +Before you can use zero there are ### Prerequisites - [git] @@ -70,4 +72,6 @@ Documents should all be stored in the [Commit Zero Google Drive][drive] [acw]: https://aws.amazon.com/cloudwatch/ [vpc]: https://aws.amazon.com/vpc/ [iam]: https://aws.amazon.com/iam/ -[asg]: https://aws.amazon.com/autoscaling/ \ No newline at end of file +[asg]: https://aws.amazon.com/autoscaling/ +[press-release]: https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit +[zero binary]: https://github.com/commitdev/zero/releases/tag/v0.0.1 \ No newline at end of file From be2eee151262d81050cdcad14483693d4014120b Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Mon, 20 Jul 2020 11:31:26 -0700 Subject: [PATCH 03/10] wip --- README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 257c2120b..5144a619b 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,62 @@ ![zero](https://github.com/commitdev/zero/blob/master/docs/img/logo-small.png?raw=true) -Zero is a developer cli tool which aims to make it quick and easy for developers to bootstrap a production ready infrasturcture and get to writing code. +## What is Zero + +Zero is an open-source developer platform CLI tool which makes it quick and easy for technical founders & developers to build quality and reliable infrastructure to launch, grow and scale high-quality SaaS applications faster and more cost-effectively. + + +## Why is zero good for startups + +As a technical founder or the first technical hire at a startup, your sole focus is to build the logic for your application, and get it into customers’ hands as quickly and reliably as possible. Yet you immediately face multiple hurdles before even writing the first line of code. You’re forced to make many tech trade offs, leading to decision fatigue. You waste countless hours building boilerplate SaaS features not adding direct value to your customers. You spend precious time picking up unfamiliar tech, make wrong choices that result in costly refactoring or rebuilding in the future, and are unaware of tools and best practices that would speed up your product iteration. + +## Why is zero reliable, scalable, performant and secure + + + + +## *** ## Getting Started -### Download and Install Zero -Download the latest [zero binary] based on your local system archetecture. unzip your download add copy the zero binary to the desired location then add it to your system path. +### How to Install and Configure Zero + +There are multiples ways to install zero: + +- Install Zero using your systems package manager + +``` +# MacOS +brew tap commitdev/zero +brew install zero +``` + +- Install Zero using the binary binary + +Download the latest [zero binary] for your systems archetecture. unzip your download add copy the zero binary to the desired location then add it to your system path. Zero curretnly supports: -| System | Support| -| --------|:-----:| -| MacOS | ✅ | -| Linux | ✅ | -| Windows | ❌ | +| System | Support| Package Manager | +|---------|:-----:|:------:| +| MacOS | ✅ | `brew` | +| Linux | ✅ | n/a | +| Windows | ❌ | n/a | + +### Configure zero dependencies + +Zero requires some dependencies to function, run the `zero check` command on your system to find out which dependencies you might need to install. + +![zero](https://github.com/commitdev/zero/blob/master/docs/img/zero-check.png?raw=true) + + -Before you can use zero there are -### Prerequisites + ### Zero and AWS From 16f80e611b7d686dffb8c7dfd2adb0280260e746 Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Mon, 20 Jul 2020 16:14:37 -0700 Subject: [PATCH 04/10] wip: alpha lx --- README.md | 61 ++++++++++++++++++++++++---------------- docs/img/zero-check.png | Bin 0 -> 130895 bytes 2 files changed, 36 insertions(+), 25 deletions(-) create mode 100644 docs/img/zero-check.png diff --git a/README.md b/README.md index 5144a619b..214cf68fa 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,19 @@ As a technical founder or the first technical hire at a startup, your sole focus ## Why is zero reliable, scalable, performant and secure - - +Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications / containers. EKS is deeply integrated with other AWS services such as: -## -*** +- [Amazon Virtual Private Cloud][vpc] +- [AWS Identity and Access Management][iam] +- [Amazon Cloud Watch][acw]. +- [Auto Scaling Groups][asg]. +- etc. + + + + + +___ ## Getting Started @@ -44,32 +52,30 @@ Zero curretnly supports: ### Configure zero dependencies -Zero requires some dependencies to function, run the `zero check` command on your system to find out which dependencies you might need to install. +Zero requires some dependencies to function, run the `zero check` command on your system to find out which other tools/dependencies you might need to install. -![zero](https://github.com/commitdev/zero/blob/master/docs/img/zero-check.png?raw=true) +![zero-check](./docs/img/zero-check.png) +[AWS CLI], [Kubectl], [Terraform], [jq], [Git] +**Notes:** +1. **For Zero to communicate with your AWS account make sure you [authenticate AWS CLI with your account credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods)** - +2. **You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you would like to use to host your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/)** -### Zero and AWS +___ + +## Using zero to spin up your own stack -Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications / containers. EKS is deeply integrated with other AWS services such as: -- [Amazon Virtual Private Cloud][vpc] -- [AWS Identity and Access Management][iam] -- [Amazon Cloud Watch][acw]. -- [Auto Scaling Groups][asg]. -- etc. - +## Zeros' stack +![systerm-architecture](https://raw.githubusercontent.com/commitdev/zero-aws-eks-stack/master/templates/docs/architecture-overview.svg) +___ + +## Contributing to Zero #### Building this tool @@ -86,13 +92,16 @@ $ zero --help ``` +___ +## Learn More about Zero -## Planning and Process - -Documents should all be stored in the [Commit Zero Google Drive][drive] +Zeros' documents are stored in the [Commit Zero Google Drive][drive] - [UX Design Components][ux] +- [Zeros Vision] +- [Project Board] +License: N/A [drive]: https://drive.google.com/drive/u/0/folders/1_b8qqy5iN5envfWvIYPW5SNR_ektt5kJ @@ -102,10 +111,12 @@ Documents should all be stored in the [Commit Zero Google Drive][drive] [kubectl]: https://kubernetes.io/docs/tasks/tools/install-kubectl/ [terraform]:https://www.terraform.io/downloads.html [jq]: https://github.com/stedolan/jq -[aws-cli]: https://aws.amazon.com/cli/ +[AWS CLI]: https://aws.amazon.com/cli/ [acw]: https://aws.amazon.com/cloudwatch/ [vpc]: https://aws.amazon.com/vpc/ [iam]: https://aws.amazon.com/iam/ [asg]: https://aws.amazon.com/autoscaling/ [press-release]: https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit -[zero binary]: https://github.com/commitdev/zero/releases/tag/v0.0.1 \ No newline at end of file +[zero binary]: https://github.com/commitdev/zero/releases/tag/v0.0.1 +[zeros vision]: https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit +[project board]: [https://app.zenhub.com/workspaces/commit-zero-5da8decc7046a60001c6db44/board?filterLogic=any&repos=203630543,247773730,257676371,258369081] \ No newline at end of file diff --git a/docs/img/zero-check.png b/docs/img/zero-check.png new file mode 100644 index 0000000000000000000000000000000000000000..b965831d6580efb7c2220ccaed15522eedc3dd6f GIT binary patch literal 130895 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 y}ZkFj{QDHyP6&|b9H~Ln6D@WBk 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ΠS+t^UNZ>-Ph7i@tI}r4H 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 literal 0 HcmV?d00001 From 2e74def52509f08b73432a7809604e614dd8cb15 Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Mon, 20 Jul 2020 18:03:09 -0700 Subject: [PATCH 05/10] wip: zero doc --- README.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/README.md b/README.md index 214cf68fa..761f078ed 100644 --- a/README.md +++ b/README.md @@ -62,12 +62,65 @@ Zero requires some dependencies to function, run the `zero check` command on you 1. **For Zero to communicate with your AWS account make sure you [authenticate AWS CLI with your account credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods)** + - **You can also configure your aws cli during the zero porject initilization** + + 2. **You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you would like to use to host your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/)** + - **We recommended you have two domain names one for staging another from production** + + ___ ## Using zero to spin up your own stack +Using Zero to spin up your infrastructure is easy and straightforward; using a few commands, you can configure and deploy your very own scalable high-performant infrastructure that is production-ready. + +### zero init + +``` +# To create and customize a new project you run +$ zero init + +## Sample project initilization +✔ Project Name: zero-test +🎉 Initializing project +✔ EKS + Go + React +✔ Should the created projects be checked into github automatically? (y/n): y +✔ What's the root of the github org to create repositories in?: github.com/zero-test-org +✔ Existing AWS Profiles +✔ default + +Github personal access token: used for creating repositories for your project +Requires the following permissions: [repo::public_repo, admin::orgread:org] +The token can be created at https://github.com/settings/tokens +✔ Github Personal Access Token with access to the above organization: + +CircleCI api token: used for setting up CI/CD for your project +The token can be created at https://app.circleci.com/settings/user/tokens +✔ Circleci api key for CI/CD: + +✔ Production Root Host Name (e.g. mydomain.com) - this must be the root of the chosen domain, not a subdomain.: commitzero.com +✔ Production Frontend Host Name (e.g. app.): app.c0-dtoki.commitzero.com +✔ Production Backend Host Name (e.g. api.): api.c0-dtoki.commitzero.com +✔ Staging Root Host Name (e.g. mydomain-staging.com) - this must be the root of the chosen domain, not a sub✔ Staging Root Host Name (e.g. mydomain-staging.com) - this must be the root of the chosen domain, not a subdomain.:cmtzerostage.com +✔ Staging Frontend Host Name (e.g. app.): app.c0-dtoki.cmtzerostage.com +✔ Staging Backend Host Name (e.g. api.): api.c0-dtoki.cmtzerostage.com +✔ What do you want to call the zero-aws-eks-stack project?: infrastructure +✔ What do you want to call the zero-deployable-backend project?: backend-service +✔ What do you want to call the zero-deployable-react-frontend project?: frontend +``` + +### zero create +``` +# Template the selected modules and configuration specified in zero-project.yml and push to repository. +zero create +``` + +### zero apply +``` +zero apply +``` ## Zeros' stack From 89705f1f977bad45276d08c01f99680f20c2af70 Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Tue, 21 Jul 2020 20:31:13 -0700 Subject: [PATCH 06/10] add getting started section --- README.md | 95 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 78 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 761f078ed..1f50b1c89 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Zero is an open-source developer platform CLI tool which makes it quick and easy As a technical founder or the first technical hire at a startup, your sole focus is to build the logic for your application, and get it into customers’ hands as quickly and reliably as possible. Yet you immediately face multiple hurdles before even writing the first line of code. You’re forced to make many tech trade offs, leading to decision fatigue. You waste countless hours building boilerplate SaaS features not adding direct value to your customers. You spend precious time picking up unfamiliar tech, make wrong choices that result in costly refactoring or rebuilding in the future, and are unaware of tools and best practices that would speed up your product iteration. -## Why is zero reliable, scalable, performant and secure +## Why is zero Reliable, Scalable, Performant and Secure Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications / containers. EKS is deeply integrated with other AWS services such as: @@ -56,18 +56,18 @@ Zero requires some dependencies to function, run the `zero check` command on you ![zero-check](./docs/img/zero-check.png) -[AWS CLI], [Kubectl], [Terraform], [jq], [Git] +[AWS CLI], [Kubectl], [Terraform], [jq], [Git], [Wget] -**Notes:** +A few caviets: -1. **For Zero to communicate with your AWS account make sure you [authenticate AWS CLI with your account credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods)** +1. For Zero to communicate with your AWS account make sure you [authenticate AWS CLI with your account credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) - - **You can also configure your aws cli during the zero porject initilization** + - You can also configure your aws cli during the zero porject initilization -2. **You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you would like to use to host your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/)** +2. You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you would like to use to host your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/) - - **We recommended you have two domain names one for staging another from production** + - We recommended you have two domain names one for staging another from production ___ @@ -75,7 +75,12 @@ ___ ## Using zero to spin up your own stack Using Zero to spin up your infrastructure is easy and straightforward; using a few commands, you can configure and deploy your very own scalable high-performant infrastructure that is production-ready. +A few caveats: +- It would be best to [create a GitHub org](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch) where your code is going to live and grant [CircleCi Organization access](https://github.com/settings/connections/applications/78a2ba87f071c28e65bb) to your repositories. +- During set-up you are required to have + ### zero init +The `init` command creates a new project and outputs an infrastructure configuration file with user input prompted responses into a folder -> 📁 `YOUR_PROJECT_NAME/zero-project.yml` ``` # To create and customize a new project you run @@ -98,13 +103,13 @@ The token can be created at https://github.com/settings/tokens CircleCI api token: used for setting up CI/CD for your project The token can be created at https://app.circleci.com/settings/user/tokens ✔ Circleci api key for CI/CD: - +✔ us-west-2 ✔ Production Root Host Name (e.g. mydomain.com) - this must be the root of the chosen domain, not a subdomain.: commitzero.com -✔ Production Frontend Host Name (e.g. app.): app.c0-dtoki.commitzero.com -✔ Production Backend Host Name (e.g. api.): api.c0-dtoki.commitzero.com -✔ Staging Root Host Name (e.g. mydomain-staging.com) - this must be the root of the chosen domain, not a sub✔ Staging Root Host Name (e.g. mydomain-staging.com) - this must be the root of the chosen domain, not a subdomain.:cmtzerostage.com -✔ Staging Frontend Host Name (e.g. app.): app.c0-dtoki.cmtzerostage.com -✔ Staging Backend Host Name (e.g. api.): api.c0-dtoki.cmtzerostage.com +✔ Production Frontend Host Name (e.g. app.): app-zero-test-prod. +✔ Production Backend Host Name (e.g. api.): api-zero-test-prod. +✔ Staging Root Host Name (e.g. mydomain-staging.com) - this must be the root of the chosen domain, not a subdomain.: commitzero-stage.com +✔ Staging Frontend Host Name (e.g. app.): app-zero-test-stage. +✔ Staging Backend Host Name (e.g. api.): api-zero-test-stage. ✔ What do you want to call the zero-aws-eks-stack project?: infrastructure ✔ What do you want to call the zero-deployable-backend project?: backend-service ✔ What do you want to call the zero-deployable-react-frontend project?: frontend @@ -112,18 +117,73 @@ The token can be created at https://app.circleci.com/settings/user/tokens ``` ### zero create +The `create` command renders the infrastructure modules you've configured into your project folder and pushed your code to GitHub ``` # Template the selected modules and configuration specified in zero-project.yml and push to repository. -zero create +$ cd zero-init # change your working dir to YOUR_PROJECT_NAME +$ zero create + +## Sample Output +🕰 Fetching Modules +📝 Rendering Modules + Finished templating : backend-service/.circleci/README.md +✅ Finished templating : backend-service/.circleci/config.yml +✅ Finished templating : backend-service/.gitignore +... +... +✅ Finished templating : infrastructure/terraform/modules/vpc/versions.tf +⬆ Done Rendering - committing repositories to version control. +✅ Repository created: github.com/dtoki-test-org/infrastructure +✅ Repository created: github.com/dtoki-test-org/backend-service +✅ Repository created: github.com/dtoki-test-org/frontend +✅ Done - run zero apply to create any required infrastructure or execute any other remote commands to prepare your environments. + + ``` ### zero apply +The `apply` command takes the templated modules generated based on your input and spins up a scalable & performant infrastructure for you! ``` -zero apply +$ zero apply + +# Sample Output +Choose the environments to apply. This will create infrastructure, CI pipelines, etc. +At this point, real things will be generated that may cost money! +Only a single environment may be suitable for an initial test, but for a real system we suggest setting up both staging and production environments. +✔ Production +🎉 Bootstrapping project zero-init. Please use the zero-project.yml file to modify the project as needed. +Cloud provider: AWS +Runtime platform: Kubernetes +Infrastructure executor: Terraform + +... +... + + +✅ Done. +Your projects and infrastructure have been successfully created. Here are some useful links and commands to get you started: +zero-aws-eks-stack: +- Repository URL: github.com/dtoki-test-org/infrastructure-inf +- To see your kubernetes clusters, run: 'kubectl config get-contexts' +- To switch to a cluster, use the following commands: +- for production use: kubectl config use-context arn:aws:eks:us-west-2:514226198018:cluster/dtoki-inf-production-us-west-2 + +- To inspect the selected cluster, run 'kubectl get node,service,deployment,pods' +zero-deployable-react-frontend: +- Repository URL: github.com/dtoki-test-org/frontend-inf +- Deployment Pipeline URL: https://app.circleci.com/pipelines/github/dtoki-test-org/frontend-inf +- Production Landing Page: app-dtoki-inf-prod.commitzero.com + +zero-deployable-backend: +- Repository URL: github.com/dtoki-test-org/backend-service-inf +- Deployment Pipeline URL: https://app.circleci.com/pipelines/github/dtoki-test-org/backend-service-inf +- Production API: api-dtoki-inf-prod.commitzero.com ``` +***🎉 Your stack is now up and running follow the links your terminal to visit your application*** + -## Zeros' stack +## Zeros Default Stack ![systerm-architecture](https://raw.githubusercontent.com/commitdev/zero-aws-eks-stack/master/templates/docs/architecture-overview.svg) ___ @@ -172,4 +232,5 @@ License: N/A [press-release]: https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit [zero binary]: https://github.com/commitdev/zero/releases/tag/v0.0.1 [zeros vision]: https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit -[project board]: [https://app.zenhub.com/workspaces/commit-zero-5da8decc7046a60001c6db44/board?filterLogic=any&repos=203630543,247773730,257676371,258369081] \ No newline at end of file +[project board]: [https://app.zenhub.com/workspaces/commit-zero-5da8decc7046a60001c6db44/board?filterLogic=any&repos=203630543,247773730,257676371,258369081] +[Wget]: https://stackoverflow.com/questions/33886917/how-to-install-wget-in-macos \ No newline at end of file From aecf53fd3c7cce0223062404944042d131054873 Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Wed, 22 Jul 2020 10:25:22 -0700 Subject: [PATCH 07/10] update readme --- README.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 1f50b1c89..4d749c607 100644 --- a/README.md +++ b/README.md @@ -11,18 +11,13 @@ As a technical founder or the first technical hire at a startup, your sole focus ## Why is zero Reliable, Scalable, Performant and Secure -Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications / containers. EKS is deeply integrated with other AWS services such as: +Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications/containers. Zero & EKS is deeply integrated with other AWS services such as: - [Amazon Virtual Private Cloud][vpc] - [AWS Identity and Access Management][iam] - [Amazon Cloud Watch][acw]. - [Auto Scaling Groups][asg]. -- etc. - - - - - +- [And more] ___ ## Getting Started @@ -76,13 +71,13 @@ ___ Using Zero to spin up your infrastructure is easy and straightforward; using a few commands, you can configure and deploy your very own scalable high-performant infrastructure that is production-ready. A few caveats: -- It would be best to [create a GitHub org](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch) where your code is going to live and grant [CircleCi Organization access](https://github.com/settings/connections/applications/78a2ba87f071c28e65bb) to your repositories. -- During set-up you are required to have +- It would be best to [create a GitHub org](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch) where your code is going to live and grant [CircleCi Organization access](https://github.com/settings/connections/applications/78a2ba87f071c28e65bb) to your repositories for Ci/Cd deployment. +- During set-up you are required to create a GitHub personal access token and a CircleCi access token you should ### zero init The `init` command creates a new project and outputs an infrastructure configuration file with user input prompted responses into a folder -> 📁 `YOUR_PROJECT_NAME/zero-project.yml` -``` +```shell # To create and customize a new project you run $ zero init @@ -118,7 +113,8 @@ The token can be created at https://app.circleci.com/settings/user/tokens ### zero create The `create` command renders the infrastructure modules you've configured into your project folder and pushed your code to GitHub -``` + +```shell # Template the selected modules and configuration specified in zero-project.yml and push to repository. $ cd zero-init # change your working dir to YOUR_PROJECT_NAME $ zero create @@ -143,7 +139,8 @@ $ zero create ### zero apply The `apply` command takes the templated modules generated based on your input and spins up a scalable & performant infrastructure for you! -``` + +```shell $ zero apply # Sample Output @@ -190,6 +187,8 @@ ___ ## Contributing to Zero +Although zero is still in early development, we welcome collaboration; you can join the [#product-zero] slack channel and follow our [project board]. If you'd like to work a specific ticket / issue, reach out to the team on our slack channel. + #### Building this tool ```shell @@ -233,4 +232,7 @@ License: N/A [zero binary]: https://github.com/commitdev/zero/releases/tag/v0.0.1 [zeros vision]: https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit [project board]: [https://app.zenhub.com/workspaces/commit-zero-5da8decc7046a60001c6db44/board?filterLogic=any&repos=203630543,247773730,257676371,258369081] -[Wget]: https://stackoverflow.com/questions/33886917/how-to-install-wget-in-macos \ No newline at end of file +[Wget]: https://stackoverflow.com/questions/33886917/how-to-install-wget-in-macos +[and more]: https://github.com/commitdev/zero-aws-eks-stack/blob/master/docs/resources.md +[product-zero]: https://commitdev.slack.com/archives/CNSEHQJKY +[#product-zero]: https://commitdev.slack.com/archives/CNSEHQJKY \ No newline at end of file From 1b209c3f92f28ca1f36b4a25a46139dacffd9961 Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Wed, 22 Jul 2020 11:18:15 -0700 Subject: [PATCH 08/10] formatting --- README.md | 59 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 4d749c607..5fded77fd 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ Zero is an open-source developer platform CLI tool which makes it quick and easy for technical founders & developers to build quality and reliable infrastructure to launch, grow and scale high-quality SaaS applications faster and more cost-effectively. - ## Why is zero good for startups As a technical founder or the first technical hire at a startup, your sole focus is to build the logic for your application, and get it into customers’ hands as quickly and reliably as possible. Yet you immediately face multiple hurdles before even writing the first line of code. You’re forced to make many tech trade offs, leading to decision fatigue. You waste countless hours building boilerplate SaaS features not adding direct value to your customers. You spend precious time picking up unfamiliar tech, make wrong choices that result in costly refactoring or rebuilding in the future, and are unaware of tools and best practices that would speed up your product iteration. @@ -13,20 +12,21 @@ As a technical founder or the first technical hire at a startup, your sole focus Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications/containers. Zero & EKS is deeply integrated with other AWS services such as: -- [Amazon Virtual Private Cloud][vpc] +- [Amazon Virtual Private Cloud][vpc]. - [AWS Identity and Access Management][iam] - [Amazon Cloud Watch][acw]. - [Auto Scaling Groups][asg]. -- [And more] +- [And more]. + ___ ## Getting Started ### How to Install and Configure Zero -There are multiples ways to install zero: +There are multiple ways to install zero: -- Install Zero using your systems package manager +- Install Zero using your systems package manager. ``` # MacOS @@ -34,7 +34,7 @@ brew tap commitdev/zero brew install zero ``` -- Install Zero using the binary binary +- Install Zero by downloading the binary. Download the latest [zero binary] for your systems archetecture. unzip your download add copy the zero binary to the desired location then add it to your system path. @@ -55,27 +55,34 @@ Zero requires some dependencies to function, run the `zero check` command on you A few caviets: -1. For Zero to communicate with your AWS account make sure you [authenticate AWS CLI with your account credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) - - - You can also configure your aws cli during the zero porject initilization +- For Zero to communicate with your AWS account make sure you [authenticate AWS CLI with your account credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods). + - You can also configure your aws cli during the zero project initilization. -2. You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you would like to use to host your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/) - - - We recommended you have two domain names one for staging another from production +- You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you will use to access your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/). + - We recommended you have two domains one for staging another for production. ___ ## Using zero to spin up your own stack + Using Zero to spin up your infrastructure is easy and straightforward; using a few commands, you can configure and deploy your very own scalable high-performant infrastructure that is production-ready. -A few caveats: -- It would be best to [create a GitHub org](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch) where your code is going to live and grant [CircleCi Organization access](https://github.com/settings/connections/applications/78a2ba87f071c28e65bb) to your repositories for Ci/Cd deployment. -- During set-up you are required to create a GitHub personal access token and a CircleCi access token you should +A few caveats before getting started: + +- It is recomended practice to [create a GitHub org](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch) where your code is going to live and grant [CircleCi Organization access](https://github.com/settings/connections/applications/78a2ba87f071c28e65bb) to your repositories for CI / CD deployment. + +- During set-up, you need to create a GitHub personal access token and a CircleCi access token; you should store your generated tokens securely. + +- For your CI build to work, you need to opt into the use of third-party orbs you can find this in your CircleCi Org Setting > Security > Allow Uncertified Orbs. + +- It takes about 20 - 35 mins for your deployed frontend application to be globally available through AWS CloudFront CDN. + ### zero init -The `init` command creates a new project and outputs an infrastructure configuration file with user input prompted responses into a folder -> 📁 `YOUR_PROJECT_NAME/zero-project.yml` + +The `zero init` command creates a new project and outputs an infrastructure configuration file with user input prompted responses into a file. -> 📁 `YOUR_PROJECT_NAME/zero-project.yml` ```shell # To create and customize a new project you run @@ -112,7 +119,8 @@ The token can be created at https://app.circleci.com/settings/user/tokens ``` ### zero create -The `create` command renders the infrastructure modules you've configured into your project folder and pushed your code to GitHub + +The `zero create` command renders the infrastructure modules you've configured into your project folder and pushed your code to GitHub. ```shell # Template the selected modules and configuration specified in zero-project.yml and push to repository. @@ -138,7 +146,8 @@ $ zero create ``` ### zero apply -The `apply` command takes the templated modules generated based on your input and spins up a scalable & performant infrastructure for you! + +The `zero apply` command takes the templated modules generated based on your input and spins up a scalable & performant infrastructure for you! ```shell $ zero apply @@ -177,34 +186,38 @@ zero-deployable-backend: - Production API: api-dtoki-inf-prod.commitzero.com ``` -***🎉 Your stack is now up and running follow the links your terminal to visit your application*** +***Your stack is now up and running, follow the links your terminal to visit your application 🎉*** ## Zeros Default Stack + ![systerm-architecture](https://raw.githubusercontent.com/commitdev/zero-aws-eks-stack/master/templates/docs/architecture-overview.svg) +If you would like to learn more about the zero-aws-eks stack, you can read more about it [here](https://github.com/commitdev/zero-aws-eks-stack/blob/master/README.md) ___ ## Contributing to Zero Although zero is still in early development, we welcome collaboration; you can join the [#product-zero] slack channel and follow our [project board]. If you'd like to work a specific ticket / issue, reach out to the team on our slack channel. -#### Building this tool +### Building this tool ```shell $ git clone git@github.com:commitdev/zero.git $ cd zero && make ``` -#### Running the tool locally + +### Running the tool locally To install the CLI into your GOPATH and test it, run: -``` + +```shell $ make install-go $ zero --help ``` - ___ + ## Learn More about Zero Zeros' documents are stored in the [Commit Zero Google Drive][drive] From 9d4db91db0584c4611d41716e7b90fcdd979f5de Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Wed, 22 Jul 2020 14:53:46 -0700 Subject: [PATCH 09/10] fixup! --- README.md | 87 +++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 5fded77fd..2fab7e326 100644 --- a/README.md +++ b/README.md @@ -4,19 +4,19 @@ Zero is an open-source developer platform CLI tool which makes it quick and easy for technical founders & developers to build quality and reliable infrastructure to launch, grow and scale high-quality SaaS applications faster and more cost-effectively. -## Why is zero good for startups +## Why is Zero good for startups As a technical founder or the first technical hire at a startup, your sole focus is to build the logic for your application, and get it into customers’ hands as quickly and reliably as possible. Yet you immediately face multiple hurdles before even writing the first line of code. You’re forced to make many tech trade offs, leading to decision fatigue. You waste countless hours building boilerplate SaaS features not adding direct value to your customers. You spend precious time picking up unfamiliar tech, make wrong choices that result in costly refactoring or rebuilding in the future, and are unaware of tools and best practices that would speed up your product iteration. -## Why is zero Reliable, Scalable, Performant and Secure +## Why is Zero Reliable, Scalable, Performant and Secure -Zero leverages Amazons’ Elastic Kubernetes Service. EKS is amazon managed Kubernetes service where you can build and deploy your applications/containers. Zero & EKS is deeply integrated with other AWS services such as: +Reliability: Our infrastructure is built on multiple availability zones making our system highly available and fault tolerant. -- [Amazon Virtual Private Cloud][vpc]. -- [AWS Identity and Access Management][iam] -- [Amazon Cloud Watch][acw]. -- [Auto Scaling Groups][asg]. -- [And more]. +Scability: Our EKS infrastructure is built on top of EC2 instances, and set up with AWS's [Auto Scaling Groups][asg] is ready to scale whenever the need arises. + +Performant: Using Kubernetes leveraging containers for your services reduces overhead on virtual machines. + +Security: Properly configured access-control to resources/security groups, using secure vault systems(AWS's secret manager), and following best practices provides great security out of the box. ___ @@ -24,7 +24,7 @@ ___ ### How to Install and Configure Zero -There are multiple ways to install zero: +There are multiple ways to install Zero: - Install Zero using your systems package manager. @@ -36,7 +36,7 @@ brew install zero - Install Zero by downloading the binary. -Download the latest [zero binary] for your systems archetecture. unzip your download add copy the zero binary to the desired location then add it to your system path. +Download the latest [Zero binary] for your systems archetecture. Unzip your downloaded package add copy the Zero binary to the desired location and add it to your system PATH. Zero curretnly supports: | System | Support| Package Manager | @@ -45,23 +45,17 @@ Zero curretnly supports: | Linux | ✅ | n/a | | Windows | ❌ | n/a | -### Configure zero dependencies +### Prerequisites -Zero requires some dependencies to function, run the `zero check` command on your system to find out which other tools/dependencies you might need to install. +In order to use Zero, run the `zero check` command on your system to find out which other tools / dependencies you might need to install. ![zero-check](./docs/img/zero-check.png) [AWS CLI], [Kubectl], [Terraform], [jq], [Git], [Wget] -A few caviets: - -- For Zero to communicate with your AWS account make sure you [authenticate AWS CLI with your account credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods). - - - You can also configure your aws cli during the zero project initilization. - -- You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you will use to access your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/). +You need to [register a new domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) / [host a registered domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) you will use to access your infrastructure on [Amazon Route 53](https://aws.amazon.com/route53/). - - We recommended you have two domains one for staging another for production. +> We recommended you have two domains one for staging another for production. ___ @@ -71,14 +65,15 @@ Using Zero to spin up your infrastructure is easy and straightforward; using a f A few caveats before getting started: +- For Zero to provision resources, you will need to be authenticated with AWS [(authenticate with aws-cli)](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods). + + - You can also configure your aws-cli during the zero project initialization. - It is recomended practice to [create a GitHub org](https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/creating-a-new-organization-from-scratch) where your code is going to live and grant [CircleCi Organization access](https://github.com/settings/connections/applications/78a2ba87f071c28e65bb) to your repositories for CI / CD deployment. - During set-up, you need to create a GitHub personal access token and a CircleCi access token; you should store your generated tokens securely. - For your CI build to work, you need to opt into the use of third-party orbs you can find this in your CircleCi Org Setting > Security > Allow Uncertified Orbs. -- It takes about 20 - 35 mins for your deployed frontend application to be globally available through AWS CloudFront CDN. - ### zero init @@ -89,11 +84,11 @@ The `zero init` command creates a new project and outputs an infrastructure conf $ zero init ## Sample project initilization -✔ Project Name: zero-test +✔ Project Name: myapp-infra 🎉 Initializing project ✔ EKS + Go + React ✔ Should the created projects be checked into github automatically? (y/n): y -✔ What's the root of the github org to create repositories in?: github.com/zero-test-org +✔ What's the root of the github org to create repositories in?: github.com/myapp-org ✔ Existing AWS Profiles ✔ default @@ -107,11 +102,11 @@ The token can be created at https://app.circleci.com/settings/user/tokens ✔ Circleci api key for CI/CD: ✔ us-west-2 ✔ Production Root Host Name (e.g. mydomain.com) - this must be the root of the chosen domain, not a subdomain.: commitzero.com -✔ Production Frontend Host Name (e.g. app.): app-zero-test-prod. -✔ Production Backend Host Name (e.g. api.): api-zero-test-prod. +✔ Production Frontend Host Name (e.g. app.): app. +✔ Production Backend Host Name (e.g. api.): api. ✔ Staging Root Host Name (e.g. mydomain-staging.com) - this must be the root of the chosen domain, not a subdomain.: commitzero-stage.com -✔ Staging Frontend Host Name (e.g. app.): app-zero-test-stage. -✔ Staging Backend Host Name (e.g. api.): api-zero-test-stage. +✔ Staging Frontend Host Name (e.g. app.): app. +✔ Staging Backend Host Name (e.g. api.): api. ✔ What do you want to call the zero-aws-eks-stack project?: infrastructure ✔ What do you want to call the zero-deployable-backend project?: backend-service ✔ What do you want to call the zero-deployable-react-frontend project?: frontend @@ -137,9 +132,9 @@ $ zero create ... ✅ Finished templating : infrastructure/terraform/modules/vpc/versions.tf ⬆ Done Rendering - committing repositories to version control. -✅ Repository created: github.com/dtoki-test-org/infrastructure -✅ Repository created: github.com/dtoki-test-org/backend-service -✅ Repository created: github.com/dtoki-test-org/frontend +✅ Repository created: github.com/myapp-org/infrastructure +✅ Repository created: github.com/myapp-org/backend-service +✅ Repository created: github.com/myapp-org/frontend ✅ Done - run zero apply to create any required infrastructure or execute any other remote commands to prepare your environments. @@ -169,21 +164,21 @@ Infrastructure executor: Terraform ✅ Done. Your projects and infrastructure have been successfully created. Here are some useful links and commands to get you started: zero-aws-eks-stack: -- Repository URL: github.com/dtoki-test-org/infrastructure-inf +- Repository URL: github.com/myapp-org/infrastructure - To see your kubernetes clusters, run: 'kubectl config get-contexts' - To switch to a cluster, use the following commands: -- for production use: kubectl config use-context arn:aws:eks:us-west-2:514226198018:cluster/dtoki-inf-production-us-west-2 +- for production use: kubectl config use-context arn:aws:eks:us-west-2:123456789:cluster/myapp-infra-production-us-west-2 - To inspect the selected cluster, run 'kubectl get node,service,deployment,pods' zero-deployable-react-frontend: -- Repository URL: github.com/dtoki-test-org/frontend-inf -- Deployment Pipeline URL: https://app.circleci.com/pipelines/github/dtoki-test-org/frontend-inf -- Production Landing Page: app-dtoki-inf-prod.commitzero.com +- Repository URL: github.com/myapp-org/frontend +- Deployment Pipeline URL: https://app.circleci.com/pipelines/github/myapp-org/frontend +- Production Landing Page: app.commitzero.com zero-deployable-backend: -- Repository URL: github.com/dtoki-test-org/backend-service-inf -- Deployment Pipeline URL: https://app.circleci.com/pipelines/github/dtoki-test-org/backend-service-inf -- Production API: api-dtoki-inf-prod.commitzero.com +- Repository URL: github.com/myapp-org/backend-service +- Deployment Pipeline URL: https://app.circleci.com/pipelines/github/myapp-org/backend-service +- Production API: api.commitzero.com ``` ***Your stack is now up and running, follow the links your terminal to visit your application 🎉*** @@ -193,12 +188,12 @@ zero-deployable-backend: ![systerm-architecture](https://raw.githubusercontent.com/commitdev/zero-aws-eks-stack/master/templates/docs/architecture-overview.svg) -If you would like to learn more about the zero-aws-eks stack, you can read more about it [here](https://github.com/commitdev/zero-aws-eks-stack/blob/master/README.md) +If you would like to learn more about the zero-aws-eks stack, you can read more about it [here](https://github.com/commitdev/zero-aws-eks-stack) ___ ## Contributing to Zero -Although zero is still in early development, we welcome collaboration; you can join the [#product-zero] slack channel and follow our [project board]. If you'd like to work a specific ticket / issue, reach out to the team on our slack channel. +Zero welcomes collaboration from the community; you can open new issues in our GitHub repo, Submit PRs' for bug fixes or browse through the tickets currently open to see what you can contribute too. ### Building this tool @@ -215,6 +210,12 @@ To install the CLI into your GOPATH and test it, run: $ make install-go $ zero --help ``` +___ +## FAQ + +Why is my deployed application not yet accesible? + +- It takes about 20 - 35 mins for your deployed application to be globally available through AWS CloudFront CDN. ___ @@ -246,6 +247,4 @@ License: N/A [zeros vision]: https://docs.google.com/document/d/1YNRNgCfCHCxmIpD5ZsLYG2xCBxJLFd6CBI0DS_NFqoY/edit [project board]: [https://app.zenhub.com/workspaces/commit-zero-5da8decc7046a60001c6db44/board?filterLogic=any&repos=203630543,247773730,257676371,258369081] [Wget]: https://stackoverflow.com/questions/33886917/how-to-install-wget-in-macos -[and more]: https://github.com/commitdev/zero-aws-eks-stack/blob/master/docs/resources.md -[product-zero]: https://commitdev.slack.com/archives/CNSEHQJKY -[#product-zero]: https://commitdev.slack.com/archives/CNSEHQJKY \ No newline at end of file +[and more]: https://github.com/commitdev/zero-aws-eks-stack/blob/master/docs/resources.md \ No newline at end of file From d4dbfbe27225b095d91e54c8e38157fe057fc32a Mon Sep 17 00:00:00 2001 From: Dolapo Toki Date: Thu, 23 Jul 2020 11:02:42 -0700 Subject: [PATCH 10/10] fixup --- OLD-README.md | 278 -------------------------------------------------- README.md | 8 +- 2 files changed, 4 insertions(+), 282 deletions(-) delete mode 100644 OLD-README.md diff --git a/OLD-README.md b/OLD-README.md deleted file mode 100644 index 715bda511..000000000 --- a/OLD-README.md +++ /dev/null @@ -1,278 +0,0 @@ -# Commit0 [POC] - -**NOTE** 🛑 This is a proof of concept application. Before you start using this -tool please talk to the team in the `#product-commit0` slack channel so we can -give you better instructions on how to get started. - -[![Build Status](https://travis-ci.org/commitdev/commit0.svg)](https://travis-ci.org/commitdev/commit0) -[![Go Report Card](https://goreportcard.com/badge/github.com/commitdev/commit0?style=flat-square)](https://goreportcard.com/report/github.com/commitdev/commit0) -[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/commitdev/commit0) - -Status: Proof of Concept - -## About Commit0 -Commit0 is a project skaffolding framework and ecosystem created to: - -1. Maximize knowledge sharing across an organization -2. Easily maintain a state of the art and easily reusable implementations of production grade solutions to recurring problems -3. Re-create the seamless deployment experience offered by PaaS solutions but with a fully open source stack that follows industry best practices - -With Commit0: -- Easily deploy and integrate various boilerplate solutions -- Instantly integrate commonly used open source microservices for authentication, user management, file encryption, image resizing etc. -- Get a simple Push-To-Deploy workflow that you are accustomed to with popular PaaS solutions [TODO] -- There's no vendor lock-in. It's all implemented with open source tools and deployed to your own cloud provider. - -## Commit0 Generator CLI -Commit0 CLI is an opinionated, yet fully modular code generation tool with declarative syntax that allows developers to easily integrate user prompts and interactions. - -Problems we encountered: -- It was tedious to create reusable templates and hard to maintain -- Lack of standardization and integration interface between the templates -- Difficult to integrate individually templated codebases - -How we aim to address those issues: -- Make templating behaviour simple and declarative -- Clear strategy and guideline around what are clear and reusable templates -- Standardize how templated code should get dependent parameters and start up - -This is inspired by: -- [Yeoman Generator](https://github.com/yeoman/generator) -- [JHipster](https://github.com/jhipster/generator-jhipster) -- [Boilr](https://github.com/tmrts/boilr) - - -## Installation - -As there some dependencies it will be easier to use this tool within the provided image, clone the repo and then run `make build-docker-local`. -The best way then to use this is to add an alias, then you can use the CLI as if it was installed as usual on your machine: -`alias commit0='docker run -it -v "$(pwd):/project" -v "${HOME}/.aws:/root/.aws" commit0:v0'` - -# Usage - -1) To create a project run `commit0 create [PROJECT_NAME]` -2) It will prompt you to select a cloud provider and an account profile to use -3) A folder `PROJECT_NAME` will be created. You can `cd [PROJECT_NAME]` and configure the example `commit0.yml` that's generated -4) Run `commit0 generate -c ` to generate all the all the project repos -5) You can go to each project repo and follow the project readme to start the service -6) `commit0 ui` launches the locally hosted web UI (Static SPA) and the API server - - -## Configuring Commit0 - -This is a guide on how to configure your project manually with a single file `commit0.yml`. Simply write this file to the root of your project directory and run the commit0 CLI tool against it to generate your project files. - -* [commit0.yml](#commit0-yaml) - * [name*](#name) - * [context](#context) - * [modules*](#modules) - * [source*](#module-source) - * [params*](#module-params) - * [output](#module-output) - * [overwrite](#module-overwrite) -* [commit0.module.yml](#commit0-module-yaml) - * [name*](#module-name) - * [description](#module-description) - * [prompts](#module-prompts) - * [field*](#prompt-field) - * [label](#prompt-label) - * [options](#prompt-options) - * [template](#template) - * [extension](#template-extension) - * [delimiters](#template-delimiters) - * [output](#template-output) - -## Commit0.yaml -Your project config file. It describes the project -Example: -``` -name: newProject -context: - cognitoPoolID: xxx -modules: - - source: "github.com/commitdev/commit0-aws-eks-stack" - output: "infrastructure" - - source: "github.com/zthomas/react-mui-kit" - output: "web-app" -``` - -## Name -Name of your project. This will be used to name the github repos as well as in other parts of the generated code. - -[]() | | ---- | --- -Required | True -Type | String - -## Context -A key value map of global context parameters to use in the templates. - -[]() | | ---- | --- -Required | False -Type | Map[String] - -## Modules -List of modules template modules to import - -[]() | | ---- | --- -Required | True -Type | Map[Module] - -## Source -We are using go-getter to parse the sources, we you can use any URL or file formats that [go-getter](https://github.com/hashicorp/go-getter#url-format) supports. - -[]() | | ---- | --- -Required | True -Type | String - -## Params -Module parameters to use during templating - -[]() | | ---- | --- -Required | True -Type | String - -## Output -Template output directory that the current module should write to. - -[]() | | ---- | --- -Required | False -Type | String - -## Overwrite -Whether to overwrite existing files when generating files from templates - -[]() | | ---- | --- -Required | False -Type | Boolean -Default | False - - -## Commit0.module.yaml -The module config file. You can configure how the templating engine should process the files in the current repository. -Example: -``` -name: react-mui-kit -template: - extension: '.tmplt' - delimiters: - - '<%' - - '%>' - output: web-app -``` - -## Name -Name of your module. This will be used as the default module directory as well as a display name in the prompts. - -[]() | | ---- | --- -Required | True -Type | String - -## Description -Short description of the module - -[]() | | ---- | --- -Required | False -Type | String - -## template -Template configurations -[]() | | ---- | --- -Required | False -Type | Map - -## Extension -File extension to signify that a file is a template. If this is defined, non-template files will not be parsed and will be copied over directly. The default value is `.tmplt` - -[]() | | ---- | --- -Required | False -Type | Map - -## Delimiters -An pair of delimiters that the template engine should use. The default values are: `{{`, `}}` - -[]() | | ---- | --- -Required | False -Type | Map[String] - -## Output -The default template output directory that you want the template engine to write to. This will be overwritten by the - -[]() | | ---- | --- -Required | False -Type | String - -## Prompts -User prompts to generate to collect additional module specific params -[]() | | ---- | --- -Required | False -Type | Map - -## Field -The name of the field that the param should be written to - -[]() | | ---- | --- -Required | True -Type | String - -## Label -The message that will be presented to the user - -[]() | | ---- | --- -Required | False -Type | String - -## Options -A list of options to select from. If not given, then it will be rendered as a text input prompt. - -[]() | | ---- | --- -Required | False -Type | Map[String] - -# Development -We are looking for contributors! - -Building from the source -``` -make install-go -``` -Compile a new `commit0` binary in the working directory -``` -make build -``` - -Now you can either add your project directory to your path or just execute it directly -``` -mkdir tmp -cd tmp -../commit0 create test-app -cd test-app -../../commit0 generate -c commit0.yml -``` - -To run a single test for development -``` -go test -run TestGenerateModules "github.com/commitdev/zero/internal/generate" -v -``` - -### Building locally -As there are some dependencies it will be easier to use this tool within the provided image, clone the repo and then run `make build-docker-local`. - -The best way then to use this is to add an alias, then you can use the CLI as if it was installed as usual on your machine: -`alias commit0='docker run -it -v "$(pwd):/project" commit0:v0'` diff --git a/README.md b/README.md index 2fab7e326..657591ffd 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ zero-deployable-backend: ## Zeros Default Stack -![systerm-architecture](https://raw.githubusercontent.com/commitdev/zero-aws-eks-stack/master/templates/docs/architecture-overview.svg) +![systerm-architecture](https://raw.githubusercontent.com/commitdev/zero-aws-eks-stack/master/docs/architecture-overview.svg) If you would like to learn more about the zero-aws-eks stack, you can read more about it [here](https://github.com/commitdev/zero-aws-eks-stack) ___ @@ -199,7 +199,7 @@ Zero welcomes collaboration from the community; you can open new issues in our G ```shell $ git clone git@github.com:commitdev/zero.git -$ cd zero && make +$ cd zero && make build ``` ### Running the tool locally @@ -219,9 +219,9 @@ Why is my deployed application not yet accesible? ___ -## Learn More about Zero +## Planning and Process -Zeros' documents are stored in the [Commit Zero Google Drive][drive] +Zero's documents are stored in the [Commit Zero Google Drive][drive] - [UX Design Components][ux] - [Zeros Vision]