Я пытаюсь использовать систему непрерывной интеграции, которую предлагает Gitlab CI, для наращивания навыков и автоматического развертывания моего репо после git push my local.
Но вот уже несколько недель я не могу найти решения, которые решил использовать.
Файлы:
- . /. Gitlab-ci.yml
- . / Deploy.sh
gitlab-ci.yml
image: ubuntu:latest
before_script:
- apt-get install -y
- apt-get update -y
stages:
- deploy
deploy_staging:
stage: deploy
script:
- echo "Deploy to staging server"
- expect ./deploy.sh
environment:
name: staging
url: my.site.com
only:
- master
deploy.sh
#!/usr/bin/expect -f
spawn ssh username@host "cd www && git pull https://Username:myPassword@gitlab.com/My/privaterepo.git"
expect "password:"
send "myPassword\n";
interact
Моя проблема в том, что у меня часто возникает ошибка, подобная этой:
- expect ./deploy.sh
/bin/bash: line 79: expect: command not found
У меня были другие ошибки при вводе файла sh из gitlab-ci.yml:
- sh ./deploy.sh ( or bash ./deploy.sh )
./deploy.sh: 6: ./deploy.sh: spawn: not found
./deploy.sh: 8: ./deploy.sh: expect: not found
./deploy.sh: 9: ./deploy.sh: send: not found
./deploy.sh: 11: ./deploy.sh: interact: not found
и когда в моем терминале моего компьютера я запускаю ожидаемую ./deploy.sh, развертывание работает правильно.
Я также пытался установить в before_script ожидаемый результат:
- apt-get update expect -y
Но у меня возник вопрос по одной посылке "Цдата", чтобы выбрать мою страну. но я не могу вмешиваться в сценарий.
Моя цель состоит в том, чтобы каждый git push моего локального компьютера, gitlab, запускал git pull и обновлял код на моем сайте preprod и prod затем (который я собираюсь затем заблокировать с помощью «when: manual» в другое задание).
У вас есть решение, которое поможет мне решить эту проблему, потому что я думаю, что это не займет много вещей, которые я не понимаю?
Спасибо!