Open BuriedStPatrick opened 1 year ago
I think you're correct in saying that the boundary between bug and feature/behaving-as-designed is quite unclear here, @BuriedStPatrick. You're right that this is fairly deep in the way Octopus works right now, and we're unlikely to change it.
In my opinion, the best way of holding the provider in this situation would be to avoid hardcoding IDs gathered from the UI. I'd prefer to see the ID referenced directly from the Terraform resource that creates it, something like this:
resource "octopusdeploy_project" "project" {
name = "Ephemeral Action IDs"
lifecycle_id = "Lifecycles-1"
project_group_id = "ProjectGroups-1"
}
resource "octopusdeploy_deployment_process" "process" {
project_id = octopusdeploy_project.project.id
step {
name = "ExampleScript"
run_script_action {
name = "ExampleScript"
worker_pool_variable = "Hello"
run_on_server = true
script_body = "Write-Host 'Hello world'\r\n"
sort_order = 1
}
}
}
resource "octopusdeploy_variable" "var" {
name = "ScopedVariable"
type = "String"
value = "I'm scoped to the 'ExampleScript' step"
owner_id = octopusdeploy_project.project.id
scope {
actions = [
octopusdeploy_deployment_process.process.step[0].run_script_action[0].id
]
}
}
I know it's been a long time since you reported this, but are you able to fill me in on the reason for gathering those IDs from the UI instead of referencing them directly?
Describe the bug
Deployment steps get new ids whenever they're changed. This makes it impossible to target them in the
octopusdeploy_variable.scope.actions
array if they change.Steps to reproduce
octopusdeploy_project
and aoctopusdeploy_deployment_process
resource with 2 deployment steps (doesn't matter which type).Add an
octopusdeploy_variable
, reference theoctopusdeploy_project
with theowner_id
and limit the scope to a particular action:scope.actions
is no longer valid. You will be pointing to an invalid resource.Expected behavior
In an ideal world, the ID of the deployment step (action) would simply stay the same. I can gather that, due to how OctopusDeploy probably works at the moment, that would be quite the breaking change. The deployment steps are far too ephemeral to have deterministic terraform deployments. This borders between bug and feature because essentially, the
actions
array is useless as a write-property which I see as a bug, but the proper solution would be a feature-implementation so we can better track these deployment steps as individual entities in our terraform configurations.Alternatively, the
scope.actions
array could target steps by name. Not ideal since multiple steps could have the same name, but it's at least something relatively tangible.Environment and versions:
Windows
2021.3.12372
1.4.6
0.12.0