underpost 2.99.5 → 2.99.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ghpkg.ci.yml +10 -25
- package/.github/workflows/npmpkg.ci.yml +13 -2
- package/CHANGELOG.md +496 -0
- package/README.md +4 -4
- package/baremetal/commission-workflows.json +43 -6
- package/bin/deploy.js +13 -0
- package/cli.md +84 -42
- package/examples/static-page/README.md +80 -13
- package/jsdoc.json +26 -5
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +47 -0
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +47 -0
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/dd-test-development/deployment.yaml +2 -2
- package/package.json +2 -4
- package/scripts/maas-setup.sh +13 -9
- package/scripts/rocky-kickstart.sh +294 -0
- package/src/cli/baremetal.js +237 -555
- package/src/cli/cloud-init.js +27 -45
- package/src/cli/index.js +52 -6
- package/src/cli/kickstart.js +149 -0
- package/src/cli/repository.js +166 -13
- package/src/cli/run.js +26 -19
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +27 -1
- package/src/cli/system.js +332 -0
- package/src/client/components/core/Docs.js +22 -3
- package/src/db/DataBaseProvider.js +3 -3
- package/src/db/mariadb/MariaDB.js +3 -3
- package/src/db/mongo/MongooseDB.js +3 -3
- package/src/index.js +28 -5
- package/src/mailer/EmailRender.js +3 -3
- package/src/mailer/MailerProvider.js +4 -4
- package/src/server/backup.js +23 -5
- package/src/server/client-build-docs.js +29 -3
- package/src/server/conf.js +6 -27
- package/src/server/cron.js +354 -135
- package/src/server/dns.js +2 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"isoUrl": "https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.3-live-server-arm64.iso",
|
|
7
7
|
"tftpPrefix": "rpi4mb",
|
|
8
8
|
"bootstrapHttpServerPort": 8888,
|
|
9
|
-
"menuentryStr": "UNDERPOST.NET UEFI/GRUB/MAAS RPi4 ISO-RAM commissioning (ARM64)",
|
|
9
|
+
"menuentryStr": "UNDERPOST.NET UEFI/GRUB/MAAS RPi4 ISO-RAM Ubuntu 24.04 ephemeral commissioning (ARM64)",
|
|
10
10
|
"networkInterfaceName": "enabcm6e4ei0",
|
|
11
11
|
"chronyc": {
|
|
12
12
|
"timezone": "America/Santiago",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"architecture": "arm64",
|
|
36
36
|
"tftpPrefix": "rpi4mb",
|
|
37
37
|
"bootstrapHttpServerPort": 8888,
|
|
38
|
-
"menuentryStr": "UNDERPOST.NET UEFI/GRUB/MAAS RPi4 CHROOT commissioning (ARM64)",
|
|
38
|
+
"menuentryStr": "UNDERPOST.NET UEFI/GRUB/MAAS RPi4 CHROOT Ubuntu 24.04 ephemeral commissioning (ARM64)",
|
|
39
39
|
"networkInterfaceName": "enabcm6e4ei0",
|
|
40
40
|
"firmwares": [
|
|
41
41
|
{
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"isoUrl": "https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.3-live-server-arm64.iso",
|
|
72
72
|
"tftpPrefix": "rpi4mb",
|
|
73
73
|
"bootstrapHttpServerPort": 8888,
|
|
74
|
-
"menuentryStr": "UNDERPOST.NET UEFI/GRUB/MAAS RPi4 ISO-NFS commissioning (ARM64)",
|
|
74
|
+
"menuentryStr": "UNDERPOST.NET UEFI/GRUB/MAAS RPi4 ISO-NFS Ubuntu 24.04 ephemeral commissioning (ARM64)",
|
|
75
75
|
"networkInterfaceName": "enabcm6e4ei0",
|
|
76
76
|
"chronyc": {
|
|
77
77
|
"timezone": "America/Santiago",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"architecture": "arm64",
|
|
101
101
|
"tftpPrefix": "rpi4mb",
|
|
102
102
|
"bootstrapHttpServerPort": 8888,
|
|
103
|
-
"menuentryStr": "UNDERPOST.NET
|
|
103
|
+
"menuentryStr": "UNDERPOST.NET Container CHROOT Rocky Linux 9 ephemeral commissioning (ARM64)",
|
|
104
104
|
"networkInterfaceName": "eth0",
|
|
105
105
|
"firmwares": [
|
|
106
106
|
{
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"isoUrl": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04.3-live-server-amd64.iso",
|
|
130
130
|
"tftpPrefix": "envy",
|
|
131
131
|
"bootstrapHttpServerPort": 8888,
|
|
132
|
-
"menuentryStr": "UNDERPOST.NET UEFI/ISO-IPXE/MAAS hp-envy ISO-NFS commissioning (AMD64)",
|
|
132
|
+
"menuentryStr": "UNDERPOST.NET UEFI/ISO-IPXE/MAAS hp-envy ISO-NFS Ubuntu 24.04 ephemeral commissioning (AMD64)",
|
|
133
133
|
"networkInterfaceName": "eth0",
|
|
134
134
|
"chronyc": {
|
|
135
135
|
"timezone": "America/Santiago",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"isoUrl": "https://releases.ubuntu.com/releases/24.04/ubuntu-24.04.3-live-server-amd64.iso",
|
|
154
154
|
"tftpPrefix": "envy",
|
|
155
155
|
"bootstrapHttpServerPort": 8888,
|
|
156
|
-
"menuentryStr": "UNDERPOST.NET UEFI/ISO-IPXE/MAAS hp-envy ISO-RAM commissioning (AMD64)",
|
|
156
|
+
"menuentryStr": "UNDERPOST.NET UEFI/ISO-IPXE/MAAS hp-envy ISO-RAM Ubuntu 24.04 ephemeral commissioning (AMD64)",
|
|
157
157
|
"networkInterfaceName": "eth0",
|
|
158
158
|
"chronyc": {
|
|
159
159
|
"timezone": "America/Santiago",
|
|
@@ -169,5 +169,42 @@
|
|
|
169
169
|
"keyboard": {
|
|
170
170
|
"layout": "es"
|
|
171
171
|
}
|
|
172
|
+
},
|
|
173
|
+
"hp-envy-iso-ram-rocky9": {
|
|
174
|
+
"type": "iso-ram",
|
|
175
|
+
"osIdLike": "rhel centos fedora",
|
|
176
|
+
"architecture": "amd64",
|
|
177
|
+
"isoUrl": "https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9-latest-x86_64-boot.iso",
|
|
178
|
+
"tftpPrefix": "envy-rocky9",
|
|
179
|
+
"bootstrapHttpServerPort": 8888,
|
|
180
|
+
"menuentryStr": "UNDERPOST.NET UEFI/ISO-IPXE/KICKSTART-ANACONDA hp-envy ISO-RAM Rocky Linux 9 ephemeral commissioning (AMD64)",
|
|
181
|
+
"networkInterfaceName": "eth0",
|
|
182
|
+
"chronyc": {
|
|
183
|
+
"timezone": "America/Santiago",
|
|
184
|
+
"chronyConfPath": "/etc/chrony/chrony.conf"
|
|
185
|
+
},
|
|
186
|
+
"firmwares": [],
|
|
187
|
+
"container": {
|
|
188
|
+
"image": "quay.io/rockylinux/rockylinux:9",
|
|
189
|
+
"architecture": "amd64",
|
|
190
|
+
"packages": [
|
|
191
|
+
"kernel",
|
|
192
|
+
"kernel-core",
|
|
193
|
+
"kernel-modules",
|
|
194
|
+
"linux-firmware",
|
|
195
|
+
"dracut",
|
|
196
|
+
"dracut-network",
|
|
197
|
+
"dracut-config-generic",
|
|
198
|
+
"dracut-live",
|
|
199
|
+
"nfs-utils",
|
|
200
|
+
"tar",
|
|
201
|
+
"iproute",
|
|
202
|
+
"openssh-server",
|
|
203
|
+
"openssh-clients"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
"keyboard": {
|
|
207
|
+
"layout": "es"
|
|
208
|
+
}
|
|
172
209
|
}
|
|
173
210
|
}
|
package/bin/deploy.js
CHANGED
|
@@ -468,7 +468,9 @@ try {
|
|
|
468
468
|
shellExec(`node bin new --deploy-id dd-default`);
|
|
469
469
|
console.log(fs.existsSync(`./engine-private/conf/dd-default`));
|
|
470
470
|
shellExec(`sudo rm -rf ./engine-private/conf/dd-default`);
|
|
471
|
+
shellExec(`node bin cron --dev --setup-start`);
|
|
471
472
|
shellExec(`node bin/deploy build-envs`);
|
|
473
|
+
shellExec(`node bin cmt --changelog-build`);
|
|
472
474
|
break;
|
|
473
475
|
}
|
|
474
476
|
|
|
@@ -1122,6 +1124,17 @@ nvidia/gpu-operator \
|
|
|
1122
1124
|
break;
|
|
1123
1125
|
}
|
|
1124
1126
|
|
|
1127
|
+
case 'sync-start': {
|
|
1128
|
+
const originPackageJson = JSON.parse(fs.readFileSync(`./package.json`, 'utf8'));
|
|
1129
|
+
for (const deployId of fs.readFileSync(`./engine-private/deploy/dd.router`, 'utf8').split(',')) {
|
|
1130
|
+
const packageJsonPath = `./engine-private/conf/${deployId}/package.json`;
|
|
1131
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
1132
|
+
packageJson.scripts.start = `${originPackageJson.scripts.start} ${deployId}`;
|
|
1133
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 4), 'utf8');
|
|
1134
|
+
}
|
|
1135
|
+
break;
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1125
1138
|
case 'sync-envs': {
|
|
1126
1139
|
for (const deployId of ['dd-cron'].concat(
|
|
1127
1140
|
fs.readFileSync(`./engine-private/deploy/dd.router`, 'utf8').split(','),
|
package/cli.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
## underpost ci/cd cli v2.99.
|
|
1
|
+
## underpost ci/cd cli v2.99.7
|
|
2
2
|
|
|
3
3
|
### Usage: `underpost [options] [command]`
|
|
4
4
|
```
|
|
@@ -25,11 +25,11 @@ Commands:
|
|
|
25
25
|
install Quickly imports Underpost npm dependencies by copying them.
|
|
26
26
|
db [options] [deploy-list] Manages database operations with support for MariaDB and MongoDB, including import/export, multi-pod targeting, and Git integration.
|
|
27
27
|
metadata [options] [deploy-id] [host] [path] Manages cluster metadata operations, including import and export.
|
|
28
|
-
cron [options] [deploy-list] [job-list] Manages cron jobs
|
|
28
|
+
cron [options] [deploy-list] [job-list] Manages cron jobs: execute jobs directly or generate and apply K8s CronJob manifests.
|
|
29
29
|
fs [options] [path] Manages file storage, defaulting to file upload operations.
|
|
30
30
|
test [options] [deploy-list] Manages and runs tests, defaulting to the current Underpost default test suite.
|
|
31
31
|
monitor [options] <deploy-id> [env] Manages health server monitoring for specified deployments.
|
|
32
|
-
ssh [options]
|
|
32
|
+
ssh [options] Manages SSH credentials and sessions for remote access to cluster nodes or services.
|
|
33
33
|
run [options] <runner-id> [path] Runs specified scripts using various runners.
|
|
34
34
|
lxd [options] Manages LXD containers and virtual machines.
|
|
35
35
|
baremetal [options] [workflow-id] Manages baremetal server operations, including installation, database setup, commissioning, and user management.
|
|
@@ -142,33 +142,46 @@ Manages commits to a GitHub repository, supporting various commit types and
|
|
|
142
142
|
options.
|
|
143
143
|
|
|
144
144
|
Arguments:
|
|
145
|
-
path
|
|
146
|
-
|
|
147
|
-
commit-type
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
145
|
+
path The absolute or relative directory path of
|
|
146
|
+
the repository.
|
|
147
|
+
commit-type The type of commit to perform. Options:
|
|
148
|
+
feat, fix, docs, style, refactor, perf,
|
|
149
|
+
ci, cd, infra, build, test, chore, revert,
|
|
150
|
+
backup.
|
|
151
|
+
module-tag Optional: Sets a specific module tag for
|
|
152
|
+
the commit.
|
|
153
|
+
message Optional: Provides an additional custom
|
|
154
|
+
message for the commit.
|
|
153
155
|
|
|
154
156
|
Options:
|
|
155
|
-
--log <latest-n>
|
|
156
|
-
|
|
157
|
-
--last-msg <latest-n>
|
|
158
|
-
--empty
|
|
159
|
-
--copy
|
|
160
|
-
|
|
161
|
-
--info
|
|
162
|
-
|
|
163
|
-
--
|
|
164
|
-
--
|
|
165
|
-
--deploy-id <deploy-id>
|
|
166
|
-
|
|
167
|
-
--cached
|
|
168
|
-
--hashes <hashes>
|
|
169
|
-
|
|
170
|
-
--extension <extension>
|
|
171
|
-
-
|
|
157
|
+
--log <latest-n> Shows commit history from the specified
|
|
158
|
+
number of latest n path commits.
|
|
159
|
+
--last-msg <latest-n> Displays the last n commit message.
|
|
160
|
+
--empty Allows committing with empty files.
|
|
161
|
+
--copy Copies the generated commit message to the
|
|
162
|
+
clipboard.
|
|
163
|
+
--info Displays information about available
|
|
164
|
+
commit types.
|
|
165
|
+
--diff Shows the current git diff changes.
|
|
166
|
+
--edit Edit last commit.
|
|
167
|
+
--deploy-id <deploy-id> Sets the deployment configuration ID for
|
|
168
|
+
the commit context.
|
|
169
|
+
--cached Commit staged changes only or context.
|
|
170
|
+
--hashes <hashes> Comma-separated list of specific file
|
|
171
|
+
hashes of commits.
|
|
172
|
+
--extension <extension> specific file extensions of commits.
|
|
173
|
+
--changelog [latest-n] Print plain the changelog of the specified
|
|
174
|
+
number of latest n commits, if no number
|
|
175
|
+
is provided it will get the changelog to
|
|
176
|
+
latest ci integration
|
|
177
|
+
--changelog-build Builds a CHANGELOG.md file based on the
|
|
178
|
+
commit history
|
|
179
|
+
--changelog-min-version <version> Sets the minimum version limit for
|
|
180
|
+
--changelog-build (default: 2.85.0)
|
|
181
|
+
--changelog-no-hash Excludes commit hashes from the generated
|
|
182
|
+
changelog entries (used with
|
|
183
|
+
--changelog-build).
|
|
184
|
+
-h, --help display help for command
|
|
172
185
|
|
|
173
186
|
```
|
|
174
187
|
|
|
@@ -255,6 +268,8 @@ Options:
|
|
|
255
268
|
--lang <lang> HTML lang attribute (default: en).
|
|
256
269
|
--dir <dir> HTML dir attribute (default: ltr).
|
|
257
270
|
--dev Sets the development cli context
|
|
271
|
+
--run-sv [port] Start a standalone Express static server to
|
|
272
|
+
preview the static build (default port: 5000).
|
|
258
273
|
-h, --help display help for command
|
|
259
274
|
|
|
260
275
|
```
|
|
@@ -630,22 +645,41 @@ Options:
|
|
|
630
645
|
```
|
|
631
646
|
Usage: underpost cron [options] [deploy-list] [job-list]
|
|
632
647
|
|
|
633
|
-
Manages cron jobs
|
|
634
|
-
|
|
648
|
+
Manages cron jobs: execute jobs directly or generate and apply K8s CronJob
|
|
649
|
+
manifests.
|
|
635
650
|
|
|
636
651
|
Arguments:
|
|
637
|
-
deploy-list
|
|
638
|
-
|
|
639
|
-
job-list
|
|
640
|
-
|
|
652
|
+
deploy-list A comma-separated list of deployment IDs (e.g.,
|
|
653
|
+
"default-a,default-b").
|
|
654
|
+
job-list A comma-separated list of job IDs. Options:
|
|
655
|
+
dns,backup. Defaults to all available jobs.
|
|
641
656
|
|
|
642
657
|
Options:
|
|
643
|
-
--
|
|
644
|
-
|
|
645
|
-
--
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
658
|
+
--generate-k8s-cronjobs Generates Kubernetes CronJob YAML manifests from
|
|
659
|
+
cron configuration.
|
|
660
|
+
--apply Applies generated K8s CronJob manifests to the
|
|
661
|
+
cluster via kubectl.
|
|
662
|
+
--setup-start [deploy-id] Updates deploy-id package.json start script and
|
|
663
|
+
generates+applies its K8s CronJob manifests.
|
|
664
|
+
--namespace <namespace> Kubernetes namespace for the CronJob resources
|
|
665
|
+
(default: "default").
|
|
666
|
+
--image <image> Custom container image for the CronJob pods.
|
|
667
|
+
--git Pass --git flag to cron job execution.
|
|
668
|
+
--cmd <cmd> Optional pre-script commands to run before cron
|
|
669
|
+
execution.
|
|
670
|
+
--dev Use local ./ base path instead of global underpost
|
|
671
|
+
installation.
|
|
672
|
+
--k3s Use k3s cluster context (apply directly on host).
|
|
673
|
+
--kind Use kind cluster context (apply via kind-worker
|
|
674
|
+
container).
|
|
675
|
+
--kubeadm Use kubeadm cluster context (apply directly on
|
|
676
|
+
host).
|
|
677
|
+
--dry-run Preview cron jobs without executing them.
|
|
678
|
+
--create-job-now After applying manifests, immediately create a Job
|
|
679
|
+
from each CronJob (requires --apply).
|
|
680
|
+
--ssh Execute backup commands via SSH on the remote node
|
|
681
|
+
instead of locally.
|
|
682
|
+
-h, --help display help for command
|
|
649
683
|
|
|
650
684
|
```
|
|
651
685
|
|
|
@@ -747,6 +781,9 @@ Options:
|
|
|
747
781
|
```
|
|
748
782
|
Usage: underpost ssh [options]
|
|
749
783
|
|
|
784
|
+
Manages SSH credentials and sessions for remote access to cluster nodes or
|
|
785
|
+
services.
|
|
786
|
+
|
|
750
787
|
Options:
|
|
751
788
|
--deploy-id <deploy-id> Sets deploy id context for ssh operations.
|
|
752
789
|
--generate Generates new ssh credential and stores it in
|
|
@@ -792,7 +829,7 @@ Options:
|
|
|
792
829
|
Runs specified scripts using various runners.
|
|
793
830
|
|
|
794
831
|
Arguments:
|
|
795
|
-
runner-id The runner ID to run. Options: dev-cluster,metadata,svc-ls,svc-rm,ssh-deploy-info,dev-hosts-expose,dev-hosts-restore,cluster-build,template-deploy,template-deploy-image,clean,pull,release-deploy,ssh-deploy,ide,crypto-policy,sync,stop,ssh-deploy-stop,ssh-deploy-db-rollback,ssh-deploy-db,ssh-deploy-db-status,tz,
|
|
832
|
+
runner-id The runner ID to run. Options: dev-cluster,metadata,svc-ls,svc-rm,ssh-deploy-info,dev-hosts-expose,dev-hosts-restore,cluster-build,template-deploy,template-deploy-image,clean,pull,release-deploy,ssh-deploy,ide,crypto-policy,sync,stop,ssh-deploy-stop,ssh-deploy-db-rollback,ssh-deploy-db,ssh-deploy-db-status,tz,get-proxy,instance-promote,instance,ls-deployments,host-update,dd-container,ip-info,db-client,git-conf,promote,metrics,cluster,deploy,disk-clean,disk-devices,disk-usage,dev,service,etc-hosts,sh,log,ps,ptls,release-cmt,deploy-test,sync-replica,tf-vae-test,spark-template,rmi,kill,secret,underpost-config,gpu-env,tf-gpu-test,deploy-job.
|
|
796
833
|
path The input value, identifier, or path for the operation.
|
|
797
834
|
|
|
798
835
|
Options:
|
|
@@ -834,7 +871,8 @@ Options:
|
|
|
834
871
|
--expose Enables service exposure for the runner execution.
|
|
835
872
|
--conf-server-path <conf-server-path> Sets a custom configuration server path.
|
|
836
873
|
--underpost-root <underpost-root> Sets a custom Underpost root path.
|
|
837
|
-
--cron-jobs <jobs>
|
|
874
|
+
--cmd-cron-jobs <cmd-cron-jobs> Pre-script commands to run before cron job execution.
|
|
875
|
+
--deploy-id-cron-jobs <deploy-id-cron-jobs> Specifies deployment IDs to synchronize cron jobs with during execution.
|
|
838
876
|
--timezone <timezone> Sets the timezone for the runner execution.
|
|
839
877
|
--kubeadm Sets the kubeadm cluster context for the runner execution.
|
|
840
878
|
--k3s Sets the k3s cluster context for the runner execution.
|
|
@@ -855,6 +893,8 @@ Options:
|
|
|
855
893
|
--monitor-status-kind-type <kind-type> Sets the Kubernetes resource kind type to monitor (default: "pods").
|
|
856
894
|
--monitor-status-delta-ms <milliseconds> Sets the polling interval in milliseconds for status monitoring (default: 1000).
|
|
857
895
|
--monitor-status-max-attempts <attempts> Sets the maximum number of status check attempts (default: 600).
|
|
896
|
+
--dry-run Preview operations without executing them.
|
|
897
|
+
--create-job-now After applying cron manifests, immediately create a Job from each CronJob (forwarded to cron runner).
|
|
858
898
|
-h, --help display help for command
|
|
859
899
|
|
|
860
900
|
```
|
|
@@ -943,11 +983,13 @@ Options:
|
|
|
943
983
|
--remove-machines <system-ids> Removes baremetal machines by comma-separated system IDs, or use "all"
|
|
944
984
|
--clear-discovered Clears all discovered baremetal machines from the database.
|
|
945
985
|
--commission Init workflow for commissioning a physical machine.
|
|
986
|
+
--bootstrap-http-server-run Runs a temporary bootstrap HTTP server for generic purposes such as serving iPXE scripts or ISO images during commissioning.
|
|
946
987
|
--bootstrap-http-server-path <path> Sets a custom bootstrap HTTP server path for baremetal commissioning.
|
|
947
988
|
--bootstrap-http-server-port <port> Sets a custom bootstrap HTTP server port for baremetal commissioning.
|
|
948
989
|
--iso-url <url> Uses a custom ISO URL for baremetal machine commissioning.
|
|
949
990
|
--nfs-build Builds an NFS root filesystem for a workflow id config architecture using QEMU emulation.
|
|
950
991
|
--nfs-mount Mounts the NFS root filesystem for a workflow id config architecture.
|
|
992
|
+
--nfs-reset Resets the NFS server completely, closing all connections before reloading exports.
|
|
951
993
|
--nfs-unmount Unmounts the NFS root filesystem for a workflow id config architecture.
|
|
952
994
|
--nfs-build-server Builds the NFS server for a workflow id config architecture.
|
|
953
995
|
--nfs-sh Copies QEMU emulation root entrypoint shell command to the clipboard.
|
|
@@ -26,6 +26,30 @@ underpost static --generate-config ./static-config.json
|
|
|
26
26
|
underpost static --config-file ./examples/static-page/static-config-example.json
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
## Preview with Static Server
|
|
30
|
+
|
|
31
|
+
Use `--run-sv` to start a standalone Express static file server that serves the build output directory, so you can preview your generated pages in a browser.
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
# Build and serve on default port 5000:
|
|
35
|
+
underpost static --page ./examples/static-page/ssr-components/CustomPage.js \
|
|
36
|
+
--output-path ./dist/index.html \
|
|
37
|
+
--run-sv
|
|
38
|
+
|
|
39
|
+
# Build and serve on a custom port:
|
|
40
|
+
underpost static --page ./examples/static-page/ssr-components/CustomPage.js \
|
|
41
|
+
--output-path ./dist/index.html \
|
|
42
|
+
--run-sv 3000
|
|
43
|
+
|
|
44
|
+
# Serve an existing build directory without rebuilding:
|
|
45
|
+
underpost static --output-path ./dist/index.html --run-sv
|
|
46
|
+
|
|
47
|
+
# Serve the current working directory:
|
|
48
|
+
underpost static --run-sv 8080
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
When `--output-path` is provided, the server serves the directory containing the output file (e.g. `./dist/`). Otherwise it serves the current working directory.
|
|
52
|
+
|
|
29
53
|
## Config File Reference
|
|
30
54
|
|
|
31
55
|
See [`static-config-example.json`](./static-config-example.json) for a complete working example.
|
|
@@ -34,6 +58,7 @@ See [`static-config-example.json`](./static-config-example.json) for a complete
|
|
|
34
58
|
|-------|------|-------------|
|
|
35
59
|
| `page` | `string` | Path to the SSR component to render |
|
|
36
60
|
| `outputPath` | `string` | Output HTML file path |
|
|
61
|
+
| `buildPath` | `string` | Base path for static documents or assets (default: `"/"`) |
|
|
37
62
|
| `env` | `string` | `"production"` or `"development"` |
|
|
38
63
|
| `minify` | `boolean` | Minify HTML output |
|
|
39
64
|
| `lang` | `string` | HTML `lang` attribute |
|
|
@@ -51,20 +76,62 @@ See [`static-config-example.json`](./static-config-example.json) for a complete
|
|
|
51
76
|
|
|
52
77
|
Flags override config file values when both are provided.
|
|
53
78
|
|
|
79
|
+
### Build & Output
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
underpost static --page <path> # SSR component path
|
|
83
|
+
--output-path <path> # Output file
|
|
84
|
+
--build-path <path> # Base path for assets (default: "/")
|
|
85
|
+
--config-file <path> # JSON config file
|
|
86
|
+
--generate-config [path] # Generate a template config file
|
|
87
|
+
--env <env> # production | development
|
|
88
|
+
--minify / --no-minify # Toggle minification
|
|
89
|
+
--lang <lang> # HTML lang attribute (default: en)
|
|
90
|
+
--dir <dir> # HTML dir attribute (default: ltr)
|
|
91
|
+
--dev # Development mode
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Metadata & SEO
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
--title <title> # Page title (deprecated: use --config-file)
|
|
98
|
+
--description <text> # Meta description
|
|
99
|
+
--keywords <a,b,c> # Comma-separated keywords
|
|
100
|
+
--author <name> # Meta author
|
|
101
|
+
--theme-color <color> # Theme color for mobile browsers
|
|
102
|
+
--canonical-url <url> # Canonical URL for SEO
|
|
103
|
+
--thumbnail <url> # Open Graph thumbnail image URL
|
|
104
|
+
--locale <locale> # Page locale (default: en-US)
|
|
105
|
+
--site-name <name> # Site name for Open Graph
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Scripts & Styles
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
--head-scripts <paths> # Comma-separated script paths for <head>
|
|
112
|
+
--body-scripts <paths> # Comma-separated script paths for <body>
|
|
113
|
+
--styles <paths> # Comma-separated stylesheet paths
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Icons
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
--favicon <path> # Favicon path
|
|
120
|
+
--apple-touch-icon <path> # Apple touch icon path
|
|
121
|
+
--manifest <path> # Web manifest path
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### SSR Components
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
--head-components <paths> # Comma-separated SSR head component paths
|
|
128
|
+
--body-components <paths> # Comma-separated SSR body component paths
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Static Server
|
|
132
|
+
|
|
54
133
|
```sh
|
|
55
|
-
|
|
56
|
-
--output-path <path> # Output file
|
|
57
|
-
--config-file <path> # JSON config file
|
|
58
|
-
--env <env> # production | development
|
|
59
|
-
--minify / --no-minify # Toggle minification
|
|
60
|
-
--title <title> # Page title
|
|
61
|
-
--description <text> # Meta description
|
|
62
|
-
--keywords <a,b,c> # Comma-separated keywords
|
|
63
|
-
--author <name> # Meta author
|
|
64
|
-
--favicon <path> # Favicon path
|
|
65
|
-
--lang <lang> # HTML lang attribute
|
|
66
|
-
--dir <dir> # HTML dir attribute
|
|
67
|
-
--dev # Development mode
|
|
134
|
+
--run-sv [port] # Start Express static server (default port: 5000)
|
|
68
135
|
```
|
|
69
136
|
|
|
70
137
|
## SSR Component
|
package/jsdoc.json
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
"allowUnknownTags": true,
|
|
4
4
|
"dictionaries": ["jsdoc"]
|
|
5
5
|
},
|
|
6
|
+
"categoryfile": "./jsdoc-categories.json",
|
|
6
7
|
"source": {
|
|
7
|
-
"include": ["./src", "./package.json", "./README.md"],
|
|
8
|
+
"include": ["./src", "./package.json", "./README.md", "./CHANGELOG.md"],
|
|
8
9
|
"includePattern": ".js$",
|
|
9
|
-
"excludePattern": "(node_modules
|
|
10
|
+
"excludePattern": "(node_modules/|/docs/)"
|
|
10
11
|
},
|
|
11
12
|
"plugins": ["plugins/markdown", "plugins/summarize", "plugins/shout"],
|
|
12
13
|
"opts": {
|
|
@@ -14,6 +15,7 @@
|
|
|
14
15
|
"readme": "./README.md",
|
|
15
16
|
"recurse": true,
|
|
16
17
|
"destination": "./public/www.nexodev.org/docs/",
|
|
18
|
+
"tutorials": "./src/client/public/nexodev/docs/references",
|
|
17
19
|
"encoding": "utf8",
|
|
18
20
|
"verbose": true,
|
|
19
21
|
"theme_opts": {
|
|
@@ -21,9 +23,28 @@
|
|
|
21
23
|
"search": true,
|
|
22
24
|
"title": "Nexodev - ERP, CRM Development & Cloud DevOps Services",
|
|
23
25
|
"homepageTitle": "Docs",
|
|
24
|
-
"favicon": "./public/www.nexodev.org/"
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
"favicon": "./public/www.nexodev.org/",
|
|
27
|
+
"displayModuleHeader": true,
|
|
28
|
+
"includeFilesListInHomepage": true,
|
|
29
|
+
"sections": ["Modules", "Classes", "Namespaces", "Tutorials", "Events", "Interfaces", "Global"],
|
|
30
|
+
"meta": [
|
|
31
|
+
{
|
|
32
|
+
"name": "author",
|
|
33
|
+
"content": "Nexodev - underpostnet"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "description",
|
|
37
|
+
"content": "Underpost Engine - End2end CI/CD cloud to applications federation tools documentation"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "keywords",
|
|
41
|
+
"content": "underpost, engine, erp, crm, devops, cloud, kubernetes, documentation, jsdoc"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"footer": "<div style='text-align:center;margin:1rem 0;font-size:0.85rem;'>© Nexodev / underpostnet — <a href='https://github.com/underpostnet/engine' target='_blank'>Engine</a> | <a href='https://www.npmjs.com/package/underpost' target='_blank'>npm</a></div>",
|
|
45
|
+
"create_style": ".jsdoc-category-badge{display:inline-block;padding:2px 8px;border-radius:4px;background:#e3f2fd;color:#1565c0;font-size:0.82em;font-weight:600;margin-bottom:0.4em;border:1px solid #90caf9}.jsdoc-category{margin-bottom:0.5em}#sidebar-classes,#sidebar-classes+.sidebar-section-children-container{display:none !important}",
|
|
46
|
+
"add_scripts": ""
|
|
47
|
+
}
|
|
27
48
|
},
|
|
28
49
|
"markdown": {
|
|
29
50
|
"hardwrap": false,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
apiVersion: batch/v1
|
|
2
|
+
kind: CronJob
|
|
3
|
+
metadata:
|
|
4
|
+
name: dd-cron-backup
|
|
5
|
+
namespace: default
|
|
6
|
+
labels:
|
|
7
|
+
app: dd-cron-backup
|
|
8
|
+
managed-by: underpost
|
|
9
|
+
spec:
|
|
10
|
+
schedule: "0 1 * * *"
|
|
11
|
+
concurrencyPolicy: Forbid
|
|
12
|
+
startingDeadlineSeconds: 200
|
|
13
|
+
successfulJobsHistoryLimit: 3
|
|
14
|
+
failedJobsHistoryLimit: 1
|
|
15
|
+
suspend: false
|
|
16
|
+
jobTemplate:
|
|
17
|
+
spec:
|
|
18
|
+
template:
|
|
19
|
+
metadata:
|
|
20
|
+
labels:
|
|
21
|
+
app: dd-cron-backup
|
|
22
|
+
managed-by: underpost
|
|
23
|
+
spec:
|
|
24
|
+
containers:
|
|
25
|
+
- name: dd-cron-backup
|
|
26
|
+
image: underpost/underpost-engine:v2.99.7
|
|
27
|
+
command:
|
|
28
|
+
- /bin/sh
|
|
29
|
+
- -c
|
|
30
|
+
- >
|
|
31
|
+
cd /home/dd/engine && node bin env dd-cron production && node bin cron --git --dev --ssh dd-lampp,dd-cyberia,dd-core,dd-test backup
|
|
32
|
+
volumeMounts:
|
|
33
|
+
- mountPath: /home/dd/engine
|
|
34
|
+
name: underpost-cron-container-volume
|
|
35
|
+
- mountPath: /usr/lib/node_modules/underpost/.env
|
|
36
|
+
name: underpost-share-env
|
|
37
|
+
subPath: .env
|
|
38
|
+
volumes:
|
|
39
|
+
- hostPath:
|
|
40
|
+
path: /home/dd/engine
|
|
41
|
+
type: Directory
|
|
42
|
+
name: underpost-cron-container-volume
|
|
43
|
+
- hostPath:
|
|
44
|
+
path: /root/.nvm/versions/node/v24.10.0/lib/node_modules/underpost
|
|
45
|
+
type: DirectoryOrCreate
|
|
46
|
+
name: underpost-share-env
|
|
47
|
+
restartPolicy: OnFailure
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
apiVersion: batch/v1
|
|
2
|
+
kind: CronJob
|
|
3
|
+
metadata:
|
|
4
|
+
name: dd-cron-dns
|
|
5
|
+
namespace: default
|
|
6
|
+
labels:
|
|
7
|
+
app: dd-cron-dns
|
|
8
|
+
managed-by: underpost
|
|
9
|
+
spec:
|
|
10
|
+
schedule: "* * * * *"
|
|
11
|
+
concurrencyPolicy: Forbid
|
|
12
|
+
startingDeadlineSeconds: 200
|
|
13
|
+
successfulJobsHistoryLimit: 3
|
|
14
|
+
failedJobsHistoryLimit: 1
|
|
15
|
+
suspend: false
|
|
16
|
+
jobTemplate:
|
|
17
|
+
spec:
|
|
18
|
+
template:
|
|
19
|
+
metadata:
|
|
20
|
+
labels:
|
|
21
|
+
app: dd-cron-dns
|
|
22
|
+
managed-by: underpost
|
|
23
|
+
spec:
|
|
24
|
+
containers:
|
|
25
|
+
- name: dd-cron-dns
|
|
26
|
+
image: underpost/underpost-engine:v2.99.7
|
|
27
|
+
command:
|
|
28
|
+
- /bin/sh
|
|
29
|
+
- -c
|
|
30
|
+
- >
|
|
31
|
+
cd /home/dd/engine && node bin env dd-cron production && node bin cron --git --dev --ssh dd-cron dns
|
|
32
|
+
volumeMounts:
|
|
33
|
+
- mountPath: /home/dd/engine
|
|
34
|
+
name: underpost-cron-container-volume
|
|
35
|
+
- mountPath: /usr/lib/node_modules/underpost/.env
|
|
36
|
+
name: underpost-share-env
|
|
37
|
+
subPath: .env
|
|
38
|
+
volumes:
|
|
39
|
+
- hostPath:
|
|
40
|
+
path: /home/dd/engine
|
|
41
|
+
type: Directory
|
|
42
|
+
name: underpost-cron-container-volume
|
|
43
|
+
- hostPath:
|
|
44
|
+
path: /root/.nvm/versions/node/v24.10.0/lib/node_modules/underpost
|
|
45
|
+
type: DirectoryOrCreate
|
|
46
|
+
name: underpost-share-env
|
|
47
|
+
restartPolicy: OnFailure
|
|
@@ -17,7 +17,7 @@ spec:
|
|
|
17
17
|
spec:
|
|
18
18
|
containers:
|
|
19
19
|
- name: dd-default-development-blue
|
|
20
|
-
image: localhost/rockylinux9-underpost:v2.99.
|
|
20
|
+
image: localhost/rockylinux9-underpost:v2.99.7
|
|
21
21
|
# resources:
|
|
22
22
|
# requests:
|
|
23
23
|
# memory: "124Ki"
|
|
@@ -100,7 +100,7 @@ spec:
|
|
|
100
100
|
spec:
|
|
101
101
|
containers:
|
|
102
102
|
- name: dd-default-development-green
|
|
103
|
-
image: localhost/rockylinux9-underpost:v2.99.
|
|
103
|
+
image: localhost/rockylinux9-underpost:v2.99.7
|
|
104
104
|
# resources:
|
|
105
105
|
# requests:
|
|
106
106
|
# memory: "124Ki"
|
|
@@ -18,7 +18,7 @@ spec:
|
|
|
18
18
|
spec:
|
|
19
19
|
containers:
|
|
20
20
|
- name: dd-test-development-blue
|
|
21
|
-
image: localhost/rockylinux9-underpost:v2.99.
|
|
21
|
+
image: localhost/rockylinux9-underpost:v2.99.7
|
|
22
22
|
|
|
23
23
|
command:
|
|
24
24
|
- /bin/sh
|
|
@@ -103,7 +103,7 @@ spec:
|
|
|
103
103
|
spec:
|
|
104
104
|
containers:
|
|
105
105
|
- name: dd-test-development-green
|
|
106
|
-
image: localhost/rockylinux9-underpost:v2.99.
|
|
106
|
+
image: localhost/rockylinux9-underpost:v2.99.7
|
|
107
107
|
|
|
108
108
|
command:
|
|
109
109
|
- /bin/sh
|