nitrictech / nitric

Nitric is a multi-language framework for cloud applications with infrastructure from code.
https://nitric.io
Apache License 2.0
1.26k stars 52 forks source link

Remove local dependencies #353

Closed jyecusch closed 2 years ago

jyecusch commented 2 years ago

Feature Request

Suggestion

The initial DX for our CLI could be improved by reducing or removing dependencies. The only dependency to run locally should be the Nitric CLI (remove Git, Docker & Pulumi). For the up command we still need to build containers, so the only dependency should be Docker (with any other dependencies like Pulumi used in containers).

Value

Allows new developers to get started with Nitric with a single install of the Nitric CLI.

Other info

This comes from feedback about the initial experience being a bit of a pain today.

tjholm commented 2 years ago

https://github.com/nitrictech/cli/pull/403 removes docker as a dependency for nitric start

tjholm commented 2 years ago

For moving pulumi as a dependency to a container we'll need to do some trickery with the automation API, where we augment path with our own pulumi replacement that executes a pulumi container and runs commands against it in a non-interactive mode.

We'll also need to make sure that configuration/login info is mounted appropriately to that container.

You can see here where this is hardcoded into the automation API assuming that pulumi is on PATH: https://github.com/pulumi/pulumi/blob/f636769318b26c6ccc05d6085e4c68c5090b446b/sdk/go/auto/cmd.go

tjholm commented 2 years ago

Draft PR for shimming pulumi https://github.com/nitrictech/cli/pull/406

tjholm commented 2 years ago

We might also need to publish our own version of the docker image as the uncompressed size of the pulumi container is greater the 4GB, this was the only version that came with docker installed.

jyecusch commented 2 years ago

Dependency on docker has been removed for running locally, we'll create another issue to provide self-installer functionality for Pulumi to reduce effort.