热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

./deploy.sh没有在gitlabci上工作

如何解决《./deploy.sh没有在gitlabci上工作》经验,为你挑选了2个好方法。

我的问题是bash脚本我创建了这个错误"/ bin/sh的:EVAL:行88:./deploy.sh:未找到"上gitlab.下面是我的示例脚本.gitlab-ci.yml.

我怀疑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

这也是我的deploy.sh.

#!/bin/bash

ssh -o StrictHostKeyChecking=no -i deploy.pem ec2-user@targetIPAddress <<'ENDSSH'
 // command goes here
ENDSSH

我想要的是在docker push之后执行deploy.sh但不幸的是有关于/ bin/bash thingy的错误.

我真的需要你的帮助.如果你能解决我关于gitlab的问题,我会很感激ci bash脚本得到错误"/ bin/sh:eval:第88行: ./ deploy.sh:not found".



1> 1615903..:

docker:latest是基于alpine linux的,非常简约,默认情况下安装不多.例如,ssh开箱即用,所以如果你想使用ssh命令,你需要先安装它.在你的before_script,添加:

- apk update && apk add openssh



2> 小智..:

这可能与您使用Docker-in-Docker(docker:dind)的事实有关.您的deploy.sh正在请求/ bin/bash作为该映像中不存在的脚本执行程序.

您可以使用Docker在计算机上本地测试:

docker run --rm -it docker:dind bash

它会报告错误.所以重写deploy.sh的第一行

#!/bin/sh

修复之后,您将遇到上一个答案正在解决的问题:ssh也未安装.你也需要解决这个问题!


推荐阅读
author-avatar
西瓜246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有