defenseunicorns / maru-runner

The Unicorn Task Runner
Apache License 2.0
8 stars 0 forks source link

Add ability to run tasks using a specific container and environment. #12

Open zack-is-cool opened 4 months ago

zack-is-cool commented 4 months ago

Is your feature request related to a problem? Please describe

A problem we run into when using this task runner is the common works on my machine problem. A lot of our tasks end up basically being shell scripts using the default sh, which different versions have different features. This causes problems when running tasks and meeting every little edge case.

Describe the solution you'd like

I'd like the ability to at a top level and also even per task level, be able to run them from inside a specific container. You should be able to set environment variables and run arbitrary commands.

This could be a nice way to expand airgap deployment patterns where you could bring a maru runner package (or something?) with you with your runner container and any dependencies with you (terraform, source code, container images, stuff that you wouldn't necessarily be shoving into k8s with zarf, but need at deploy time)

Describe alternatives you've considered

I've done a proof of concept of this when migrating from our makefile patterns using the buildharness container, but it feels sort of janky and error prone.

see: https://github.com/defenseunicorns/narwhal-delivery-zarf-package-eks-addons/blob/main/tasks.yaml

specifically: https://github.com/defenseunicorns/narwhal-delivery-zarf-package-eks-addons/blob/main/tasks/setup/vars.yaml#L33-L103 https://github.com/defenseunicorns/narwhal-delivery-zarf-package-eks-addons/blob/main/tasks/setup/vars.yaml#L107-L121 https://github.com/defenseunicorns/narwhal-delivery-zarf-package-eks-addons/blob/main/tasks/setup/infra.yaml#L35-L41