From adc65582ee88221537b2d2fef1ecd83f295bc326 Mon Sep 17 00:00:00 2001 From: Nick Allen Date: Tue, 22 Aug 2017 18:57:32 -0400 Subject: [PATCH 1/2] Packaging node deps in the RPMs --- .../packaging/docker/rpm-docker/Dockerfile | 4 ++++ .../packaging/docker/rpm-docker/SPECS/metron.spec | 14 +++++++++++--- .../packaging/docker/rpm-docker/build.sh | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/metron-deployment/packaging/docker/rpm-docker/Dockerfile b/metron-deployment/packaging/docker/rpm-docker/Dockerfile index 2fd25654b0..a2dae8e04b 100644 --- a/metron-deployment/packaging/docker/rpm-docker/Dockerfile +++ b/metron-deployment/packaging/docker/rpm-docker/Dockerfile @@ -27,3 +27,7 @@ RUN mv apache-maven-3.2.5 /opt/maven RUN ln -s /opt/maven/bin/mvn /usr/bin/mvn RUN yum -y install asciidoc rpm-build rpm2cpio tar unzip xmlto zip rpmlint && yum clean all WORKDIR /root + +# install node so that the node dependencies can be packaged into the RPMs +RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - +RUN yum -y install gcc-c++ make nodejs diff --git a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec index 94c7e05207..1ff2240fd0 100644 --- a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec +++ b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec @@ -17,7 +17,7 @@ %define timestamp %(date +%Y%m%d%H%M) %define version %{?_version}%{!?_version:UNKNOWN} %define full_version %{version}%{?_prerelease} -%define prerelease_fmt %{?_prerelease:.%{_prerelease}} +%define prerelease_fmt %{?_prerelease:.%{_prerelease}} %define vendor_version %{?_vendor_version}%{!?_vendor_version: UNKNOWN} %define url http://metron.apache.org/ %define base_name metron @@ -30,6 +30,8 @@ %define metron_root %{_prefix}/%{base_name} %define metron_home %{metron_root}/%{full_version} +%define _binaries_in_noarch_packages_terminate_build 0 + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Name: %{base_name} @@ -91,6 +93,8 @@ tar -xzf %{SOURCE11} -C %{buildroot}%{metron_home} install %{buildroot}%{metron_home}/bin/metron-rest %{buildroot}/etc/init.d/ install %{buildroot}%{metron_home}/bin/metron-management-ui %{buildroot}/etc/init.d/ +npm install --prefix="%{buildroot}%{metron_home}/web/expressjs" --only=production + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %package common @@ -389,6 +393,8 @@ This package installs the Metron Management UI %{metron_home} %dir %{metron_home}/bin %dir %{metron_home}/web %dir %{metron_home}/web/expressjs +%dir %{metron_home}/web/expressjs/node_modules +%dir %{metron_home}/web/expressjs/node_modules/.bin %dir %{metron_home}/web/management-ui %dir %{metron_home}/web/management-ui/assets %dir %{metron_home}/web/management-ui/assets/ace @@ -399,6 +405,8 @@ This package installs the Metron Management UI %{metron_home} %dir %{metron_home}/web/management-ui/license %{metron_home}/bin/metron-management-ui /etc/init.d/metron-management-ui +%attr(0755,root,root) %{metron_home}/web/expressjs/node_modules/* +%attr(0755,root,root) %{metron_home}/web/expressjs/node_modules/.bin/* %attr(0755,root,root) %{metron_home}/web/expressjs/server.js %attr(0644,root,root) %{metron_home}/web/expressjs/package.json %attr(0644,root,root) %{metron_home}/web/management-ui/favicon.ico @@ -428,7 +436,7 @@ chkconfig --del metron-management-ui %changelog * Thu Jun 29 2017 Apache Metron - 0.4.1 -- Add Metron Management jar +- Add Metron Management jar * Thu May 15 2017 Apache Metron - 0.4.0 - Added Management UI * Tue May 9 2017 Apache Metron - 0.4.0 @@ -442,7 +450,7 @@ chkconfig --del metron-management-ui * Thu Jan 19 2017 Justin Leet - 0.3.1 - Replace GeoIP files with new implementation * Thu Nov 03 2016 David Lyle - 0.2.1 -- Add ASA parser/enrichment configuration files +- Add ASA parser/enrichment configuration files * Thu Jul 21 2016 Michael Miklavcic - 0.2.1 - Remove parser flux files - Add new enrichment files diff --git a/metron-deployment/packaging/docker/rpm-docker/build.sh b/metron-deployment/packaging/docker/rpm-docker/build.sh index 23ed90d413..dd5149d65d 100755 --- a/metron-deployment/packaging/docker/rpm-docker/build.sh +++ b/metron-deployment/packaging/docker/rpm-docker/build.sh @@ -36,7 +36,7 @@ if [ $? -ne 0 ] && [ $OWNER_UID -ne 0 ]; then fi rm -rf SRPMS/ RPMS/ && \ -rpmbuild -v -ba --define "_topdir $(pwd)" --define "_version ${VERSION}" --define "_prerelease ${PRERELEASE}" SPECS/metron.spec && \ +QA_SKIP_BUILD_ROOT=1 rpmbuild -v -ba --define "_topdir $(pwd)" --define "_version ${VERSION}" --define "_prerelease ${PRERELEASE}" SPECS/metron.spec && \ rpmlint -i SPECS/metron.spec RPMS/*/metron* SRPMS/metron # Ensure original user permissions are maintained after build From edb660f0de1e3de6751d98b7fa323b0df04b60c9 Mon Sep 17 00:00:00 2001 From: Nick Allen Date: Wed, 23 Aug 2017 11:47:31 -0400 Subject: [PATCH 2/2] Updates --- .../CURRENT/package/scripts/management_ui_master.py | 1 - .../packaging/docker/rpm-docker/SPECS/metron.spec | 1 + metron-interface/metron-config/README.md | 10 ++-------- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py index e858ed3a1c..54e91aa836 100644 --- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py +++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py @@ -38,7 +38,6 @@ def install(self, env): from params import params env.set_params(params) self.install_packages(env) - Execute('npm --prefix ' + params.metron_home + '/web/expressjs/ install') def configure(self, env, upgrade_type=None, config_dir=None): print 'configure managment_ui' diff --git a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec index 1ff2240fd0..1d267ebbf2 100644 --- a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec +++ b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec @@ -93,6 +93,7 @@ tar -xzf %{SOURCE11} -C %{buildroot}%{metron_home} install %{buildroot}%{metron_home}/bin/metron-rest %{buildroot}/etc/init.d/ install %{buildroot}%{metron_home}/bin/metron-management-ui %{buildroot}/etc/init.d/ +# allows node dependencies to be packaged in the RPMs npm install --prefix="%{buildroot}%{metron_home}/web/expressjs" --only=production # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/metron-interface/metron-config/README.md b/metron-interface/metron-config/README.md index 257fabaac6..f0a69e3234 100644 --- a/metron-interface/metron-config/README.md +++ b/metron-interface/metron-config/README.md @@ -49,12 +49,6 @@ This module provides a user interface for management functions in Metron. rpm -ih metron-config-$METRON_VERSION-*.noarch.rpm ``` -1. Install the [Express](https://expressjs.com/) web framework from the `package.json` file in `$METRON_HOME/web/expressjs`: - - ``` - npm --prefix $METRON_HOME/web/expressjs/ install - ``` - ## Configuration The Managment UI is configured in the `$METRON_HOME/config/management_ui.yml` file. Create this file and set the values to match your environment: @@ -87,7 +81,7 @@ The Management UI can also be started in development mode. This allows changes cd metron-interface/metron-config npm install ``` - + 1. Start the application: ``` @@ -113,4 +107,4 @@ The application will be available at http://localhost:4200/. The REST applicati ## License -This projects bundles Font Awesome which is available under the SIL Open Font License. See http://fontawesome.io/license/ for more details. \ No newline at end of file +This projects bundles Font Awesome which is available under the SIL Open Font License. See http://fontawesome.io/license/ for more details.