chmod: 'og=' Gitlab CI/CD executor=shell 后缺少操作数

chmod: missing operand after ‘og=’ Gitlab CI/CD executor=shell

我在 .gitlab-ci.yml 中有以下用于开发服务器的管道:

   stages:
    - deploy

   deploy to dev:
    stage: deploy
    tags:
      - development
    script:
      - chmod og= $ID_RSA_DEVELOPMENT
      - apk update && apk add openssh-client
      - ssh -i $ID_RSA_DEVELOPMENT -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP_DEVELOPMENT "cd /home/deployer/folder-name && bash dev.sh"
    environment:
      name: development
      url: http://{IP Address}
    only:
      - dev   

此管道是通过推送到开发分支触发的。生产管道似乎可以正常使用相同的代码,将 %DEVELOPMENT% 替换为 %PRODUCTION% 并且 - dev 替换为 - production。但是当 运行 带有 dev 分支的管道时,管道中显示以下错误:

$ chmod og= $ID_RSA_DEVELOPMENT
chmod: missing operand after ‘og=’
Try 'chmod --help' for more information.

谁能帮我解决这个问题,因为我几乎没有办法自己解决这个问题。 谢谢干杯!!

[编辑] 这是在其他项目中工作的完整 yml 文件

stages:
  - deploy

deploy to master:
  stage: deploy
  tags:
    - production
  script:
    - chmod og= $ID_RSA_PRODUCTION
    - apk update && apk add openssh-client
    - ssh -i $ID_RSA_PRODUCTION -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP_PRODUCTION "cd /home/project-folder/ && bash prod.sh"

  environment:
    name: production
    url: https://1.2.3.4/
  only:
    - master

deploy to dev:
  stage: deploy
  tags:
    - development
  script:
    - chmod og= $ID_RSA_DEVELOPMENT
    - apk update && apk add openssh-client
    - ssh -i $ID_RSA_DEVELOPMENT -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP_DEVELOPMENT "cd /home/project-folder/ && bash dev.sh"
  environment:
    name: development
    url: https://1.2.3.4/
  only:
    - dev

终于找到问题的原因了。正如数字海洋指南中所述,我已将变量设置为只能由受保护的分支访问,但忘记使开发分支受保护。这就是为什么 og="${ID_RSA_DEVELOPMENT}" 没有返回任何内容,因为 dev 没有受到保护并且正在尝试访问受保护分支的文件。 将 dev 分支更改为受保护并且 poof 管道开始工作,因为它现在能够访问 ID_RSA_DEVELOPMENT 变量的内容。


感谢大家的帮助,不胜感激。