gitlab-ci.yml没有执行shell脚本

时间:2015-11-19 15:02:50

标签: shell continuous-integration yaml sh gitlab

我为我的项目设置了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

我的设置有误吗?显然它不是语法和权限都没关系,否则我会收到错误。

这可能是什么? THX!

1 个答案:

答案 0 :(得分:5)

脚本的当前目录是运行脚本时shell所在的目录,而不是脚本所在的目录。

因此echo "job executed" >> job.log将在shell会话的当前目录中创建job.log文件,而不是在包含脚本文件的目录中。

如果您想使用本地路径表示脚本文件的目录,那么您希望查看this answerBash FAQ 028