Bash ./deploy.sh不在gitlab ci上工作

Bash ./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

我的问题是,我创建的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不支持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@targetIPAddress
docker: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
,以使其正常工作。