Skip to content

Commit

Permalink
Fix issue #364 - TTY option to run commands
Browse files Browse the repository at this point in the history
  • Loading branch information
robinshine committed Jul 15, 2021
1 parent 5370a8f commit 8afea7f
Show file tree
Hide file tree
Showing 24 changed files with 117 additions and 34 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<version>1.0.5</version>
</parent>
<artifactId>server</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
<packaging>pom</packaging>
<build>
<finalName>${project.groupId}.${project.artifactId}-${project.version}</finalName>
Expand Down Expand Up @@ -554,7 +554,7 @@
</repositories>
<properties>
<commons.version>2.0.11</commons.version>
<k8shelper.version>2.1.5</k8shelper.version>
<k8shelper.version>2.1.6</k8shelper.version>
<slf4j.version>1.7.5</slf4j.version>
<logback.version>1.2.0</logback.version>
<antlr.version>4.7.2</antlr.version>
Expand Down
2 changes: 1 addition & 1 deletion server-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<build>
<plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1001,4 +1001,48 @@ private void migrate8(VersionedYamlDoc doc, Stack<Integer> versions) {
}
}

@SuppressWarnings("unused")
private void migrate9(VersionedYamlDoc doc, Stack<Integer> versions) {
for (NodeTuple specTuple: doc.getValue()) {
String specObjectKey = ((ScalarNode)specTuple.getKeyNode()).getValue();
if (specObjectKey.equals("jobs")) {
SequenceNode jobsNode = (SequenceNode) specTuple.getValueNode();
for (Node jobsNodeItem: jobsNode.getValue()) {
MappingNode jobNode = (MappingNode) jobsNodeItem;
for (NodeTuple jobTuple: jobNode.getValue()) {
String jobTupleKey = ((ScalarNode)jobTuple.getKeyNode()).getValue();
if (jobTupleKey.equals("steps")) {
SequenceNode stepsNode = (SequenceNode) jobTuple.getValueNode();
for (Node stepsNodeItem: stepsNode.getValue()) {
MappingNode stepNode = (MappingNode) stepsNodeItem;
if (stepNode.getTag().getValue().equals("!CommandStep")) {
stepNode.getValue().add(new NodeTuple(new ScalarNode(Tag.STR, "useTTY"),
new ScalarNode(Tag.BOOL, "false")));
}
}
}
}
}
} else if (specObjectKey.equals("stepTemplates")) {
SequenceNode stepTemplatesNode = (SequenceNode) specTuple.getValueNode();
for (Node stepTemplatesNodeItem: stepTemplatesNode.getValue()) {
MappingNode stepTemplateNode = (MappingNode) stepTemplatesNodeItem;
for (NodeTuple stepTemplateTuple: stepTemplateNode.getValue()) {
String stepTemplateTupleKey = ((ScalarNode)stepTemplateTuple.getKeyNode()).getValue();
if (stepTemplateTupleKey.equals("steps")) {
SequenceNode stepsNode = (SequenceNode) stepTemplateTuple.getValueNode();
for (Node stepsNodeItem: stepsNode.getValue()) {
MappingNode stepNode = (MappingNode) stepsNodeItem;
if (stepNode.getTag().getValue().equals("!CommandStep")) {
stepNode.getValue().add(new NodeTuple(new ScalarNode(Tag.STR, "useTTY"),
new ScalarNode(Tag.BOOL, "false")));
}
}
}
}
}
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public class CommandStep extends Step {

private List<String> commands = new ArrayList<>();

private boolean useTTY;

@Editable(order=100, description="Specify docker image to execute commands inside")
@Interpolative(variableSuggester="suggestVariables")
@NotEmpty
Expand All @@ -50,6 +52,18 @@ public void setCommands(List<String> commands) {
this.commands = commands;
}

@Editable(order=120, name="Enable TTY Mode", description="Many commands print outputs with ANSI colors in "
+ "TTY mode to help identifying problems easily. However some commands running in this mode may "
+ "wait for user input to cause build hanging. This can normally be fixed by adding extra options "
+ "to the command")
public boolean isUseTTY() {
return useTTY;
}

public void setUseTTY(boolean useTTY) {
this.useTTY = useTTY;
}

@SuppressWarnings("unused")
private static List<InputSuggestion> suggestVariables(String matchWith) {
return BuildSpec.suggestVariables(matchWith, false, false);
Expand All @@ -62,7 +76,7 @@ private static List<InputSuggestion> suggestCommandVariables(String matchWith) {

@Override
public Executable getExecutable(Build build, String jobToken, ParamCombination paramCombination) {
return new CommandExecutable(getImage(), getCommands());
return new CommandExecutable(getImage(), getCommands(), isUseTTY());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2581,4 +2581,24 @@ private void migrate59(File dataDir, Stack<Integer> versions) {
}
}

private void migrate60(File dataDir, Stack<Integer> versions) {
for (File file: dataDir.listFiles()) {
if (file.getName().startsWith("Settings.xml")) {
VersionedXmlDoc dom = VersionedXmlDoc.fromFile(file);
for (Element element: dom.getRootElement().elements()) {
if (element.elementTextTrim("key").equals("JOB_EXECUTORS")) {
Element valueElement = element.element("value");
if (valueElement != null) {
for (Element executorElement: valueElement.elements()) {
if (executorElement.getName().equals("io.onedev.server.plugin.docker.DockerExecutor"))
executorElement.setName("io.onedev.server.plugin.executor.docker.DockerExecutor");
}
}
}
}
dom.writeToFile(file, false);
}
}
}

}
2 changes: 1 addition & 1 deletion server-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<dependencies>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-archetype/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<build>
<resources>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-authenticator-ldap/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.authenticator.ldap.LdapModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-buildspec-gradle/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.buildspec.gradle.GradleModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-buildspec-maven/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.buildspec.maven.MavenModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-buildspec-node/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.buildspec.node.NodePluginModule</moduleClass>
Expand Down
4 changes: 2 additions & 2 deletions server-plugin/server-plugin-executor-docker/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.docker.DockerModule</moduleClass>
<moduleClass>io.onedev.server.plugin.executor.docker.DockerModule</moduleClass>
</properties>
</project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.onedev.server.plugin.docker;
package io.onedev.server.plugin.executor.docker;

import static io.onedev.k8shelper.KubernetesHelper.cloneRepository;
import static io.onedev.k8shelper.KubernetesHelper.getCacheInstances;
Expand Down Expand Up @@ -70,7 +70,7 @@
import io.onedev.server.git.config.GitConfig;
import io.onedev.server.model.support.RegistryLogin;
import io.onedev.server.model.support.administration.jobexecutor.JobExecutor;
import io.onedev.server.plugin.docker.DockerExecutor.TestData;
import io.onedev.server.plugin.executor.docker.DockerExecutor.TestData;
import io.onedev.server.util.ExceptionUtils;
import io.onedev.server.util.PKCS12CertExtractor;
import io.onedev.server.util.ServerConfig;
Expand Down Expand Up @@ -593,6 +593,8 @@ public boolean execute(LeafExecutable executable, List<Integer> position) {
}
}

if (commandExecutable.isUseTTY())
docker.addArgs("-t");
docker.addArgs("-w", containerWorkspace, "--entrypoint=" + containerEntryPoint);

docker.addArgs(commandExecutable.getImage());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.onedev.server.plugin.docker;
package io.onedev.server.plugin.executor.docker;

import java.util.Collection;

Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-executor-kubernetes/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.executor.kubernetes.KubernetesModule</moduleClass>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -823,7 +823,7 @@ public void consume(String line) {
} else {
List<Action> actions = new ArrayList<>();
CommandExecutable executable = new CommandExecutable((String) executionContext,
Lists.newArrayList("this does not matter"));
Lists.newArrayList("this does not matter"), false);
actions.add(new Action("test", executable, ExecuteCondition.ALWAYS));
entryExecutable = new CompositeExecutable(actions);
}
Expand Down Expand Up @@ -853,16 +853,19 @@ public void consume(String line) {
public Void visit(LeafExecutable executable, List<Integer> position) {
String containerName = getContainerName(position);
containerNames.add(containerName);
String image;
if (executable instanceof CommandExecutable)
image = ((CommandExecutable)executable).getImage();
else
image = "1dev/k8s-helper-" + baselineOsInfo.getHelperImageSuffix() + ":" + helperImageVersion;
Map<Object, Object> stepContainerSpec;
if (executable instanceof CommandExecutable) {
stepContainerSpec = CollectionUtils.newHashMap(
"name", containerName,
"image", ((CommandExecutable)executable).getImage());
if (((CommandExecutable) executable).isUseTTY())
stepContainerSpec.put("tty", true);
} else {
stepContainerSpec = CollectionUtils.newHashMap(
"name", containerName,
"image", "1dev/k8s-helper-" + baselineOsInfo.getHelperImageSuffix() + ":" + helperImageVersion);
}

Map<Object, Object> stepContainerSpec = CollectionUtils.newHashMap(
"name", containerName,
"image", image);

String positionStr = stringifyPosition(position);
if (baselineOsInfo.isLinux()) {
stepContainerSpec.put("command", Lists.newArrayList("sh"));
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-import-github/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.github.GitHubPluginModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-import-youtrack/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.imports.youtrack.YouTrackPluginModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-report-checkstyle/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.checkstyle.CheckstylePluginModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-report-clover/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.clover.CloverPluginModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-report-jest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.jest.JestTestReportModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-report-markdown/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<properties>
<moduleClass>io.onedev.server.plugin.report.markdown.MarkdownReportModule</moduleClass>
Expand Down
2 changes: 1 addition & 1 deletion server-plugin/server-plugin-sso-openid/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server-plugin</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<dependencies>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion server-product/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>io.onedev</groupId>
<artifactId>server</artifactId>
<version>4.8.0</version>
<version>4.8.1</version>
</parent>
<dependencies>
<dependency>
Expand Down

0 comments on commit 8afea7f

Please sign in to comment.