Самостоятельное автоматическое развертывание gitlab на сервере aws ec2 - PullRequest
0 голосов
/ 13 ноября 2018

Я спрашиваю об этом, потому что я не могу найти работающий пример, похожий на мой случай.Я сам разместил Gitlab на машине AWS EC2 (назовем это «машиной 1», и я хочу настроить автоматическое развертывание на моем удаленном сервере AWS EC2, называемом «машиной 2»).

Показывает установку моего Gitlabs (машина1):

gitlab-ce 10.4.4 gitlab-config-template 10.4.4
gitlab-cookbooks 10.4.4
gitlab-ctl 10.4.4
gitlab-healthcheck
gitlab-monitor
gitlab-pages
gitlab-psql
gitlab-rails
gitlab-scripts
gitlab-selinux
оболочка gitlab
рабочая лошадка gitlab

Я следую инструкциям gitlab по настройке CI & CD для документации gitlab в моем проекте. Я хочу настроить автоматическое развертывание. Следующие шаги следующие:

1. У меня есть бегун, следующий за документом gitlabs, не так много, чтобы показатьздесь, кроме (машина 2):

 url: https://url.to.my.compute.amazonaws.com
 Token : token given by gitlab
 Executor: shell
 Tags:  build  deploy  qa  stage

2.Я создал свой файл .gitlab-ci.yml (в корневом проекте) с (даже при создании двух версий yml-файла, которые я пробовал):

yml 2:

  stages:
   - build
   - deploy

  build:
   stage: build
   script: echo "Building the app"

  deploy_staging:
    stage: deploy
    script:
    - echo "Deploy to staging server"

yml 1:

 #develop stage
deploy:   
   stage: deploy   
   before_script: 
   #generate ssh key   
     - mkdir -p ~/.ssh     
     - echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa     
     - chmod 600 ~/.ssh/id_rsa        
   script:     
     - bash .gitlab-deploy.sh   
   environment:     
     name: develop     
     url: https://my.domain.com
   when: manual

3. Я установил two СЕКРЕТНЫЕ ПЕРЕМЕННЫЕ

SSH_PRIVATE_KEY и DEPLOY_SERVERS (с секретным ключом и ips соответственно)

4.Я добавил файл deploy.sh (в корне моего проекта)

#!/bin/bash
#Get servers list
set -f
string=$DEPLOY_SERVERS
array=(${string//,/ })
#Iterate servers for deploy and pull last commit
for i in "${!array[@]}"do    
  echo "Deploy project on server ${array[i]}"    
  ssh ubuntu@${array[i]} "cd /var/www/html/app && git pull origin develop"
done

Мой gitlab-runner показывает мне следующее: gitlab-runner verify ВНИМАНИЕ: Запуск в пользовательском режиме.
ПРЕДУПРЕЖДЕНИЕ: В пользовательском режиме требуется, чтобы вы вручную запускали сборку: WARNING: $ gitlab-runner run
ПРЕДУПРЕЖДЕНИЕ: используйте sudo для системного режима:
ПРЕДУПРЕЖДЕНИЕ: $ sudo gitlab-runner ...

И Запуск от имени sudo, как сказано, показывает моего бегуна:

 Verifying runner... is alive                        runner=
 Verifying runner... is alive                        runner=
 Verifying runner... is alive                        runner=

, новсе еще в gitlabs пользовательский интерфейс получает теги "STUCK", и работа говорит мне "работа застряла, проверьте бегунов"

Вопросы:

  1. Это все шагиследить?

  2. Вы видите что-нибудь (или процесс), который я пропускаю во всей этой конфигурации?

  3. В моем удаленном gitlab у меня есть права доступа "master",это то, что мне нужно для запуска бегуна?

  4. как мне отладить на этом этапе (я использую gitlab-runner --debug verify), что все, что я могу?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 19 декабря 2018

Когда бегун "специфичен", этапы должны иметь "тег", такой как:

stages:
- build
- deploy

 build:
  stage: build
  script: echo "Building the app"

 deploy_staging:
   stage: deploy
   script:
   - echo "Deploy to staging server"
   tags:
     - deploy
...