Gitlab SAST tee:无法识别的选项:追加

时间:2021-05-05 12:51:00

标签: docker gitlab gitlab-ci gitlab-ci-runner

我尝试在我的项目中启用 SAST,但在执行作业时出现错误。

Gitlab 跑步者信息

  • Gitlab Runner 13.5.0
  • Docker 版本 19.03.1

Gitlab-ci 结构

image: node:14.15.4

stages:
  - install
  - build
  - test
  - deploy


workflow:
  rules:
    - if: $CI_COMMIT_BRANCH

before_script:
  - |
    {
      echo "@${CI_PROJECT_ROOT_NAMESPACE}:registry=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/"
      echo "${CI_API_V4_URL#https?}/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=\${CI_JOB_TOKEN}"
    } | tee --append .npmrc

include:
  - template: Security/SAST.gitlab-ci.yml
  - template: Security/Secret-Detection.gitlab-ci.yml

工作出错

$ { # collapsed multi-line command
tee: unrecognized option: append
BusyBox v1.31.1 () multi-call binary.
Usage: tee [-ai] [FILE]...
Copy stdin to each FILE, and also to stdout
    -a  Append to the given FILEs, don't overwrite
    -i  Ignore interrupt signals (SIGINT)

1 个答案:

答案 0 :(得分:0)

原因很简单,tee有两种实现方式,

  • Alpine 使用的 Busybox 具有 tee,但不提供 --append它确实提供了一个 -a 选项(append 的缩写),它被定义为“附加到给定的文件,不要覆盖”
  • GNU CoreUtils provides a copy of tee too 它有 --append,您在这里使用它。它也被定义为“附加到给定的文件,不要覆盖”。但作为简写,GNU Tee 还提供了别名 -a

简而言之,如果您希望某些东西与 Alpine 和 BusyBox 以及附带 GNU Tee 的发行版兼容,那么请使用 -a(两者都支持)而不是 --append(仅在 GNU 中支持)三通)。