简体   繁体   English

gitlab ci/cd 错误:作业失败:chmod og= $STAGE_ID_RSA 上的退出代码 1

[英]gitlab ci/cd ERROR: Job failed: exit code 1 on chmod og= $STAGE_ID_RSA

This is my ci.yml这是我的 ci.yml

deploy-stage:
  stage: deploy
  image: alpine:latest
  script:
    - chmod og= $STAGE_ID_RSA
    - apk update && apk add openssh-client
    - ssh -i $STAGE_ID_RSA -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker stop $CI_PROJECT_NAME || true"
    - ssh -i $STAGE_ID_RSA -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker rm $CI_PROJECT_NAME || true"
    - ssh -i $STAGE_ID_RSA -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker image rm $CI_REGISTRY_IMAGE:latest || true"
    - ssh -i $STAGE_ID_RSA -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
    - ssh -i $STAGE_ID_RSA -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker pull $CI_REGISTRY_IMAGE:latest"
    - ssh -i $STAGE_ID_RSA -o StrictHostKeyChecking=no $STAGE_SERVER_USER@$STAGE_SERVER_IP "docker run -d --restart unless-stopped --name $CI_PROJECT_NAME -p 8882:4000 -e "variableData=Docker-Run-Command" $CI_REGISTRY_IMAGE:latest"

I get this error:我收到此错误:

BusyBox v1.35.0 (2022-05-09 17:27:12 UTC) multi-call binary.
Usage: chmod [-Rcvf] MODE[,MODE]... FILE...
MODE is octal number (bit pattern sstrwxrwxrwx) or [ugoa]{+|-|=}[rwxXst]
    -R  Recurse
    -c  List changed files
    -v  Verbose
    -f  Hide errors
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit code 1

And this my variable:这是我的变量:

https://i.stack.imgur.com/zegmz.png https://i.stack.imgur.com/zegmz.png

And I enter breakline end of STAGE_ID_RSA value我输入STAGE_ID_RSA值的断线结尾

First, you can use chmod og= -- $STAGE_ID_RSA to make sure chmod will not consider $STAGE_ID_RSA as an option, but a parameter .首先,您可以使用chmod og= -- $STAGE_ID_RSA来确保 chmod不会$STAGE_ID_RSA视为一个选项,而是一个参数

Second, chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE... means the chmod applies to a file .其次, chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...表示chmod适用于文件

If $STAGE_ID_RSA represents a value , that would not work.如果$STAGE_ID_RSA代表一个value ,那将不起作用。
You would need to redirect its content to a file.您需要将其内容重定向到文件。

Yet, I do see STAGE_ID_RSA here, used as you do in .gitlab-ci.yml , but using the kroniak/ssh-client rather than alpine:latest .然而,我确实在这里看到STAGE_ID_RSA ,就像你在.gitlab-ci.yml中一样使用,使用的是kroniak/ssh-client而不是alpine:latest

The chmod in alpine:latest might not behave like a chmod in a more traditional image. alpine:latest中的chmod可能不像更传统的图像中的chmod
See " Linux commands in Alpine docker image +755 invalid mode ".请参阅“ Alpine docker image +755无效模式中的 Linux 命令”。
That is most likely your issue.这很可能是你的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM