Bash ./deploy.sh不在gitlab ci上工作
我的问题是,我创建的bash脚本在gitlab上出现了以下错误:“/bin/sh:eval:line 88:./deploy.sh:not found”。下面是我的示例脚本.gitlab ci.ymlBash ./deploy.sh不在gitlab ci上工作,bash,continuous-integration,gitlab,gitlab-ci,gitlab-ci-runner,Bash,Continuous Integration,Gitlab,Gitlab Ci,Gitlab Ci Runner,我的问题是,我创建的bash脚本在gitlab上出现了以下错误:“/bin/sh:eval:line 88:./deploy.sh:not found”。下面是我的示例脚本.gitlab ci.yml #!/bin/bash ssh -o StrictHostKeyChecking=no -i deploy.pem ec2-user@targetIPAddress << 'ENDSSH' // command goes here ENDSSH 我怀疑gitlab ci不支持ba
#!/bin/bash
ssh -o StrictHostKeyChecking=no -i deploy.pem ec2-user@targetIPAddress << 'ENDSSH'
// command goes here
ENDSSH
我怀疑gitlab ci不支持bash脚本
image: docker:latest
variables:
IMAGE_NAME: registry.gitlab.com/$PROJECT_OWNER/$PROJECT_NAME
DOCKER_DRIVER: overlay
services:
- docker:dind
stages:
- deploy
before_script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker pull $IMAGE_NAME:$CI_BUILD_REF_NAME || true
production-deploy:
stage: deploy
only:
- master@$PROJECT_OWNER/$PROJECT_NAME
script:
- echo "$PRODUCTION_DOCKER_FILE" > Dockerfile
- docker build --cache-from $IMAGE_NAME:$CI_BUILD_REF_NAME -t $IMAGE_NAME:$CI_BUILD_REF_NAME .
- docker push $IMAGE_NAME:$CI_BUILD_REF_NAME
- echo "$PEM_FILE" > deploy.pem
- echo "$PRODUCTION_DEPLOY" > deploy.sh
- chmod 600 deploy.pem
- chmod 700 deploy.sh
- ./deploy.sh
environment:
name: production
url: https://www.example.com
这也是我的部署.sh
#!/bin/bash
ssh -o StrictHostKeyChecking=no -i deploy.pem ec2-user@targetIPAddress << 'ENDSSH'
// command goes here
ENDSSH
#/bin/bash
ssh-o strichostkeychecking=no-i deploy.pem ec2-user@targetIPAddressdocker:latest
基于alpine linux,它非常简约,默认情况下没有安装太多。例如,ssh
不是现成的,因此如果您想使用ssh命令,需要先安装它。在脚本之前的中,添加:
- apk update && apk add openssh
这可能与您在Docker中使用Docker(Docker:dind)有关。您的deploy.sh正在请求/bin/bash作为该映像中不存在的脚本执行器
您可以使用Docker在计算机上进行本地测试:
docker run --rm -it docker:dind bash
它将报告一个错误。因此,将deploy.sh的第一行重写为
#!/bin/sh
修复后,您将遇到前面的答案是解决的问题:ssh也没有安装。你也需要解决这个问题 谢谢。通过添加bash
before_script:
- apk update && apk add bash
如果这仍然不适用于您,请告诉我。“不适用”不是一个有用的问题描述。请更新您的问题,以包括实际发生的情况和您预期会发生的情况。过度措辞“/bin/sh:eval:line 88:./deploy.sh:not found”,我发现了这个问题@vitr您能帮我解决吗?您可以尝试以-bash./deploy.sh
@1615903运行它。我发现了ssh:not found。怎么修这个?是的,这对我也有用。我试图运行的脚本需要使用bash来运行,但是bash不可用,所以它一直默认为sh
。在我的例子中,hashbang已经#/bin/sh
,我必须提到-sh./deploy.sh
,以使其正常工作。