泊坞窗Webhook容器:应该运行一个脚本,但脚本不能正确执行(只有回声工作)

所以我build立了一个Docker容器,它是基于almir / webhook的容器,我添加了git和docker到图像,所以我可以运行相应的命令。 问题是,它运行时,我手动testing,它甚至运行时,我通过terminal从容器内启动脚本。 但是当我通过URL触发脚本时,我只能得到回显作为输出,没有“真正的”命令得到执行。

我的脚本如下所示:

#!/bin/sh echo "current directory: " + $PWD git pull echo "pulling from git" docker exec -ti geda-drupal gedankenbruecke/vendor/drush/drush/drush st echo "clear drupal cache" echo "Script finished successful" echo "testPull" 

我的输出是这样的:

 [webhook] 2017/10/03 21:08:58 incoming HTTP request from 172.18.0.4:38050 [webhook] 2017/10/03 21:08:58 tuleapPull got matched [webhook] 2017/10/03 21:08:58 tuleapPull hook triggered successfully [webhook] 2017/10/03 21:08:58 2017-10-03T21:08:58Z | 200 | 61.3µs | webhook.localhost | GET /hooks/tuleapPull [webhook] 2017/10/03 21:08:58 executing /var/webhook/scripts/tuleapPull.sh (/var/webhook/scripts/tuleapPull.sh) with arguments ["/var/webhook/scripts/tuleapPull.sh"] and environment [] using /var/repo/ as cwd [webhook] 2017/10/03 21:08:58 command output: current directory: + /var/repo pulling from git clear drupal cache Script finished successful testPull [webhook] 2017/10/03 21:08:58 finished handling tuleapPull 

所以脚本看起来是正确的执行,但重要的命令不是。 我testing了新的推到我的回购,这触发webhook-Url,然后它应该让容器拉回购,但是这不会发生。 只有当我手动启动脚本时,脚本才能正确执行。

有没有人可以提出问题的地方?

只有当我手动启动脚本时,脚本才能正确执行。

一个可能的原因是两种情况下使用的环境variables和用户帐户的差异。
尝试并在脚本中显示它们(使用envid -a )以查看两种执行模式(手动或通过webhook)

从我的angular度来看,你的问题似乎是一个失踪的TTY

 docker exec -ti geda-drupal gedankenbruecke/vendor/drush/drush/drush st 

你需要一个TTY来使这个命令可以工作,这是不需要的

 docker exec -ti geda-drupal gedankenbruecke/vendor/drush/drush/drush st 

下一个问题可能没有完整的命令path。 有时PATHvariables没有在这样的执行中定义,并导致问题。 所以你用完整的pathreplacepath是最好的

 #!/bin/sh echo "current directory: " + $PWD /usr/bin/git pull echo "pulling from git" /usr/bin/docker exec -ti geda-drupal gedankenbruecke/vendor/drush/drush/drush st echo "clear drupal cache" echo "Script finished successful" echo "testPull"