From 121c8a7c728d72e21b6798891097369b7b178a4c Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Wed, 21 Dec 2016 10:24:21 -0800 Subject: [PATCH] Concourse: support for `ensure` attribute --- .../vscode/concourse/PipelineYmlSchema.java | 1 + .../src/main/resources/desc/Step/attempts.md | 2 +- .../src/main/resources/desc/Step/ensure.md | 22 +++++++++++++++++++ .../concourse/PipelineYamlEditorTest.java | 5 ++++- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/Step/ensure.md diff --git a/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java b/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java index d5d9a0bd5..f45fb29d6 100644 --- a/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java +++ b/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java @@ -133,6 +133,7 @@ public class PipelineYmlSchema implements YamlSchema { // shared properties applicable for any type of Step: prop(step, "on_success", step); prop(step, "on_failure", step); + prop(step, "ensure", step); prop(step, "attempts", t_strictly_pos_integer); YBeanType resource = f.ybean("Resource"); diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/attempts.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/attempts.md index a1c033c08..050e1c5c5 100644 --- a/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/attempts.md +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/attempts.md @@ -1,4 +1,4 @@ -Retry a step: +Retry a step. Any step can set the number of times it should be attempted by attaching an `attempts` parameter with the number of times it should be tried. diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/ensure.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/ensure.md new file mode 100644 index 000000000..32090af8c --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/ensure.md @@ -0,0 +1,22 @@ +Guarantee execution of a step. + +Any step can have `ensure` tacked onto it, whose value is a second step to execute regardless of the result of the parent step. + + ensure: step + +The step to execute. Regardless of whether the parent step succeeds, fails, or errors, this step will be executed. The step will also be executed if the build was aborted, and its parent step was interrupted. + +If the parent step succeeds and the ensured step fails, the parent step is considered to have failed. + +The ensured step executes after any `on_success` or `on_failure` hooks. + +For example, the following build plan acquires a lock, and then ensures that the lock is released. + + plan: + - put: some-lock + params: acquire: true + - task: integration + file: foo/integration.yml + ensure: + put: some-lock + params: release: some-lock \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java index 585f0a6dc..6de96600b 100644 --- a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java +++ b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java @@ -186,7 +186,9 @@ public class PipelineYamlEditorTest { " on_failure:\n" + " - bogus: bad\n" + " on_success:\n" + - " - bogus: bad\n" + " - bogus: bad\n" + + " ensure:\n" + + " task: cleanups\n" ); editor.assertHoverContains("resource", "The resource to fetch"); editor.assertHoverContains("version", "The version of the resource to fetch"); @@ -195,6 +197,7 @@ public class PipelineYamlEditorTest { editor.assertHoverContains("attempts", "Any step can set the number of times it should be attempted"); editor.assertHoverContains("on_failure", "Any step can have `on_failure` tacked onto it"); editor.assertHoverContains("on_success", "Any step can have `on_success` tacked onto it"); + editor.assertHoverContains("ensure", "a second step to execute regardless of the result of the parent step"); } @Test