Как заставить gitlab-ci найти мой файл развертывания? - PullRequest
0 голосов
/ 25 мая 2020

У меня есть сценарий для развертывания, но gitlab ci не нашел его, мой yml:

deploy:
  stage: deploy
  script:
    - ls
    - cd scripts
    - pwd
    - ls
    - chmod +x ./deploy.sh
    - ./deploy.sh
  environment:
    name: production
  only:
    - master

Результат этого в терминале:

$ ls
index.js
package-lock.json
package.json
scripts
$ cd scripts
$ pwd
/builds/project-0/scripts
$ ls
deploy.sh
$ chmod +x ./deploy.sh
$ ./deploy.sh
/bin/sh: eval: line 47: ./deploy.sh: not found
ERROR: Job failed: exit code 127
FATAL: exit code 127   

Как вы можете видите, файл есть с разрешения, но не работает: (

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

исправляю с помощью образа ubuntu и звоню bash

deploy:
  stage: deploy
  image: ubuntu
  script:
    - chmod +x ./scripts/deploy.sh
    - bash ./scripts/deploy.sh
  only:
    - master
0 голосов
/ 26 мая 2020

Я видел это раньше, и, скорее всего, базовое изображение, в котором выполняется задание, использует /bin/sh, а ваш скрипт запрашивает оболочку, которую не содержит базовый образ.

Есть ли в вашем сценарии deploy.sh следующий шебанг #!/bin/bash (или любая другая оболочка, отличная от sh)?

Чтобы решить вашу проблему, либо замените базовый образ на тот, который содержит оболочку, которую вы ищете, либо измените deploy.sh на #!/bin/sh, если ваш сценарий может работать в оболочке POSIX.

...