Feature Requests

Got an idea for a feature request? Let us know! Share your ideas on improving existing features or suggest something new. Vote on ideas you find useful!

Make sure to read our guidelines before posting 📖

Expose Run Promotion Flag in Payload

It would be great if you were able to include a Boolean flag for promoted runs in the run portion of the data input payload. This would be useful for crafting plan and approval policies. We allow run promotion to be enabled in environments beyond DEV, but we require special approval for QA and STAGE if it’s not being deployed through the normal PR process. We can typically determine if it was a run promotion by trying to compare the stack’s branch with the run’s branch, but that’s not always possible since setting commit sha with spacectl or other methods sometimes puts “-” as the branch. It would be much simpler to just check if promoted_run: true and that the stack has a qa or stage label to require an approval. Run Promotion - Spacelift Documentation Approval policy - Spacelift Documentation Plan policy - Spacelift Documentation

💡 Feature Requests

8 days ago

Support for configuring a Spacelift Stack to "track" a git tag rather than a branch

We have a use case where we want to deploy some infra into multiple environments from a repository that uses git tags to semantically version the infra. By configuring a Stack to point at a git tag rather than a branch we could align the way we use Spacelift to manage this use case with our existing DevOps process. Our use case is a little bit different than Spacelift’s typical use case where a branch is tracked for infra changes. In our case, we’re not planning changes to this infrastructure. We just want to be able to create multiple stacks that deploy this infra into different environments. If (when) we need to make changes to this infrastructure, we will approach this by reconfiguring Stacks to point at a newer git tag.

💡 Feature Requests

5 days ago

⬆️ Gathering votes

Distributed Lock Patterns

Within a stack dependency chain we have stages per environment, separated by external dependencies (UAT & Validation frameworks) that ensure the infra changes are working as expected. Multiple Stacks within the dependency chain align with an environment. As a basic example, Stacks 1-8 are assigned to Test, 9-21 are Pre Prod and 22-35 are Production. Current Spacelift behavior is to queue new runs while another run is active for the same stack, which causes problems when we are updating subsequent stacks within the chain for that same environment (prior to validation). Obviously we do not want new changes going in that effect validation runs. Right now we handle that with a manual trigger for the chain but this is far from ideal. The feature request would be to group stacks within the chain into ‘environment’ blocks where the queue only triggers the next run after the block is complete (including the external dependencies) and remove the need for manual triggers.

💡 Feature Requests

23 days ago

1

⬆️ Gathering votes

Add better support for Terraform/Tofu destroy

We are having issues with the way Terraform/Tofu destroy lifecycle is handled. Currently there are two ways to run a destroy for one of these stacks: Run a task where you manually type in “terraform destroy -auto-approve” Delete the stack and select the option to destroy resources managed by the stack Both of these methods have some obvious downsides: Tasks are not intuitive for operational users of Spacelift that don’t commonly destroy stacks. Destroy lifecycle hooks are not executed as part of tasks so the destroy process may fail or be incomplete when run with a task. Deleting the stack doesn’t support all use cases. In some cases we want to destroy the resources managed by a stack but not the stack itself. We use the stack to create resources again using the same configuration later. Most importantly: both methods to not provide a way for us to review the destroy plan and choose to confirm or reject the destroy. There are many reasons a destroy plan may not be acceptable and the underlying project may need unexpected changes before proceeding. Spacelift already has a nice UX for other parts of the TF lifecycle. We would like to option to trigger a destroy, where the destroy lifecycle is executed with hooks and all, and where we get the opportunity to review the destroy plan and confirm or reject it.

💡 Feature Requests

24 days ago

1

Double quotes in "task" commands should be escaped

Task commands like: terraform state rm module.app_vm.module.vm_ubuntu["gitlab"].solidserver_ip_address.vm_ip_address fail with a somewhat confusing error message: Error: Index value required │ │ on line 1: │ (source code not available) │ │ Index brackets must contain either a literal number or a literal string. because the double quote characters are not escaped. I believe this command would have worked if executed directly at a shell and that Spacelift is doing something like: /bin/sh -c “ ” The wrapping Spacelift quotes interfere with the quotes around the string literal. Thus it would be better if Spacelift automatically escaped (added backslashes) in front of any double quotes found within the submitted task command.

📝 Feedback

2 days ago