<workflowRun _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by younex1</shortDescription></cause></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>1</buildNumber><marked><SHA1>091770a6c5138113b51582d5bd5e86c607cbe262</SHA1><branch><SHA1>091770a6c5138113b51582d5bd5e86c607cbe262</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>091770a6c5138113b51582d5bd5e86c607cbe262</SHA1><branch><SHA1>091770a6c5138113b51582d5bd5e86c607cbe262</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>091770a6c5138113b51582d5bd5e86c607cbe262</SHA1><branch><SHA1>091770a6c5138113b51582d5bd5e86c607cbe262</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/blut24-landing.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'><environment><GIT_SHA>091770a</GIT_SHA><RELEASE_DIR>/var/www/blut24.com/web/releases/1-091770a</RELEASE_DIR><RELEASE_ID>1-091770a</RELEASE_ID></environment></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://jenkins.younex.de/job/blut24-landing/1/artifact</artifactsUrl><changesUrl>https://jenkins.younex.de/job/blut24-landing/changes</changesUrl><displayUrl>https://jenkins.younex.de/job/blut24-landing/1/</displayUrl><testsUrl>https://jenkins.younex.de/job/blut24-landing/1/testReport</testsUrl></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'><restartEnabled>false</restartEnabled><restartableStage>Checkout</restartableStage><restartableStage>Guard: main only</restartableStage><restartableStage>Ship source to target</restartableStage><restartableStage>Build, health-check and swap</restartableStage><restartableStage>Smoke test</restartableStage></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'><node _class='org.jenkinsci.plugins.workflow.graph.FlowStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.graph.FlowEndNode'></node></action><action></action><action></action><action></action><building>false</building><displayName>#1 091770a</displayName><duration>30254</duration><estimatedDuration>28038</estimatedDuration><fullDisplayName>blut24-landing #1 091770a</fullDisplayName><id>1</id><keepLog>false</keepLog><number>1</number><queueId>5439</queueId><result>SUCCESS</result><timestamp>1785192514932</timestamp><url>https://jenkins.younex.de/job/blut24-landing/1/</url><inProgress>false</inProgress><nextBuild><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by younex1</shortDescription></cause><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by younex1</shortDescription></cause><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>2</buildNumber><marked><SHA1>679906e5db227bfa0d8a3ca5800418269ab474e8</SHA1><branch><SHA1>679906e5db227bfa0d8a3ca5800418269ab474e8</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>679906e5db227bfa0d8a3ca5800418269ab474e8</SHA1><branch><SHA1>679906e5db227bfa0d8a3ca5800418269ab474e8</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>679906e5db227bfa0d8a3ca5800418269ab474e8</SHA1><branch><SHA1>679906e5db227bfa0d8a3ca5800418269ab474e8</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/blut24-landing.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><action></action><building>false</building><displayName>#2 679906e</displayName><duration>32750</duration><estimatedDuration>28038</estimatedDuration><fullDisplayName>blut24-landing #2 679906e</fullDisplayName><id>2</id><keepLog>false</keepLog><number>2</number><queueId>5442</queueId><result>SUCCESS</result><timestamp>1785218932906</timestamp><url>https://jenkins.younex.de/job/blut24-landing/2/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>deploy/deploy.sh</affectedPath><affectedPath>deploy/bootstrap-server.sh</affectedPath><affectedPath>deploy/ecosystem.config.cjs</affectedPath><commitId>679906e5db227bfa0d8a3ca5800418269ab474e8</commitId><timestamp>1785218244000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@logyou.de</authorEmail><comment>deploy: pin Node v22.22.3, self-heal the install, realign bootstrap to ISPConfig

The first Jenkins build logged EBADENGINE warnings: several transitive deps
(@babel/*, undici) require Node ^22.18 / &gt;=22.19 while the pin was v22.14.0.
Bumped to v22.22.3 — same NODE_MODULE_VERSION 127, so the better-sqlite3 native
build stays compatible and no rebuild-from-scratch is forced.

deploy.sh now runs `nvm install` rather than `nvm use`, so bumping the pin in git
is sufficient; previously a new version would have failed the deploy outright with
"N/A: version not yet installed". It also ensures pm2 exists for that Node build.

bootstrap-server.sh still carried the pre-ISPConfig layout and, worse, would have
written a standalone nginx vhost with the same server_name as the ISPConfig-generated
one - a collision that ISPConfig would regenerate away. It now creates the real
layout (code in the docroot, secrets and SQLite in the site's private/ dir) and only
REPORTS on the proxy block instead of fighting the panel for ownership.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-28 07:57:24 +0200</date><id>679906e5db227bfa0d8a3ca5800418269ab474e8</id><msg>deploy: pin Node v22.22.3, self-heal the install, realign bootstrap to ISPConfig</msg><path><editType>edit</editType><file>deploy/deploy.sh</file></path><path><editType>edit</editType><file>deploy/bootstrap-server.sh</file></path><path><editType>edit</editType><file>deploy/ecosystem.config.cjs</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit><inProgress>false</inProgress><nextBuild><number>3</number><url>https://jenkins.younex.de/job/blut24-landing/3/</url></nextBuild><previousBuild><number>1</number><url>https://jenkins.younex.de/job/blut24-landing/1/</url></previousBuild></nextBuild></workflowRun>