CircleCI 2.0: создание каталога для развертывания scp / rsync - PullRequest
0 голосов
/ 22 мая 2018

Re: CircleCI 2.0: Сборка каталога для развертывания scp

Я запутался в том, что касается исходной папки, используемой для развертывания на другом сервере через SSH (scp, rsync и т. Д.).Я пробовал рабочий_каталог из моей сборки, я пробовал ~ / repo_name и несколько других вариантов, но безуспешно.

Я просто пытаюсь собрать демонстрацию circleci-demo-php-laravel в качестве теста.

https://github.com/dmgig/circleci-demo-php-laravel/blob/circleci-2.0/.circleci/config.yml

Спасибо за любую помощь.

Вот шаг развертывания, на котором я зависаю.Я перепробовал все - установив рабочий_каталог в сборке и развертывании, используя переменную CIRCLE_WORKING_DIRECTORY env, которая создается при раскрутке машины развертывания.Я в полной растерянности.

run:
name: Deploy Over SSH
command: scp -r {WHAT_IS_THE_BUILD_DIR} serveradmin%mydomain.org@mydomain.org:~/domains/circleci.mydomain.org/html/

ОБНОВЛЕНИЕ

Несмотря на то, что я разобрался с предложенным ниже решением, объединяющим развертывание под сборкой, я все еще смущен отношениями между сборкой и развертываниемкогда они находятся под отдельной работой.Если кто-то может это прояснить, было бы здорово.

1 Ответ

0 голосов
/ 30 мая 2018

То, что у меня было неправильно, которое я выяснил примерно через 5 минут после отправки награды, было разницей в моих build и deploy шагах.

Неправильно

jobs:
  build:
    docker:
      - image: circleci/php:7.1-node-browsers
...

  deploy:
    machine:
      enabled: true

Правильно

jobs:
  build:
    docker:
      - image: circleci/php:7.1-node-browsers
...

  deploy:
    docker:
      - image: circleci/php:7.1-node-browsers

FINAL В результате я получил супер простую сборку и развертывание через rsync.

Я фактически полностью удалил «рабочий процесс» с отдельными разделами сборки и развертывания - для меня это было бесполезно.Я мог сделать все на этапе сборки.

Это очень простая установка, которая просто проверяет репозиторий, устанавливает требования композитора, а затем передает все на сторонний сервер (в моем случае, MediaTemple)по rsync.

Единственным другим шагом было создание и установка ключа SSH в проект CircleCI (для этого есть много учебников).

# PHP CircleCI 2.0 configuration file
#
version: 2

jobs:
  build:
    docker:
      - image: circleci/php:7.1-node-browsers
    working_directory: ~/beta
    steps:
      - checkout
      - run: php composer.phar install
      - run: pwd
      - deploy:
          name: Deploy Over SSH
          command: rsync -e "ssh -o StrictHostKeyChecking=no" -arvc --exclude .git ~/beta/ myuser@mysite.org:~/domains/mysite.org/html/beta
...