Битбакетный конвейер для сборки dist и push build с git для развертывания - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь собрать свое приложение React в конвейер Bitbucket, а затем развернуть его с помощью git push на моем производственном сервере.

Это прекрасно работает, когда я помещаю все в один шаг, например:

image: node

clone:
  depth: full
pipelines:
  default:
    - step:
        name: Build app
        caches:
          - node
        script:
          - yarn
          - yarn build
          - git config user.email "<email>"
          - git config user.name "<name>"
          - git config remote.origin.url <remote ssh>
          - git add .
          - git commit -m "Add build"
          - git push

Однако я хотел бы разделить процесс сборки и процесс развертывания на отдельные этапы.Позже я также добавлю тесты на этапе сборки.

Это то, что я пробовал:

image: node

clone:
  depth: full
pipelines:
  default:
    - step:
        name: Build app
        caches:
          - node
        script:
          - yarn
          - yarn build
    - step:
        name: Deploy to production
        deployment: production
        script:
          - git config user.email "<email>"
          - git config user.name "<name>"
          - git config remote.origin.url <remote ssh>
          - git add .
          - git commit -m "Add build"
          - git push

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

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

У кого-нибудь есть совет?

1 Ответ

0 голосов
/ 19 октября 2018

Выполненные команды и их результирующие файлы не сохраняются между шагами, поэтому вам нужно будет использовать артефакты , чтобы файлы, созданные пряжей на первом шаге, оставалисьдоступно на втором этапе.Поэтому, если ваша пряжа, например, записывает файлы в папку yarn-output в корне проекта, ваш конвейер станет:

image: node

clone:
  depth: full
pipelines:
  default:
    - step:
        name: Build app
        caches:
          - node
        script:
          - yarn
          - yarn build
        artifacts:
          - yarn-output/**
    - step:
        name: Deploy to production
        deployment: production
        script:
          - git config user.email "<email>"
          - git config user.name "<name>"
          - git config remote.origin.url <remote ssh>
          - git add .
          - git commit -m "Add build"
          - git push
...