Code Monkey home page Code Monkey logo

mbs's People

Contributors

visciang avatar

Watchers

 avatar  avatar  avatar

mbs's Issues

Builtin mbs "docker" toolchain

Ref: #27

Idea:
Should we give the possibility to use an "external toolchain"? (just an external docker image)
This would be a little escape from the monorepo ...

{
  "id": "docker_app",
  "component": {
    "external_toolchain": "mbs-docker:xxx",
    "files": [
        "hello.sh",
        "Dockerfile"
    ],
    "targets": [
        "docker://docker_app"
    ]
  }
}

Source dependencies

Currently we support "targets dependencies":

Component X builds and produce targets x1, x2
Another component Y depends on X and so it's build will receive as inputs all the X targets.

Some languages are more source dependencies based, they don't produce intermediate artifacts that can be that consumed by dependent components. Golang is one example.
There are also languages that can produce and consume intermediate artifact but is much more convenient to "source depend" in a mono-repository.

Investigate about the possibility to "source depend".
In this case the dependent component will see all the dependencies targets (transitive closure) and also their source dirs.

Secrets support (CLI opts)

Possibility to pass secrets to the toolchains (for both mbs build run and mbs deploy run).

mbs build run --secret S1=1 --secret S2=2 ...
mbs build run --secret-file secrets.txt

Docker execution strategy review

Currently we have "docker run ..." for each toolchain step.
This is "slow" (every docker run takes 300 ms) and makes sandboxing tricky.

Better to switch to a

  • docker run --name toolchain-x --detached ... sleep
  • docker exec toolchain-x /toolchain.sh step_1
  • docker exec toolchain-x /toolchain.sh ...
  • docker stop toolchain-x

This issue is needed before #3

Isolate docker build cache context

Investigate buildx builds to leverage the buildkit isolation.

Maybe good for:

  • cache isolation
  • docker build context import/export (ci caching)

Additional:
MBS should ship with a builting toolchain, the "docker" toolchain, that every project can (or better should) use to build docker images. Doing so we can "buildx" every docker image!

Redirect logs to file CLI opts

Should be applicable to mbs build run and mbs deploy run.

Something like:
mbs build run --verbose --log-dir ./build_logs

The MBS.Reporter process should stream each job log stream to a specific file under the --log-dir directory

Multi toolchain / component definition per manifest

Should be possible to define multiple toolchains / components in the same manifest file.

This feature can be used to implement different build patters such as:

  • Building the same component into multiple flavors / versions, maybe using different toolchains
  • External dependency "caching"

Docker DIND instance is slow on start when "disable_tls"

Investigate or simply let TLS on (implies we have to share client certificates beetween MBS container and DIND container).
First investigate why the boot is slower with TLS disable, actually we don't need at all this local (and isolated) connection to run over TLS.

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.