Сбой задачи Gocd после выполнения сценария оболочки - PullRequest
0 голосов
/ 05 мая 2018

Запуск сервера GOCD на сервере Windows и агента в Windows 10. Одной из задач в конвейере является запуск сценария оболочки в агенте с использованием настраиваемой команды в задаче GOCD.

На данный момент сценарий оболочки содержит только одну строку

echo "hello"

Сценарий выполняется нормально, когда задача запускается, но задача не выполняется в консоли конвейера.

Обновление: Мой конфигурационный файл для конвейера, который вызывает файл sh. Содержимое такое же, как и для однострочной команды echo.

<?xml version="1.0" encoding="utf-8"?>
<cruise xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="cruise-config.xsd" schemaVersion="106">
  <server artifactsdir="artifacts" agentAutoRegisterKey="270fb4b6-d548-435b-a4b5-a6f6952e1a4d" webhookSecret="eba9b673-0757-4577-807d-82dca985d17f" commandRepositoryLocation="default" serverId="359f16bd-f9c9-4c52-bd78-081df4069961" tokenGenerationKey="82d73c79-47f7-494e-9ec7-76639d4ec961" />
  <pipelines group="defaultGroup">
    <pipeline name="test1">
      <materials>
        <git url="http://infygit.ad.infosys.com/Mohit_Vora/InfyBankH2Dev.git" dest="codedev" />
      </materials>
      <stage name="defaultStage">
        <jobs>
          <job name="defaultJob">
            <tasks>
              <exec command="mvn clean install" workingdir="codedev">
                <runif status="passed" />
              </exec>
            </tasks>
            <artifacts>
              <artifact type="build" src="codedev/target/*.war" dest="deployWar" />
              <artifact type="build" src="codedev/tomcat.sh" dest="deployWar" />
              <artifact type="build" src="codedev/tomcat.bat" dest="deployWar" />
            </artifacts>
          </job>
        </jobs>
      </stage>
    </pipeline>
    <pipeline name="test2">
      <materials>
        <pipeline pipelineName="test1" stageName="defaultStage" />
      </materials>
      <stage name="defaultStage">
        <jobs>
          <job name="defaultJob">
            <tasks>
              <fetchartifact srcdir="deployWar" dest="warTestDeploy" pipeline="test1" stage="defaultStage" job="defaultJob">
                <runif status="passed" />
              </fetchartifact>
              <exec command="tomcat.sh" workingdir="warTestDeploy/deployWar">
                <runif status="passed" />
              </exec>
            </tasks>
          </job>
        </jobs>
      </stage>
    </pipeline>
  </pipelines>
  <agents>
    <agent hostname="MYSGEC241372D" ipaddress="10.123.75.196" uuid="37628ff5-91f7-4c9a-a5f5-615e937f2650" />
  </agents>
</cruise>

Мой журнал консоли:

##|19:47:17.280 [go] Start to build test2/25/defaultStage/1/defaultJob on MYSGEC241372D [C:\Program Files\Go Agent]
!!|19:47:17.280 [go] Task: fetch artifact [deployWar] => [warTestDeploy] from [test1/defaultStage/defaultJob]
&1|19:47:17.280 [go] Fetching artifact [deployWar] from [test1/13/defaultStage/1/defaultJob]
&1|19:47:26.211 [go] Saved artifact to [pipelines\test2\warTestDeploy] after verifying the integrity of its contents.
?0|19:47:26.211 [go] Task status: passed (8931 ms)
!!|19:47:26.211 [go] Task: tomcat.sh
?1|19:49:06.044 [go] Task status: failed (99833 ms) (exit code: -1073741819)
j1|19:49:06.122 [go] Current job status: failed
##|19:49:06.169 [go] Start to create properties test2/25/defaultStage/1/defaultJob on MYSGEC241372D [C:\Program Files\Go Agent]
ar|19:49:06.169 [go] Start to upload test2/25/defaultStage/1/defaultJob on MYSGEC241372D [C:\Program Files\Go Agent]
ex|19:49:06.274 [go] Job completed test2/25/defaultStage/1/defaultJob on MYSGEC241372D [C:\Program Files\Go Agent]

1 Ответ

0 голосов
/ 22 июня 2018

Думаю, я понял это. кто-то может подтвердить или опровергнуть меня на самом деле.

  1. сталкивался с этим где-то в темах, gocd учитывает коды возврата при выполнении внешних командных файлов или файлов bat. если код возврата равен 0, он рассматривает успешное выполнение, если нет, он считает его неудачной попыткой выполнения соответствующего сценария bat или shell. который в моем случае должен быть ненулевым кодом возврата, так как разные скрипты и библиотеки считают разные коды возврата успешными или неудачными. установка кода возврата вручную будет возможным решением.

  2. echo "привет" был всего лишь экспериментом, когда я добавил содержательный код, предназначенный для запуска и запуска экземпляра сервера, он оставил открытым новое окно CMD, пока я не уничтожу экземпляр сервера вручную, что означает, что управление никогда не вернется в gocd, и, следовательно, он переносит ошибку тайм-аута.

Открыто для комментариев, больше нет доступа к коду.

...