gitlab-ci.yml无法执行shell脚本

7
我为我的项目设置了gitlab-ci,并插入了以下yml脚本:

我为我的项目设置了gitlab-ci,并插入了以下yml脚本:

--- 
buildJob: 
  only: 
    - master
  script: 
    - "sh /var/www/gitTestFolder/scripts/build.sh"
  stage: build
  tags: 
    - ipsenh
deployJob: 
  only: 
    - master
  script: 
    - "sh /var/www/gitTestFolder/scripts/deploy.sh"
  stage: deploy
  tags: 
    - ipsenh
testJob: 
  only: 
    - master
  script: 
    - "sh /var/www/gitTestFolder/scripts/test.sh"
  stage: test
  tags: 
    - ipsenh
stages: 
  - build
  - test
  - deploy

这个脚本在我的GitLab服务器上运行,显示应该执行脚本的终端(/var/www..../script.sh)

以下是我其中一份工作的结果:

gitlab-ci-multi-runner 0.6.2 (3227f0a)
Using Shell executor...
Running on ipsenh...

Cloning repository...
Cloning into 'builds/05d0538a/0/root/ipsenh'...
Checking out 4288f64a as master...

$ sh /var/www/gitTestFolder/scripts/deploy.sh

Build succeeded.

脚本从未执行。如果我在本地服务器上执行此脚本,则会创建一个具有简单文本输出的文件。但是,通过这个作业它从未创建文件。

  • 脚本内容:

    echo "job executed" >> job.log

我是否设置错误?显然,不是语法问题,权限也没有问题,否则我将收到错误。

这可能是什么原因?谢谢!


2
你能展示一下那个脚本的内容吗? - Etan Reisner
3
这段脚本会在当前目录创建一个名为 job.log 的文件。如果你先使用 cd 命令改变了目录,那么当前目录就是你切换后的目录;如果没有使用 cd 命令,则默认为当前所在的目录。因此,你可能没有在正确的位置查找该文件。请在输出时使用完整路径。 - Etan Reisner
那就是问题所在了吗?你只是没有在正确的目录中寻找文件? - Etan Reisner
1个回答

5
一个脚本的当前目录是指当脚本运行时shell所在的目录,而不是脚本所在的目录。
因此,echo "job executed" >> job.log会在shell会话的当前目录中创建一个名为job.log的文件,而不是在脚本文件所在的目录中。
如果您想使用本地路径来表示脚本文件的目录,则可以查看这个答案Bash FAQ 028

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接