Ran*_*ndy 5 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
Run Code Online (Sandbox Code Playgroud)
该脚本在我的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.
Run Code Online (Sandbox Code Playgroud)
但是,脚本永远不会执行。如果我在服务器上本地执行此脚本,它将创建带有简单文本输出的文件。但是,它永远不会通过此作业创建文件。
脚本内容:
echo "job executed" >> job.log
我的设置是否错误?显然,它的语法和权限都还不错,否则我会报错。
这可能是什么?谢谢!
脚本的当前目录是运行脚本时外壳程序所在的目录,而不是脚本所在的目录。
因此echo "job executed" >> job.log将job.log在shell会话的当前目录中创建文件,而不是在脚本文件目录中创建文件。
如果要使用本地路径来表示脚本文件的目录,则需要查看此答案和Bash FAQ 028。
| 归档时间: |
|
| 查看次数: |
13384 次 |
| 最近记录: |