diff --git a/docs/adding-a-new-stack.md b/docs/adding-a-new-stack.md new file mode 100644 index 00000000..c76cc5f2 --- /dev/null +++ b/docs/adding-a-new-stack.md @@ -0,0 +1,62 @@ +# Adding a new stack + +See [this PR](https://github.com/cerc-io/stack-orchestrator/pull/434) for an example of how to currently add a minimal stack to stack orchestrator. The [reth stack](https://github.com/cerc-io/stack-orchestrator/pull/435) is another good example. + +For external developers, we recommend forking this repo and adding your stack directly to your fork. This initially requires running in "developer mode" as described [here](/docs/CONTRIBUTING.md). Check out the [Namada stack](https://github.com/vknowable/stack-orchestrator/blob/main/app/data/stacks/public-namada/digitalocean_quickstart.md) from Knowable to see how that is done. + +Core to the feature completeness of stack orchestrator is to [decouple the tool functionality from payload](https://github.com/cerc-io/stack-orchestrator/issues/315) which will no longer require forking to add a stack. + +## Example + +- in `app/data/stacks/my-new-stack/stack.yml` add: + +```yaml +version: "0.1" +name: my-new-stack +repos: + - github.com/my-org/my-new-stack +containers: + - cerc/my-new-stack +pods: + - my-new-stack +``` + +- in `app/data/container-build/cerc-my-new-stack/build.sh` add: + +```yaml +#!/usr/bin/env bash +# Build the my-new-stack image +source ${CERC_CONTAINER_BASE_DIR}/build-base.sh +docker build -t cerc/my-new-stack:local -f ${CERC_REPO_BASE_DIR}/my-new-stack/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/my-new-stack +``` + +- in `app/data/compose/docker-compose-my-new-stack.yml` add: + +```yaml +version: "3.2" + +services: + my-new-stack: + image: cerc/my-new-stack:local + restart: always + ports: + - "0.0.0.0:3000:3000" +``` + +- in `app/data/repository-list.txt` add: + +```bash +github.com/my-org/my-new-stack +``` + +- in `app/data/container-image-list.txt` add: + +```bash +cerc/my-new-stack +``` + +- in `app/data/pod-list.txt` add: + +```bash +my-new-stack +```