This page (revision-21) was last changed on 07-Feb-2024 18:37 by Dieter Käppel

This page was created on 22-Sep-2022 10:37 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
21 07-Feb-2024 18:37 8 KB Dieter Käppel to previous

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 changed one line
!!!Maven Build
!!!Java und NodeJS
Oft möchte man ein [NodeJS] Modul in ein Java-Projekt integrieren, beispielsweise mit dem Ziel einen Server für die Web-Applikation zur Verfügung zu stellen (Webpack serve etc. sind oft nicht die optimalen Produktivumgebungen).
!!Maven Build of NodeJS Module
At line 74 added 31 lines
!!Bestehendes NodeJS-Modul integrieren
Besser ist ein bestehendes NodeJS-Modul zu integrieren. NodeJS hat eine eigene Repository-Infrastruktur. Als Gateway gibt es das jnpm-maven-plugin:
{{{
<plugin>
<groupId>org.orienteer.jnpm</groupId>
<artifactId>jnpm-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<?m2e execute onConfiguration?>
<phase>generate-resources</phase>
<goals>
<goal>install</goal>
</goals>
<configuration>
<registryUrl>https://registry.npmjs.org/</registryUrl>
<strategy>ONE_DUMP</strategy>
<outputDirectory>${project.build.directory}/generated-resources/jnpm/</outputDirectory>
<pathPrefix>META-INF/resources</pathPrefix>
<serverId>npmjs</serverId>
<packages>
<package>hello-world-server</package>
</packages>
<useCache>false</useCache>
</configuration>
</execution>
</executions>
</plugin>
}}}
At line 76 changed one line
[nodejs/jenkins verwalten.png]
[NodeJS/jenkins verwalten.png]
At line 80 changed one line
[nodejs/nodejs plugin.png]
[NodeJS/nodejs plugin.png]
At line 84 changed one line
[nodejs/nodejs installationen.png]
[NodeJS/nodejs installationen.png]
At line 91 changed one line
[nodejs/jenkins build standard.png]
[NodeJS/jenkins build standard.png]
At line 96 changed one line
[nodejs/jenkins build pipeline.png]
[NodeJS/jenkins build pipeline.png]
{{{
pipeline {
agent any
stages {
stage('Checkout') {
steps {
script {
currentRevision = checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '',
excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false,
ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true,
credentialsId: 'dynarocks.com', depthOption: 'infinity', ignoreExternalsOption: true, local: '.',
remote: 'https://dynarocks.com/svn/com.intersult/trunk/com.intersult/internal/work/reactts-test']],
quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
}
stage('Install') {
steps {
nodejs(nodeJSInstallationName: 'NodeJS') {
sh 'npm install'
}
}
}
stage('Generate Sources') {
steps {
nodejs(nodeJSInstallationName: 'NodeJS') {
sh 'npm run generate'
}
}
}
stage('Build') {
steps {
nodejs(nodeJSInstallationName: 'NodeJS') {
sh 'npm run build'
}
}
}
}
}
}}}
!!!Jenkins Build mit Docker
Um Befehle auf Docker auszuführen, etwa Imgages Downloaden oder Container starten, is ein Zugang zu Docker erforderlich.
# Läuft der Jenkins auf dem Host-System, kann direkt auf /var/run/docker.sock zugegriffen werden
# Läuft Jenkins selbst als Docker Container kann dies durch ein Volume Mapping von /var/run/docker.sock erfolgen
# In anderen Fällen kann DOCKER_HOST im ENV gesetzt werden
Zunächst muss das Plugin "Docker Pipeline" installiert sein.
[NodeJS/jenkins docker pipeline.png]
In Jenkins verwalten -> Konfiguration der Hilfsprogramme wird das Plugin konfiguriert.
[NodeJS/jenkins docker config.png]
Zuletzt kann eine Pipeline wie folgt erzeugt werden:
{{{
pipeline {
agent {
docker {
image 'node:18.8.0-alpine3.16'
}
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}
}}}
[https://www.jenkins.io/doc/book/pipeline/docker/]
!!!Authentication
Generieren eines Passworts für die ~/.npmrc:
{{{
echo -n 'admin:admin123' | openssl base64
}}}
Die Zeile in .npmrc sieht dann so aus:
{{{
registry=[...]
_auth=YWRtaW46YWRtaW4xMjMNCg==
}}}
[https://help.sonatype.com/repomanager2/node-packaged-modules-and-npm-registries]
!!!Express
Alternativ zum Webpack Devserver gibt es noch den Express Server. Dieser kann auch verwendet werden, um eine Anwendung zu debuggen. Das erfolgt über die webpack-dev-middleware:
{{{
import express from "express";
import {createProxyMiddleware} from "http-proxy-middleware";
import webpack from "webpack";
import middleware from "webpack-dev-middleware";
import options from "./webpack.config";
const host = "localhost", port = 8090;
const server = express();
const compiler = webpack(options);
server.use("/", middleware(compiler));
server.use(createProxyMiddleware("/service/**", {
target: "http://localhost:8080"
}));
server.listen(port, () => {
console.log("Server listening at http://" + host + ":" + port + "/");
});
}}}
!!!Update Packages
Mit dem Tool npm-check-updates können NodeJS bzw. npm Packete upgedated werden:
{{{
npm install -g npm-check-updates
ncu --upgrade
npm install
}}}