Skip to content

Commit 1d93470

Browse files
authored
Merge pull request #197 from OctopusDeploy/nj/issue-195
fix: include --waitfordeployment when a deployment timeout is set (#195)
2 parents 5b47f7a + 6fb361e commit 1d93470

4 files changed

Lines changed: 48 additions & 0 deletions

File tree

octopus-agent/src/main/java/octopus/teamcity/agent/OctopusCreateReleaseBuildProcess.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ protected String[] buildCommand(boolean masked) {
9494

9595
if (wait && deployTo != null && !deployTo.isEmpty()) {
9696
commands.add("--progress");
97+
commands.add("--waitfordeployment");
9798

9899
if (deploymentTimeout != null && !deploymentTimeout.isEmpty()) {
99100
commands.add("--deploymenttimeout");

octopus-agent/src/main/java/octopus/teamcity/agent/OctopusDeployReleaseBuildProcess.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ protected String[] buildCommand(boolean masked) {
9898

9999
if (wait && deployTo != null && !deployTo.isEmpty()) {
100100
commands.add("--progress");
101+
commands.add("--waitfordeployment");
101102

102103
if (deploymentTimeout != null && !deploymentTimeout.isEmpty()) {
103104
commands.add("--deploymenttimeout");

octopus-agent/src/main/java/octopus/teamcity/agent/OctopusPromoteReleaseBuildProcess.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ protected String[] buildCommand(boolean masked) {
8585

8686
if (wait && deployTo != null && !deployTo.isEmpty()) {
8787
commands.add("--progress");
88+
commands.add("--waitfordeployment");
8889

8990
if (deploymentTimeout != null && !deploymentTimeout.isEmpty()) {
9091
commands.add("--deploymenttimeout");
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package octopus.teamcity.agent;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.mockito.Mockito.mock;
5+
import static org.mockito.Mockito.when;
6+
7+
import java.util.HashMap;
8+
import java.util.Map;
9+
10+
import jetbrains.buildServer.agent.AgentRunningBuild;
11+
import jetbrains.buildServer.agent.BuildProgressLogger;
12+
import jetbrains.buildServer.agent.BuildRunnerContext;
13+
import octopus.teamcity.common.OctopusConstants;
14+
import org.junit.jupiter.api.Test;
15+
16+
class OctopusDeployReleaseBuildProcessTest {
17+
18+
@Test
19+
void buildCommand_includesWaitForDeployment_whenWaitingWithTimeout() {
20+
final OctopusConstants constants = OctopusConstants.Instance;
21+
Map<String, String> params = new HashMap<>();
22+
params.put(constants.getServerKey(), "https://octopus.example.com");
23+
params.put(constants.getApiKey(), "API-KEY");
24+
params.put(constants.getProjectNameKey(), "MyProject");
25+
params.put(constants.getDeployToKey(), "Production");
26+
params.put(constants.getWaitForDeployments(), "true");
27+
params.put(constants.getDeploymentTimeout(), "00:30:00");
28+
29+
AgentRunningBuild runningBuild = mock(AgentRunningBuild.class);
30+
BuildProgressLogger logger = mock(BuildProgressLogger.class);
31+
BuildRunnerContext context = mock(BuildRunnerContext.class);
32+
when(context.getRunnerParameters()).thenReturn(params);
33+
when(runningBuild.getBuildLogger()).thenReturn(logger);
34+
35+
OctopusDeployReleaseBuildProcess proc =
36+
new OctopusDeployReleaseBuildProcess(runningBuild, context);
37+
38+
String[] command = proc.createCommand().buildCommand();
39+
40+
// --deploymenttimeout/--cancelontimeout are silently ignored by the Octopus CLI unless
41+
// --waitfordeployment is also passed, so it must be present when waiting on a deployment.
42+
assertThat(command).contains("--waitfordeployment");
43+
assertThat(command).contains("--deploymenttimeout", "00:30:00");
44+
}
45+
}

0 commit comments

Comments
 (0)