Git Product home page Git Product logo

mutato's Introduction

Mutato

The Great Mutato!

Stelligent Mutato is an open-source framework for building containerized micro-services on the AWS ecosystem (e.g ECS or Fargate). Mutato is designed to leverage AWS Cloud Development Kit (CDK) constructs which abstract the complexity of writing a safe and secure CloudFormation file to deploy and automate micro-service deployments.

mutato's People

Contributors

3p3r avatar dependabot[bot] avatar josue avatar mneil avatar tmillner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mutato's Issues

Place the cmd nunjucks processor behind a flag

Default should be that it doesn't work / is not available. Add a flag: --allow-insecure. IIRC mu has this exact flag.

We might make it a list like --allow-insecure (allow all) and --allow-insecure cmd,other for a list of things to allow, etc...

This can be done in config.ts with a boolean flag so the preprocessor class does not add its cmd helper to Nunjucks.

Create a plan and foundation for smoke testing

We must have some sort of smoke testing to make sure constructs do actually what they are supposed to do. Emphasis on the database and storage constructs and their connection to the service construct.

CFN ChangeSets are failing

Deploying the mutato-example-basic app.

Steps to reproduce:

  1. Make changes to the index.html
  2. commit changes, update github.
  3. Branch triggers the Pipeline deployment.
  4. Verify if changes to index.html by opening the Http endpoint in the CFN Output section.

The deployed version on each ECS Service are from the 1st successful deployment.

The Pipeline shows success on both stages. However, the CFN ChangeSets are failing. The submitted information didn't contain changes. Submit different information to create a change set.

Minor details that might be helpful.
1st deployment - original file without changes.
2nd deployment - added paragraph “The name is an x-files reference”
3rd deployment - added “3rd Deployment”
Here is repo I’m deploying.

deploying with non-admin permissions

In preparation for the blog post, I followed the steps in this gist to test a deployment of mutato's sample application. https://gist.github.com/mneil/e32dd411a44d4d0cac01b42de5841ef4

Here is the error from the Acceptance CFN deployment:

2020-04-06 10:02:49 UTC-0700 | networkacceptanceVPCPublicSubnet2SubnetB70416C7 | CREATE_FAILED | Template error: Fn::Select cannot select nonexistent value at index 1

2020-04-06 10:02:49 UTC-0700 | networkacceptanceVPCPrivateSubnet2Subnet6A11D49B | CREATE_FAILED | Template error: Fn::Select cannot select nonexistent value at index 1

Stack:arn:aws:cloudformation:us-east-1:324320755747:stack/Mutato-App-acceptance-scottnixonjr-mutato-example-basic-master/3fcc9ae0-7828-11ea-9956-0a1f955da693 is in ROLLBACK_COMPLETE state and can not be updated. (Service: AmazonCloudFormation; Status Code: 400; Error Code: ValidationError; Request ID: c54d08e7-346a-49d2-8dfd-3d4c353fdcca)

The CodeBuild process logs show this error message

Stack Mutato-App-acceptance-scottnixonjr-mutato-example-basic-master

User: arn:aws:sts::324320755747:assumed-role/Mutato-Pipeline-scottnixonjr-mut-buildRoleD55766F0-164PZ68Q754WL/AWSCodeBuild-e93bc96e-8c71-45c0-9b2f-0700fab3ba5a is not authorized to perform: cloudformation:GetTemplate on resource: arn:aws:cloudformation:us-east-1:324320755747:stack/Mutato-App-acceptance-scottnixonjr-mutato-example-basic-master/3fcc9ae0-7828-11ea-9956-0a1f955da693

Choose documentation generator for publishing docs.

mkdocs?
typedoc?
sphinx?

Try them out, pick one, explain why it's the best and how we'll use it in a contribution guide (CONTRIBUTING.md). #15 covers actually setting it up. This is discovery and presentation for what we'll use.

investigate vscode's formatOnSave issues with jsdoc

following the generated-documentation PR, vscode is having a tough time properly inserting documentation tags for undocumented code. it appears that multiple engines are racing to insert docs on top of any undocumented code.

we previously had vscode set up to do formatOnSave. to reproduce the bug I am describing, create any piece of undocumented code, save the file and vscode inserts multiple jsdoc blocks.

please investigate this race condition at your own pace, this is not a priority.

hard reset the gh-pages branch

it currently contains unnecessary commit data and junk files, hard reset the documentation branch with a clean state.

incosistency between linter config and typedoc config

there appears to be inconsistencies between what typedoc is configured to generate docs off of and what the linter is actually checking for. please have these read their configuration from a single place.

to reproduce this issue, add a private member to a class. this is excluded in typedoc, however linter returns a failure on its check. seems like eslint is ignoring the typedocOptions key under tsconfig.json

Document admin requirements for repo webhook

Unable to run mutato in a root account. Josue tried to run it in his personal account. The project tried to attach a webhook to Mutato but he is an admin.

Document that you need to be an admin of a repository in order to deploy it because you cannot setup a webhook in the repo when you create a github repo.

hand craft the TS compiler configuration

post merging of the documentation PR, we are having a number of issues with the TS compiler and the general set up of the project. The one outstanding issue is coverage report. It is incorrect and inaccurate and seems to report random places as uncovered (maybe it has something to do with source maps). An audit pass should be done over TSC config and other toolings (esling, jsdoc, etc.)

figure out how to reject multiple `infra` type constructs at schema level when they are provided in their explicit form.

Per MVP design docs, infra constructs (network, cluster, and cicd) can be either omitted from mu.yml or appear at most once. When provided in the shorthand version, this issue is automatically resolved due to the nature of json objects (two keys with the same name cannot coexist in the same object).

When provided in the explicit version, the following mu.yml should be rejected at the schema level:

mu:
  name1:
    type: cicd
    ...

  name2:
    type: cicd
    ...

Polish the release process to NPM and DockerHub

Currently in Mutato's AWS dev account, master branch is managing the release process to NPM and DockerHub.

This process is fine, but the way NPM package and Docker image are prepared must be polished:

  • Docker image must be optimized to be as small as possible. Currently it's sitting at a whopping 500MB
  • Container level (outside Container) testing must be conducted before a push to DockerHub
  • NPM package must be tested before publish (through npm link command), I think the published package is currently not usable and it's just a source dump (? not sure. have not tested personally)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.