2015-11-19 99 views
2

我成立gitlab-CI爲我的項目,並插入下面的腳本陽明海運:gitlab-ci.yml不執行shell腳本

--- 
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

我是否有錯誤的設置?顯然它的語法和權限都沒問題,否則我會得到一個錯誤。

這可能是什麼?謝謝!

+1

你可以顯示該腳本的內容嗎? –

+2

該腳本在當前目錄中創建'job.log'。如果你先「cd」,那麼你的當前目錄就是你cd到的任何地方。如果你不這麼做,它就是你默認的任何地方。所以你可能只是沒有在正確的位置尋找文件。爲輸出使用完整路徑。 –

+0

這就是問題所在?你只是沒有在正確的目錄中查找文件? –

回答

2

腳本的當前目錄是shell腳本中住在腳本運行的時候,而不是目錄的目錄。

所以echo "job executed" >> job.log將在shell會話的當前目錄下創建一個job.log文件而不是在腳本文件的目錄中。

如果你想使用本地路徑來表示腳本文件的目錄,那麼你想看看this answerBash FAQ 028