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 变量的内容。
感谢大家的帮助,不胜感激。
我在 .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 变量的内容。
感谢大家的帮助,不胜感激。