Подтвердить что ты не робот

Разрешение CircleCI не работает bash script

У меня есть файл circle.yml, например:

dependencies:
  override:
    - meteor || curl https://install.meteor.com | /bin/sh

deployment:
  production:
    branch: "master"
    commands:
      - ./deploy.sh

Когда я нажимаю на Github, я получаю сообщение об ошибке:

/home/ubuntu/myproject/deploy.sh returned exit code 126

bash: line 1: /home/ubuntu/myproject/deploy.sh: Permission denied Action failed: /home/ubuntu/myproject/deploy.sh

Когда я запускаю команды, которые живут внутри deploy.sh вне файла (под commands), все работает нормально.

Все, что находится в файле circle.yml, похоже, соответствует примерам в CircleCI docs. Что я делаю неправильно?

4b9b3361

Ответ 1

Несколько возможных проблем:

  • deploy.sh не может быть помечен как исполняемый файл (chmod +x deploy.sh исправить это)
  • Первая строка deploy.sh может не быть запущенной оболочкой...

Если первое не работает, можете ли мы увидеть содержимое deploy.sh?

Ответ 2

У меня была такая же проблема. Я добавил sh в начало раздела моих команд, чтобы заставить его работать.

deployment:
  production:
    branch: "master"
    commands:
      - sh ./deploy.sh

Надеюсь, это исправление спасет всех, кто-то в будущем.

Ответ 3

Как сообщает @palfrey, script, вероятно, не помечен как исполняемый файл, и иногда кажется, что он помечен как неправильный при развертывании, даже если вы ранее запускали chmod +x на своем script на вашем локальном компьютере. (Почему? Я не знаю. Если кто-то действительно просветит меня!)

Вот общая команда, используемая для обеспечения того, чтобы ваши скрипты всегда были помечены как исполняемые. Предполагается, что все они расположены в каталоге /home/ubuntu/${CIRCLE_PROJECT_REPONAME}/scripts, и все имеют расширение .sh. Если ваш каталог отличается (другими), отредактируйте его вместо этого.

Так как все мои скрипты source, общий script (shared.sh) в верхней части каждого script, вызываемый circle.yml, я добавляю следующий код до shared.sh, который гарантирует, что все сценарии отмечены как исполняемые:

SCRIPTS="/home/ubuntu/${CIRCLE_PROJECT_REPONAME}/scripts"
find "${SCRIPTS}" | grep "\.sh$" | xargs chmod +x

Работает как шарм.: -)