Развертывание изменений CircleCI в Heroku - PullRequest
0 голосов
/ 18 сентября 2018

Я довольно новичок в Git и автоматизированных развертываниях и пытаюсь внедрить изменения, сделанные как часть моего CI, в Heroku.

Идея высокого уровня:

  1. Отправьте мой код в GitHub
  2. CircleCI забирает его и выполняет некоторые минимизации
  3. CircleCI выполняет некоторые тесты
  4. CircleCI развертывает мои файлы (включая изменения, которые я сделал для них) вHeroku

Все работает хорошо, кроме файлов, которые я получаю на Heroku, это файлы из Git, а не измененные / уменьшенные файлы.

Я думаю, проблема в том, что проблема в этом.в моем YAML:

... build steps

deploy:
  docker:
    - image: buildpack-deps:trusty
  steps:
    - checkout
    - run:
        name: Deploy to Heroku
        command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master

Однако я не совсем уверен, как его изменить.

  • Не плохо ли отправлять в Heroku напрямую измененные файлы?Должен ли я сначала отправить их в GitHub в специальной папке выпуска, а затем отправить их в Heroku?Как?
  • В моем YAML чего-то не хватает?

Полный справочник YAML:

version: 2
jobs:
build:
    docker:
    # https://circleci.com/docs/2.0/circleci-images/
    - image: circleci/node:10.10
    - image: circleci/postgres:10.5-alpine-postgis
        environment:
        POSTGRES_USER: myproject
        POSTGRES_DB: myproject

    working_directory: ~/repo

    steps:
    - checkout

    - restore_cache:
        keys:
        - v1-dependencies-{{ checksum "package.json" }}
        - v1-dependencies-

    - run: npm install

    ..........

    - save_cache:
        paths:
            - node_modules
        key: v1-dependencies-{{ checksum "package.json" }}

    - run:
        name: Unit Testing
        command: npm run test_unit

    - run:
        name: Build client files
        command: npm run build

    - run:
        name: API Testing
        command: |
            npm start &
            npm run test_api

deploy:
    docker:
    - image: buildpack-deps:trusty
    steps:
    - checkout
    - run:
        name: Deploy to Heroku
        command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master

workflows:
version: 2
build-deploy:
    jobs:
    - build
    - deploy:
        requires:
            - build
        filters:
            branches:
            only: master

1 Ответ

0 голосов
/ 18 сентября 2018

Ваш инструмент CI не должен создавать ваше приложение для Heroku.(Конечно, он может собрать его для запуска тестов.)

Heroku создаст ваше приложение самостоятельно.Нажмите на исходные файлы и дайте ему сделать свое дело.Используя пакет сборки Node.js, вы можете Heroku запустит ваш скрипт postinstall, если он предоставлен , который является хорошим местом для запуска вашей команды сборки:

"scripts": {
  "start": "node index.js",
  "test": "mocha",
  "postinstall": "npm rum build"
}

Запуск тестов против минимизированныхфайлы (по сравнению с незавершенными файлами) могут сделать вас более защищенными, но вы эффективно тестируете как инструмент минимизации, так и собственный код.В идеале вы должны использовать инструмент, который уже хорошо протестирован, и сфокусировать собственное тестирование на собственном коде.(Если вы по-прежнему предпочитаете работать с минимизированным кодом, это не принесет большого вреда.)

Если вы хотите убедиться, что тесты запускаются с точной копией кода, который у вас естьв Heroku (то есть, соберите его только один раз), рассмотрите возможность создания и развертывания приложения с помощью Docker-контейнера .

...