WedX - журнал о программировании и компьютерных науках

Запустите сборку Grunt перед сборкой OpenShift

Моя задача grunt build создает задачу /dist/, от которой зависит мой проект. Я не хочу включать встроенный файл в свой репозиторий. Я бы предпочел использовать Jenkins, чтобы обеспечить непрерывную интеграцию в моем проекте. Это то, что у меня есть в моем .openshift/action_hooks/build, и я не уверен, почему оно не работает:

echo " >>>>>>>>> Building with grunt..."
grunt build
echo " >>>>>>>>> Finished building with grunt..."

Я знаю, что он не работает, потому что я не вижу этих эхо-строк в журнале сборки Jenkins или журнале приложений (rhc tail <app-name>).

Кроме того, когда я подключаюсь к серверу по ssh и пытаюсь запустить grunt build вручную, он не может найти команду grunt, поэтому я задаюсь вопросом, возможно ли это...

Должен ли я просто включать встроенные файлы в свое репо? Если да, то когда OpenShift это исправит? :)

Дайте мне знать, если я делаю что-то не так. Спасибо!


Ответы:


1

Основной проблемой здесь является openshift-origin-cartridge-nodejs и, кроме того, npm_global_module_list не включает grunt/grunt-cli в глобальные модули npm.

Я открыл openshift/origin-server/issues/4069 как RFE, чтобы получить это в картридже по умолчанию.

Тем временем я работаю над engineersamuel/openshift-origin-cartridge-nodejs, который включает поддержку Bower и Grunt.

Мой картридж работает grunt prod, если найден файл Gruntfile.js. По умолчанию grunt не находится на пути, это легко исправить, поставив перед командой префикс node_modules.

# If there is a grunt file, run $ grunt prod
if [ -f "${OPENSHIFT_REPO_DIR}"/Gruntfile.js ]; then
    (cd "${OPENSHIFT_REPO_DIR}"; node_modules/grunt-cli/bin/grunt prod)
fi

./bin/control также проверяет наличие файла bower.json и устанавливает соответствующие пакеты.

Вы можете быстро и легко протестировать этот нестандартный картридж с отражателем картриджа с помощью следующей команды:

rhc create-app nodejstest "https://cartreflect-claytondev.rhcloud.com/reflect?github=engineersamuel/openshift-origin-cartridge-nodejs"

01.11.2013

2

Хотя это старый вопрос, я только что нашел ответ на этот актуальный вопрос.

Во-первых, теперь вы можете добавить grunt-cli к своим зависимостям (npm install grunt-cli --save), а Openshift автоматически добавит в путь те, которые обычно устанавливаются с использованием флага -g.

С сайта Openshift:

Утилиты командной строки, которые обычно устанавливаются с использованием флага -g или --global, будут автоматически добавлены в системный $PATH, если они включены в разделы dependencies или devDependencies файла package.json проекта.

Внутри .openshift/action_hooks/build вам нужно сначала сбросить домашний каталог, чтобы он стал каталогом репо, затем запустить grunt build, а затем переключить домашний каталог обратно на исходный.

#!/bin/bash

OLD_HOME=$HOME
cd $OPENSHIFT_REPO_DIR
export HOME=$OPENSHIFT_REPO_DIR

grunt build

export HOME=$OLD_HOME

Теперь grunt сможет найти ваш Gruntfile.js и запустить любые необходимые вам задачи.

07.03.2015

3

Одна из возможностей — использовать фазу после установки для выполнения вашей основной задачи. Во-первых, установите grunt-cli так, как вы не должны:

npm install grunt-cli --save-dev

Затем обновите ваш package.json, чтобы выполнить grunt prod на этапе после установки:

{
  ...
  "scripts" : {
    ...
    "postinstall": "node_modules/.bin/grunt prod",
    ...
  }
  ...
}

Теперь, когда вы выполняете развертывание в OpenShift и после установки ваших зависимостей, ваша задача grunt должна выполняться.

Это решение не то, что я бы назвал идеальным, но оно должно выполнить свою работу, чтобы вы могли что-то запустить и запустить, пока вы создаете собственный картридж, как это сделал @Samuel.

19.05.2014
  • Это должно быть "postinstall": "export HOME=app-root/runtime/repo; ./node_modules/grunt-cli/bin/grunt prod" 18.09.2014

  • 4

    На сервере Jenkins от имени root установите npm с Node.js.

    В Centos 6 включите репозиторий EPEL и запустите

    yum install npm
    

    Другие способы и серверы через: https://serverfault.com/questions/299288/how-do-you-install-node-js-on-centos

    Затем запустите:

    npm install grunt
    

    После этого перезапустите Jenkins, чтобы он правильно определял пути ворчания при выполнении заданий.

    20.10.2013
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

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

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]