gitlab ci 不能在脚本中使用变量

Posted

技术标签:

【中文标题】gitlab ci 不能在脚本中使用变量【英文标题】:gitlab ci couldn't use variables in script 【发布时间】:2021-09-07 19:56:14 【问题描述】:

我想在 gitlab 上运行测试。我正在使用一个简单的 yml 文件,但我想发送路径以通过变量进行测试。但是当我运行这个工作时,我得到了错误: $ npm run mocha "$TEST_VAR" --timeout=1200000 --reporter mocha-allure-reporter npm 错误!缺少脚本:“mocha”

image: node:latest
    
    cache:
      paths:
        - node_modules/
    
    stages:
      - setup
      - test
    
    setup:node_modules:
      stage: setup
      script:
        - npm install
      artifacts:
        paths:
          - node_modules/
          - package-lock.json
    
    test:
        stage: test
     variables:
          TEST_VAR: "test/test.js"
        script:
            - echo "$TEST_VAR"
            - npm run mocha "$TEST_VAR" --timeout=1200000 --reporter mocha-allure-reporter
        dependencies:
            - setup:node_modules

【问题讨论】:

【参考方案1】:

错误信息npm ERR! Missing script: "mocha"实际上是说npm在package.json的scripts块中找不到名为“mocha”的脚本。

如果您希望使用变量直接从 .gitlab-ci.yml 运行 mocha,而不是在 package.json 的脚本块中编写脚本,那么这可能是您正在寻找的更多内容:

test:
  stage: test
  variables:
    TEST_VAR: "test/test.js"
  script:
    - echo "$TEST_VAR"
    - npm i mocha -g
    - npm i mocha-allure-reporter -g
    - mocha "$TEST_VAR" --timeout=1200000 --reporter mocha-allure-reporter --exit
  dependencies:
    - setup:node_modules

【讨论】:

以上是关于gitlab ci 不能在脚本中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

如何将 exe 输出分配给 gitlab ci 脚本中的变量?

gitlab ci 脚本在哪个 $?允许为非零

在 GitLab-ci Docker build 中执行外部 bash 脚本

如何在 gitlab ci 的构建脚本中使用 sudo?

如何在Gitlab CI脚本中删除符号链接的目标?

使用“:”的脚本命令导致 .gitlab-ci.yml 执行错误