Mercurial > hg > tc-symbol-server
comparison agent/src/jetbrains/buildServer/symbols/SymbolsIndexer.java @ 3:53028ba390e0
improved build progress messages
author | Evgeniy.Koshkin |
---|---|
date | Mon, 22 Jul 2013 19:37:40 +0400 |
parents | c6ca0a26d93e |
children | f7602ee7e8b1 |
comparison
equal
deleted
inserted
replaced
2:c6ca0a26d93e | 3:53028ba390e0 |
---|---|
1 package jetbrains.buildServer.symbols; | 1 package jetbrains.buildServer.symbols; |
2 | 2 |
3 import com.intellij.execution.configurations.GeneralCommandLine; | 3 import com.intellij.execution.configurations.GeneralCommandLine; |
4 import jetbrains.buildServer.ExecResult; | 4 import jetbrains.buildServer.ExecResult; |
5 import jetbrains.buildServer.SimpleCommandLineProcessRunner; | 5 import jetbrains.buildServer.SimpleCommandLineProcessRunner; |
6 import jetbrains.buildServer.agent.AgentLifeCycleAdapter; | 6 import jetbrains.buildServer.agent.*; |
7 import jetbrains.buildServer.agent.AgentLifeCycleListener; | |
8 import jetbrains.buildServer.agent.AgentRunningBuild; | |
9 import jetbrains.buildServer.agent.BuildFinishedStatus; | |
10 import jetbrains.buildServer.agent.artifacts.ArtifactsWatcher; | 7 import jetbrains.buildServer.agent.artifacts.ArtifactsWatcher; |
11 import jetbrains.buildServer.agent.impl.artifacts.ArtifactsBuilderAdapter; | 8 import jetbrains.buildServer.agent.impl.artifacts.ArtifactsBuilderAdapter; |
12 import jetbrains.buildServer.agent.impl.artifacts.ArtifactsCollection; | 9 import jetbrains.buildServer.agent.impl.artifacts.ArtifactsCollection; |
13 import jetbrains.buildServer.agent.plugins.beans.PluginDescriptor; | 10 import jetbrains.buildServer.agent.plugins.beans.PluginDescriptor; |
14 import jetbrains.buildServer.util.EventDispatcher; | 11 import jetbrains.buildServer.util.EventDispatcher; |
55 | 52 |
56 @Override | 53 @Override |
57 public void beforeBuildFinish(@NotNull AgentRunningBuild build, @NotNull BuildFinishedStatus buildStatus) { | 54 public void beforeBuildFinish(@NotNull AgentRunningBuild build, @NotNull BuildFinishedStatus buildStatus) { |
58 super.beforeBuildFinish(build, buildStatus); | 55 super.beforeBuildFinish(build, buildStatus); |
59 if (myBuild == null || mySymbolsToProcess == null || myBinariesToProcess == null) return; | 56 if (myBuild == null || mySymbolsToProcess == null || myBinariesToProcess == null) return; |
57 if(myBuild.getBuildFeaturesOfType(SymbolsConstants.BUILD_FEATURE_TYPE).isEmpty()) return; | |
58 | |
60 if (mySymbolsToProcess.isEmpty()) { | 59 if (mySymbolsToProcess.isEmpty()) { |
60 myBuild.getBuildLogger().warning("Symbols weren't found in artifacts to be published."); | |
61 LOG.debug("Symbols weren't found in artifacts to be published."); | 61 LOG.debug("Symbols weren't found in artifacts to be published."); |
62 } else { | 62 } else { |
63 final File targetDir = myBuild.getBuildTempDirectory(); | 63 final File targetDir = myBuild.getBuildTempDirectory(); |
64 try { | 64 try { |
65 final File symbolSignaturesFile = dumpSymbolSignatures(mySymbolsToProcess, targetDir); | 65 final File symbolSignaturesFile = dumpSymbolSignatures(mySymbolsToProcess, targetDir, myBuild.getBuildLogger()); |
66 myArtifactsWatcher.addNewArtifactsPath(symbolSignaturesFile + "=>" + ".teamcity/symbols/symbol-signatures.xml"); | 66 myArtifactsWatcher.addNewArtifactsPath(symbolSignaturesFile + "=>" + ".teamcity/symbols/symbol-signatures.xml"); |
67 final File binariesSignaturesFile = dumpBinarySignatures(myBinariesToProcess, targetDir); | 67 final File binariesSignaturesFile = dumpBinarySignatures(myBinariesToProcess, targetDir, myBuild.getBuildLogger()); |
68 myArtifactsWatcher.addNewArtifactsPath(binariesSignaturesFile + "=>" + ".teamcity/symbols/binary-signatures.xml"); | 68 myArtifactsWatcher.addNewArtifactsPath(binariesSignaturesFile + "=>" + ".teamcity/symbols/binary-signatures.xml"); |
69 } catch (IOException e) { | 69 } catch (IOException e) { |
70 LOG.error("Error while dumping symbols/binaries signatures.", e); | 70 LOG.error("Error while dumping symbols/binaries signatures.", e); |
71 } | 71 } |
72 } | 72 } |
80 @Override | 80 @Override |
81 public void afterCollectingFiles(@NotNull List<ArtifactsCollection> artifacts) { | 81 public void afterCollectingFiles(@NotNull List<ArtifactsCollection> artifacts) { |
82 super.afterCollectingFiles(artifacts); | 82 super.afterCollectingFiles(artifacts); |
83 if(myBuild == null || mySymbolsToProcess == null || myBinariesToProcess == null) return; | 83 if(myBuild == null || mySymbolsToProcess == null || myBinariesToProcess == null) return; |
84 if(myBuild.getBuildFeaturesOfType(SymbolsConstants.BUILD_FEATURE_TYPE).isEmpty()){ | 84 if(myBuild.getBuildFeaturesOfType(SymbolsConstants.BUILD_FEATURE_TYPE).isEmpty()){ |
85 myBuild.getBuildLogger().warning(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature disabled. No indexing performed."); | |
85 LOG.debug(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature disabled. No indexing performed."); | 86 LOG.debug(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature disabled. No indexing performed."); |
86 return; | 87 return; |
87 } | 88 } |
88 LOG.debug(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature enabled. Searching for symbol files."); | 89 LOG.debug(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature enabled. Searching for symbol files."); |
90 myBuild.getBuildLogger().message(SymbolsConstants.BUILD_FEATURE_TYPE + " build feature enabled. Searching for symbol files."); | |
89 mySymbolsToProcess.addAll(getArtifactPathsByFileExtension(artifacts, PDB_FILE_EXTENSION)); | 91 mySymbolsToProcess.addAll(getArtifactPathsByFileExtension(artifacts, PDB_FILE_EXTENSION)); |
90 myBinariesToProcess.addAll(getArtifactPathsByFileExtension(artifacts, EXE_FILE_EXTENSION)); | 92 myBinariesToProcess.addAll(getArtifactPathsByFileExtension(artifacts, EXE_FILE_EXTENSION)); |
91 myBinariesToProcess.addAll(getArtifactPathsByFileExtension(artifacts, DLL_FILE_EXTENSION)); | 93 myBinariesToProcess.addAll(getArtifactPathsByFileExtension(artifacts, DLL_FILE_EXTENSION)); |
92 } | 94 } |
93 | 95 |
101 } | 103 } |
102 } | 104 } |
103 return result; | 105 return result; |
104 } | 106 } |
105 | 107 |
106 private File dumpSymbolSignatures(Collection<File> files, File targetDir) throws IOException { | 108 private File dumpSymbolSignatures(Collection<File> files, File targetDir, BuildProgressLogger buildLogger) throws IOException { |
107 final File tempFile = FileUtil.createTempFile(targetDir, "symbol-signatures-", ".xml", false); | 109 final File tempFile = FileUtil.createTempFile(targetDir, "symbol-signatures-", ".xml", false); |
108 runTool(DUMP_SYMBOL_SIGN_CMD, files, tempFile); | 110 runTool(DUMP_SYMBOL_SIGN_CMD, files, tempFile, buildLogger); |
109 return tempFile; | 111 return tempFile; |
110 } | 112 } |
111 | 113 |
112 private File dumpBinarySignatures(Collection<File> files, File targetDir) throws IOException { | 114 private File dumpBinarySignatures(Collection<File> files, File targetDir, BuildProgressLogger buildLogger) throws IOException { |
113 final File tempFile = FileUtil.createTempFile(targetDir, "binary-signatures-", ".xml", false); | 115 final File tempFile = FileUtil.createTempFile(targetDir, "binary-signatures-", ".xml", false); |
114 runTool(DUMP_BIN_SIGN_CMD, files, tempFile); | 116 runTool(DUMP_BIN_SIGN_CMD, files, tempFile, buildLogger); |
115 return tempFile; | 117 return tempFile; |
116 } | 118 } |
117 | 119 |
118 private void runTool(String cmd, Collection<File> files, File output){ | 120 private void runTool(String cmd, Collection<File> files, File output, BuildProgressLogger buildLogger){ |
119 final GeneralCommandLine commandLine = new GeneralCommandLine(); | 121 final GeneralCommandLine commandLine = new GeneralCommandLine(); |
120 commandLine.setExePath(myNativeToolPath.getPath()); | 122 commandLine.setExePath(myNativeToolPath.getPath()); |
121 commandLine.addParameter(cmd); | 123 commandLine.addParameter(cmd); |
122 commandLine.addParameter(String.format("/o=\"%s\"", output.getPath())); | 124 commandLine.addParameter(String.format("/o=\"%s\"", output.getPath())); |
123 for(File file : files){ | 125 for(File file : files){ |
124 commandLine.addParameter(file.getPath()); | 126 commandLine.addParameter(file.getPath()); |
125 } | 127 } |
126 final ExecResult execResult = SimpleCommandLineProcessRunner.runCommand(commandLine, null); | 128 final ExecResult execResult = SimpleCommandLineProcessRunner.runCommand(commandLine, null); |
127 if (execResult.getExitCode() == 0) return; | 129 if (execResult.getExitCode() == 0) return; |
128 LOG.warn(String.format("%s ends with non-zero exit code.", SYMBOLS_EXE)); | 130 String message = String.format("%s ends with non-zero exit code.", SYMBOLS_EXE); |
131 buildLogger.warning(message); | |
132 LOG.warn(message); | |
129 } | 133 } |
130 } | 134 } |