shell - gitlab-ci.yml 不执行 shell 脚本

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

  • 我有错误的设置吗?显然它不是语法和权限,否则我会得到一个错误。

    这可能是什么?谢谢!

    最佳答案

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

    所以echo "job executed" >> job.log将创建一个 job.log文件在 shell session 的当前目录中,而不是在包含脚本文件的目录中。

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

    关于shell - gitlab-ci.yml 不执行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807387/

    相关文章:

    linux - Solaris 的 grep -A 备用命令是什么?

    powershell - 在使用 Octopus 部署之前将生产环境数据库复制到暂存区

    python - 通过 PyYAML 序列化命名元组

    java - liquibase 与 Spring Boot 2 集成时出错

    linux - 在 Bash 脚本中过滤类型错误的正确方法是什么?

    linux - 如何获取shell脚本中使用的命令列表?

    bash - 如何在 shell 脚本中转义连字符(-)?

    Jenkins 构建抛出内存不足错误

    mysql - 搜索用于检查 (My)SQL 语法的工具

    azure - Azure YAML Pipelines <部署作业> 可以使用可变环境吗?