underpost 3.2.30 → 3.2.70

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.
@@ -4,6 +4,16 @@ on:
4
4
  branches: ['master']
5
5
  pull_request:
6
6
  branches: ['master']
7
+ workflow_dispatch:
8
+ inputs:
9
+ conf_id:
10
+ description: 'Conf id of the canonical engine github package repo (engine-ghpkg-<conf_id>)'
11
+ required: false
12
+ default: 'cyberia'
13
+ message:
14
+ description: 'Commit message for the canonical package build'
15
+ required: false
16
+ default: ''
7
17
  permissions:
8
18
  contents: write
9
19
  packages: write
@@ -71,3 +81,80 @@ jobs:
71
81
  git status
72
82
  git commit -m "$LAST_COMMIT_MESSAGE"
73
83
  node bin push . underpostnet/pwa-microservices-template-ghpkg
84
+
85
+ engine-ghpkg:
86
+ if: github.repository == 'underpostnet/engine' && github.event_name == 'workflow_dispatch'
87
+ name: Build engine ${{ github.event.inputs.conf_id || 'cyberia' }} ghpkg repository
88
+ runs-on: ubuntu-latest
89
+ container:
90
+ image: quay.io/rockylinux/rockylinux:9
91
+ permissions:
92
+ contents: write
93
+ packages: write
94
+ id-token: write
95
+ steps:
96
+ - uses: actions/checkout@v7
97
+
98
+ - name: Install required packages
99
+ run: |
100
+ dnf install -y sudo tar gzip bzip2 git
101
+ dnf install -y curl --allowerasing
102
+
103
+ - name: Install Node.js
104
+ run: |
105
+ curl -fsSL https://rpm.nodesource.com/setup_24.x | bash -
106
+ dnf install nodejs -y
107
+
108
+ - name: Install dependencies
109
+ run: npm install
110
+
111
+ - name: Resolve canonical github package repo
112
+ run: |
113
+ CONF_ID="${{ github.event.inputs.conf_id }}"
114
+ CONF_ID="${CONF_ID:-cyberia}"
115
+ echo "CONF_ID=$CONF_ID" >> $GITHUB_ENV
116
+ echo "GHPKG_REPO=engine-ghpkg-$CONF_ID" >> $GITHUB_ENV
117
+ echo "PACKAGE_NAME=@underpostnet/$CONF_ID" >> $GITHUB_ENV
118
+ echo "[INFO] Canonical github package repo: underpostnet/engine-ghpkg-$CONF_ID"
119
+
120
+ - name: Capture commit message
121
+ run: |
122
+ FULL_MSG="${{ github.event.inputs.message }}"
123
+ if [ -z "$FULL_MSG" ]; then
124
+ FULL_MSG=$(node bin cmt --changelog-msg --from-n-commit 1 --changelog-no-hash 2>/dev/null || echo "")
125
+ fi
126
+ LAST_COMMIT_MESSAGE="${FULL_MSG:-Update canonical github package repo}"
127
+ echo "LAST_COMMIT_MESSAGE<<EOF" >> $GITHUB_ENV
128
+ echo "$LAST_COMMIT_MESSAGE" >> $GITHUB_ENV
129
+ echo "EOF" >> $GITHUB_ENV
130
+ echo "[INFO] Commit message: $LAST_COMMIT_MESSAGE"
131
+
132
+ - name: Set git global credentials
133
+ run: |
134
+ git config --global --add safe.directory '*'
135
+ git config --global credential.helper ""
136
+ git config --global user.name 'underpostnet'
137
+ git config --global user.email 'development@underpost.net'
138
+
139
+ - name: Mirror engine-$CONF_ID and Push to canonical github package repository
140
+ env:
141
+ GITHUB_TOKEN: ${{ secrets.GIT_AUTH_TOKEN }}
142
+ GITHUB_USERNAME: ${{ github.repository_owner }}
143
+ run: |
144
+ cd .. && node engine/bin clone underpostnet/engine-$CONF_ID
145
+ node engine/bin clone --bare underpostnet/$GHPKG_REPO
146
+ cd engine-$CONF_ID
147
+ rm -rf ./.git
148
+ mv ../$GHPKG_REPO.git ./.git
149
+ node ../engine/bin/deploy rename-package "$PACKAGE_NAME"
150
+ node ../engine/bin/deploy set-repo underpostnet/$GHPKG_REPO
151
+ git init
152
+ git config user.name 'underpostnet'
153
+ git config user.email 'development@underpost.net'
154
+ git add .
155
+ if git diff --cached --quiet; then
156
+ echo "[INFO] No changes to publish; skipping commit and push."
157
+ else
158
+ git commit -m "$LAST_COMMIT_MESSAGE"
159
+ node ../engine/bin push . underpostnet/$GHPKG_REPO
160
+ fi
@@ -110,14 +110,17 @@ jobs:
110
110
  DT="$DEPLOY_TYPE"
111
111
  fi
112
112
  echo "[INFO] Dispatching ${ENGINE}.ci.yml (sync=$SYNC, deploy_type=$DT)"
113
- INPUTS="{\"sync\":\"${SYNC}\""
114
- if [ -n "$DT" ]; then
115
- INPUTS="${INPUTS},\"deploy_type\":\"${DT}\""
116
- fi
117
- INPUTS="${INPUTS}}"
113
+ # Build the payload with node so the propagated message (may contain quotes/newlines)
114
+ # is JSON-escaped safely, and forward it so every engine-* repo shares one message.
115
+ PAYLOAD=$(SYNC="$SYNC" DT="$DT" MSG="$LAST_COMMIT_MESSAGE" node -e '
116
+ const i = { sync: process.env.SYNC };
117
+ if (process.env.DT) i.deploy_type = process.env.DT;
118
+ if (process.env.MSG) i.message = process.env.MSG;
119
+ process.stdout.write(JSON.stringify({ ref: "master", inputs: i }));
120
+ ')
118
121
  curl -s -X POST \
119
122
  -H "Accept: application/vnd.github.v3+json" \
120
123
  -H "Authorization: token ${{ secrets.GIT_AUTH_TOKEN }}" \
121
124
  "https://api.github.com/repos/underpostnet/engine/actions/workflows/${ENGINE}.ci.yml/dispatches" \
122
- -d "{\"ref\":\"master\",\"inputs\":${INPUTS}}"
125
+ -d "$PAYLOAD"
123
126
  done
@@ -1,28 +1,21 @@
1
- # Simple workflow for deploying static content to GitHub Pages
2
1
  name: CD | Gihub page | PWA Microservices Template
3
2
 
4
3
  on:
5
- # Runs on pushes targeting the default branch
6
4
  push:
7
5
  branches: ['main']
8
6
 
9
- # Allows you to run this workflow manually from the Actions tab
10
7
  workflow_dispatch:
11
8
 
12
- # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13
9
  permissions:
14
10
  contents: read
15
11
  pages: write
16
12
  id-token: write
17
13
 
18
- # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19
- # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20
14
  concurrency:
21
15
  group: 'pages'
22
16
  cancel-in-progress: false
23
17
 
24
18
  jobs:
25
- # Single deploy job since we're just deploying
26
19
  deploy:
27
20
  if: github.repository == 'underpostnet/pwa-microservices-template-ghpkg'
28
21
  environment:
package/CHANGELOG.md CHANGED
@@ -1,6 +1,126 @@
1
1
  # Changelog
2
2
 
3
- ## 2026-06-25
3
+ ## 2026-07-07
4
+
5
+ ### release
6
+
7
+ - Enhance buildVersionBumpTargets patterns scope ([510abdd94](https://github.com/underpostnet/engine/commit/510abdd94faaa121b7f81a21450beba484de654b))
8
+
9
+ ### cli-repository
10
+
11
+ - Add default branch resolution ([c5074d31c](https://github.com/underpostnet/engine/commit/c5074d31cac7046280d24d12e30a87ad2db86285))
12
+ - FIx commit message propagation in CI engines workflows ([4b5458d83](https://github.com/underpostnet/engine/commit/4b5458d834efa88a1cf81ae32d517a71a4bb58f2))
13
+ - Add runtimeRepo logic in resolveInstanceRepo method ([1ef3ad279](https://github.com/underpostnet/engine/commit/1ef3ad27908989f3ab7f620500257b6e9ff76f4b))
14
+
15
+ ### github-actions
16
+
17
+ - Clean comments ([785e9d55d](https://github.com/underpostnet/engine/commit/785e9d55d27351ad4d529e38f60d3962f9439fee))
18
+ - Fix typo engine cyberia cd cmd command, and clean comments in cyberia-engine related dockerfiles ([d93dbf54a](https://github.com/underpostnet/engine/commit/d93dbf54a2ec44e1c1b4c01abd21e1baa0cf7fbc))
19
+ - Fix add missing install dependencies in cyberia github package workflow ([8897dcdbb](https://github.com/underpostnet/engine/commit/8897dcdbbea619687165438f3ac64702480f4d23))
20
+ - Add cyberia cli github package workflow ([6ae0ac5f7](https://github.com/underpostnet/engine/commit/6ae0ac5f76c08643171b4b3853c874ed26b423c1))
21
+ - Add cyberia-server and cyberia-client CD workflows ([c92a6c278](https://github.com/underpostnet/engine/commit/c92a6c27810738c2c6a87962c6fefaf98060cb70))
22
+ - Fix engine-cyberia CD and engine-prototype CI manifests workflows ([3ca123dbf](https://github.com/underpostnet/engine/commit/3ca123dbf9d4d0cfbc1d504e6b0c847abd2f8757))
23
+ - Add single source of truth for the underpost image version in ci dockerhub workflows ([97585e735](https://github.com/underpostnet/engine/commit/97585e735c1cd48c80e8c7af8601e14a79e233fd))
24
+ - Update engine-cyberia default deployment node ([b181a5bd5](https://github.com/underpostnet/engine/commit/b181a5bd5254d2a692579c9c7d188161ae351e59))
25
+
26
+ ### engine-cyberia
27
+
28
+ - Add sudo in engine-cyberia runtime dockerfiles ([3c3da0fcc](https://github.com/underpostnet/engine/commit/3c3da0fccc5b91c01722d3224146ae37ebcc6a27))
29
+ - Update production engine-cyberia Dockerfile ([e1a9330e9](https://github.com/underpostnet/engine/commit/e1a9330e9c3325a8a1ee41318bbe48714deaf3a2))
30
+ - Refactor Dockerfile and deployment configurations for production and development environments ([4901a3f92](https://github.com/underpostnet/engine/commit/4901a3f925ce038ede03b5e08c6b06eb03bc1617))
31
+ - Refactor separate engine-cybera public engine URL from internal cyberia-server api engine base url endpoint ([48923d900](https://github.com/underpostnet/engine/commit/48923d90062dc934228c049a33f619dcdacd5cbc))
32
+ - Add in runtime engine-cyberia module docker-compose env file related ([ae30329d4](https://github.com/underpostnet/engine/commit/ae30329d4e80d4911c3129ad042c623f74110462))
33
+ - Add centralized node version arg and update to v24.15.0 id dockerfiles related ([64a649a1b](https://github.com/underpostnet/engine/commit/64a649a1b29a941b10d91879207e8a7ff76f48a2))
34
+ - Update Dockerfile.dev use canonical repository ([12e439122](https://github.com/underpostnet/engine/commit/12e4391225ee207dd5e3edff93af4cfe667982dd))
35
+ - Add ipfs cluster service in cyberia docker-compose deployment ([8ee19a3fa](https://github.com/underpostnet/engine/commit/8ee19a3fa5792ed800b03f45a0a677b0d6244450))
36
+ - Move ffmpeg to runtime stage in docker-image build pipeline ([1fcca3783](https://github.com/underpostnet/engine/commit/1fcca3783add20e42c3c80a14dfdf9a9ff2b08a9))
37
+ - Add engine-cyberia runtime module, docker-compose cyberia mmo ecosystem, and docker-image engine-cyberia dockerhub pipeline ([df2162b7d](https://github.com/underpostnet/engine/commit/df2162b7d755a814d36bd2da322c3e554496daa2))
38
+ - Add behavior field, entity behavior vocabulary, and skill logic validation ([6ac9bcaf5](https://github.com/underpostnet/engine/commit/6ac9bcaf5eede564ae80ce74498c91eb9a4e4b20))
39
+ - Refactor entity-type-default to subset matching resolution ([bf0aa9fe6](https://github.com/underpostnet/engine/commit/bf0aa9fe65523d0817d18b8796ce71b9be858955))
40
+ - Add fontFamily+fontFactorSize; in RENDER_DEFAULTS and buildClientHints passthrough; client-hints model fields related logic ([34a1ee78b](https://github.com/underpostnet/engine/commit/34a1ee78bf8eba5ed1ffca5bad3c92f5eef5c4fd))
41
+ - Add transport status definition for portal entities ([4cf015892](https://github.com/underpostnet/engine/commit/4cf015892eaafd58e6d65f19c7aeeaec3eccfb5e))
42
+ - Implement cyberia-entity-type-default model and EntityEngineCyberia and related logic ([96c8c94ec](https://github.com/underpostnet/engine/commit/96c8c94ec4a0faf506232d3a1059e0c84f83edc6))
43
+ - Add cyberia saga amethyst-strata-expansion custom resources ([6422570ab](https://github.com/underpostnet/engine/commit/6422570ab33b686016bed5f338cbbf8a0395f285))
44
+ - Refactor questCodes field in cyberia-saga model and add actionCodes references ([93ffb7f0b](https://github.com/underpostnet/engine/commit/93ffb7f0bc8097769d3b9f3c4ffbf1c8359af18a))
45
+ - Fix idempotency consistency in atlasSpriteSheetId ref in export / import instance pipeline ([05e62ebbe](https://github.com/underpostnet/engine/commit/05e62ebbe0fc8284ee468b458818e19fc77298bb))
46
+ - Add cyberia-saga documents in import / export cyberia instance pipelines ([e77583fc8](https://github.com/underpostnet/engine/commit/e77583fc8b129a875270ef8d7e1c40d61ecc7a18))
47
+ - Update CLI and saga documentation for skills ([1655a5c87](https://github.com/underpostnet/engine/commit/1655a5c877c712210cbe83a35848896cdc5e4125))
48
+ - CLI seed-skills, import/export, and server defaults skill config ([b2215cce2](https://github.com/underpostnet/engine/commit/b2215cce22c5499579a2df63db0ac301a0553feb))
49
+ - Action engine skill editor with CyberiaSkill CRUD ([7a3f3b8d7](https://github.com/underpostnet/engine/commit/7a3f3b8d71272eee9a3c4fb9218d9152b2023776))
50
+ - Saga generator skills stage and instance persistence ([669d991ca](https://github.com/underpostnet/engine/commit/669d991cac09dedf60b60c7261cb045cb7dd7f71))
51
+ - Skill system - DefaultSkillConfig, gRPC server, CRUD API, and client service ([2e1997ebc](https://github.com/underpostnet/engine/commit/2e1997ebceb03723ea7ffd15ea61d950a3723414))
52
+ - Instance model itemIds schema with defaultPlayerInventory flag ([342df03c3](https://github.com/underpostnet/engine/commit/342df03c3612cc82131b287e1f7545e3fcd7f9f8))
53
+ - Add static entity type and shared direction/stat constants ([86ab2ffca](https://github.com/underpostnet/engine/commit/86ab2ffca38851ce870ee72c37221cbf260e5bd8))
54
+
55
+ ### cli-fs
56
+
57
+ - Isolate Git tracking from JSON storage ([2f9145be9](https://github.com/underpostnet/engine/commit/2f9145be92456124118f9c7d74726bdff82dc5f3))
58
+
59
+ ### cli-run
60
+
61
+ - Add typedef UnderpostRunDefaultOptions in cli runner module ([8a3580109](https://github.com/underpostnet/engine/commit/8a3580109d8f70a10c4ac2d216fbd35844e09541))
62
+ - Add resolve runtimeRepo logic in ssh-deploy runner ([1d4c26002](https://github.com/underpostnet/engine/commit/1d4c26002ac513fcde86c8839445e2b82fd55e50))
63
+ - Add generate sibling manifests (pv-pvc, proxy, grpc-service) in instance-build-manifest runner ([36bf33b4b](https://github.com/underpostnet/engine/commit/36bf33b4b2ec34bac3925a4330b4eb5606cf8876))
64
+ - Add dev mode in runner docker-image to trigger dev variant docker hub push ([bc1e23ac0](https://github.com/underpostnet/engine/commit/bc1e23ac0ce5c705e3d2f7b3e47546e1e3c583bb))
65
+ - Fix custom instance artifact generator add custom --trafic flag inteast ([d6873f3c3](https://github.com/underpostnet/engine/commit/d6873f3c300d09f34cf5399f671b86ac5f4b8d55))
66
+ - Add deploy key runner ([6164b0190](https://github.com/underpostnet/engine/commit/6164b0190e59510bdd51bb60d3064ba3a9c32a7b))
67
+ - Add kubernetes-sigs metrics server runner setup ([4761c6351](https://github.com/underpostnet/engine/commit/4761c6351482fe27e84f47d4cf53946f8f04caa6))
68
+
69
+ ### cyberia-cli
70
+
71
+ - Add missing deployment manifests copy to build cyberia-instance dir ([ee71573ee](https://github.com/underpostnet/engine/commit/ee71573eea0e979d883238744bee97714cf0b224))
72
+ - Add publishing functionality for cyberia instances ([aaf8485bf](https://github.com/underpostnet/engine/commit/aaf8485bfd003a39dec59760c5dd2b2ffb051f3d))
73
+ - Add method to fill empty fields in Instance Conf Defaults export process ([6e1c268ae](https://github.com/underpostnet/engine/commit/6e1c268ae755b240abdfcd60ff0f26d2c35a9fe3))
74
+ - Add docker-compose-dev-env-up runner workflow ([9e765185a](https://github.com/underpostnet/engine/commit/9e765185ad782f34cddddbc2862981416a830de4))
75
+ - Add drop-db workflow to clear only cyberia collections ([5b741c22c](https://github.com/underpostnet/engine/commit/5b741c22cda0cf7c9ee531903769d466826cf133))
76
+ - Add sync-src to engine runner logic ([a777e5ad6](https://github.com/underpostnet/engine/commit/a777e5ad69b1069eadb04846010a6d34508ce7c5))
77
+ - Remove seed default dialogues in export instance logic ([1cbcb9e52](https://github.com/underpostnet/engine/commit/1cbcb9e52f1441ae10abb046bf356b49dd7fcfd2))
78
+ - In cyberia instance export / import disabling overlaps queries for now because they can be very expensive and are not strictly necessary for a backup ([b7d7858d6](https://github.com/underpostnet/engine/commit/b7d7858d619edb9feac968c6fce2ac99d5978d24))
79
+
80
+ ### cyberia-api
81
+
82
+ - Add moderator auth guard in cyberia api CRUD operations endpoints ([0373a052f](https://github.com/underpostnet/engine/commit/0373a052f257577b7afec887d18c982938b8de02))
83
+
84
+ ### client-cyberia
85
+
86
+ - Add moderator guard for CRUD operations in cyberia components ([f746ea9ce](https://github.com/underpostnet/engine/commit/f746ea9ced0a0dac113129fb26f2d7f6df763f26))
87
+
88
+ ### cli-cyberia
89
+
90
+ - Add cyberia run-workflow docker-image local tar builder runner ([a953dec8f](https://github.com/underpostnet/engine/commit/a953dec8f108a4d53d9fde07fae7149f5f0e2dd4))
91
+
92
+ ### cli-image
93
+
94
+ - Add --import-tar flag option and logic ([5f00f64c9](https://github.com/underpostnet/engine/commit/5f00f64c9b9c41b6c6220c09c42345f378caee90))
95
+ - Refactor and simplifi image build logic, and add support to load local tar in docker-compose ([f87523253](https://github.com/underpostnet/engine/commit/f8752325363bde9f8d18cefb0b348e570c00d9f9))
96
+
97
+ ### cluster
98
+
99
+ - Enhance cluster and disk clean logic ([d9a079f7d](https://github.com/underpostnet/engine/commit/d9a079f7de4add9d7b30c0493d367f620c837d7b))
100
+
101
+ ### catalog
102
+
103
+ - Add copies and moves options in catalog build logic ([b1940e067](https://github.com/underpostnet/engine/commit/b1940e067a9961581998e9adfd6ba39c62f35735))
104
+
105
+ ### engine-prototype
106
+
107
+ - Remove ssr prototype components from base engine ([4f3e04f4b](https://github.com/underpostnet/engine/commit/4f3e04f4b5fcaca831139f4cdcd6ce871b50297d))
108
+
109
+ ### grpc-cyberia
110
+
111
+ - Add behavior passthrough in entity defaults merge ([7998df262](https://github.com/underpostnet/engine/commit/7998df26276de1693054bbf3eb00a368edccfb67))
112
+ - Fix merge entity defaults logic, preventing cross-instance entity defaults overlap ([0d64d6b8f](https://github.com/underpostnet/engine/commit/0d64d6b8ff40a1a889df9c767aa90052a08656f5))
113
+
114
+ ### cyberia-instance-engine
115
+
116
+ - Implement handler for authoritative initial spawn for new players connections logic and aoi radius customization in intance engine component ([89d68aca0](https://github.com/underpostnet/engine/commit/89d68aca0152d1800d6632cddbd428409845a58a))
117
+
118
+ ### cyberia-map-engine
119
+
120
+ - Add checkbox removeOnClick and enhance ui / ux ([5b557256f](https://github.com/underpostnet/engine/commit/5b557256fd17790913e9628440bd6e125d92ee0d))
121
+ - Add in client component MapEngineCyberia.js renameFilteredObjectLayerItemId with random factor ([c6519a1c0](https://github.com/underpostnet/engine/commit/c6519a1c0b3dfab9ba7856e3dd03914bd14a846a))
122
+
123
+ ## New release v:3.2.30 (2026-06-25)
4
124
 
5
125
  ### server
6
126
 
package/CLI-HELP.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Underpost CLI
2
2
 
3
- > underpost ci/cd cli v3.2.30
3
+ > underpost ci/cd cli v3.2.70
4
4
 
5
5
  **Usage:** `underpost [options] [command]`
6
6
 
@@ -212,10 +212,12 @@ Manages commits to a GitHub repository, supporting various commit types and opti
212
212
  | `--cached` | Commit staged changes only or context. |
213
213
  | `--hashes <hashes>` | Comma-separated list of specific file hashes of commits. |
214
214
  | `--extension <extension>` | specific file extensions of commits. |
215
- | `--changelog [latest-n]` | Print plain the changelog of the specified number of latest n commits, if no number is provided it will get the changelog to latest ci integration |
215
+ | `--changelog` | Print the plain changelog of the last N commits (see --from-n-commit, default 1). |
216
216
  | `--changelog-build` | Builds a CHANGELOG.md file based on the commit history |
217
217
  | `--changelog-min-version <version>` | Sets the minimum version limit for --changelog-build (default: 2.85.0) |
218
218
  | `--changelog-no-hash` | Excludes commit hashes from the generated changelog entries (used with --changelog-build). |
219
+ | `--changelog-msg` | Print the sanitized, commit-ready changelog message of the last N commits (see --from-n-commit, default 1). Empty when there are no tagged entries. |
220
+ | `--from-n-commit <n>` | Number of latest commits to include in --changelog/--changelog-msg (default: 1). |
219
221
  | `--unpush` | With --log, automatically sets range to unpushed commits ahead of remote. |
220
222
  | `-b` | Shows the current Git branch name. |
221
223
  | `-p [branch]` | Shows the reflog for the specified branch. |
@@ -517,7 +519,7 @@ Manages secrets for various platforms.
517
519
 
518
520
  | Argument | Description |
519
521
  | --- | --- |
520
- | `platform` | The secret management platform. Options: underpost, globalSecretClean. |
522
+ | `platform` | The secret management platform. Options: underpost, sanitizeSecretEnvFile, globalSecretClean. |
521
523
 
522
524
  #### Options
523
525
 
@@ -547,19 +549,21 @@ Manages Docker images, including building, saving, and loading into Kubernetes c
547
549
  | `--rm <image-id>` | Removes specified Underpost Dockerfile images. |
548
550
  | `--path [path]` | The path to the Dockerfile directory. |
549
551
  | `--image-name [image-name]` | Sets a custom name for the Docker image. |
550
- | `--image-path [image-path]` | Sets the output path for the tar image archive. |
552
+ | `--image-out-path [image-out-path]` | Sets the output path for the tar image archive. |
551
553
  | `--dockerfile-name [dockerfile-name]` | Sets a custom name for the Dockerfile. |
552
554
  | `--podman-save` | Exports the built image as a tar file using Podman. |
553
- | `--pull-base` | Pulls base images and builds a "rockylinux9-underpost" image. |
555
+ | `--pull-base` | Pulls the base image prerequisites (rockylinux:9) on the host; combine with --build. |
554
556
  | `--spec` | Get current cached list of container images used by all pods |
555
557
  | `--namespace <namespace>` | Kubernetes namespace for image operations (defaults to "default"). |
556
558
  | `--kind` | Set kind cluster env image context management. |
557
559
  | `--kubeadm` | Set kubeadm cluster env image context management. |
558
560
  | `--k3s` | Set k3s cluster env image context management. |
561
+ | `--docker-compose` | Load the built image tar into the local Docker store for Docker Compose availability. |
559
562
  | `--node-name` | Set node name for kubeadm or k3s cluster env image context management. |
560
563
  | `--reset` | Performs a build without using the cache. |
561
564
  | `--dev` | Use development mode. |
562
565
  | `--pull-dockerhub <dockerhub-image>` | Sets a custom Docker Hub image for base image pulls. |
566
+ | `--import-tar <tar-path>` | Load a pre-built image tar archive (e.g. ./image-v1.0.0.tar) into the enabled target(s) without building. Combine with --kind, --kubeadm, --k3s and/or --docker-compose; the archive is loaded into each enabled one. |
563
567
  | `-h, --help` | display help for command |
564
568
 
565
569
  ---
@@ -820,7 +824,7 @@ Runs specified scripts using various runners.
820
824
 
821
825
  | Argument | Description |
822
826
  | --- | --- |
823
- | `runner-id` | The runner ID to run. Options: dev-cluster,etc-hosts,ipfs-expose,metadata,svc-ls,svc-rm,ssh-deploy-info,node-move,dev-hosts-expose,dev-hosts-restore,cluster-build,template-deploy,template-deploy-local,docker-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,instance-build-manifest,ls-deployments,host-update,install-crio,dd-container,ip-info,db-client,git-conf,promote,metrics,cluster,deploy,disk-clean,disk-devices,disk-usage,dev,service,sh,log,ps,pid-info,background,ports,deploy-test,tf-vae-test,spark-template,pull-rocky-image,rmi,kill,generate-pass,secret,underpost-config,gpu-env,tf-gpu-test,deploy-job,push-bundle,pull-bundle,build-cluster-deployment-manifests,monitor-ui,shared-dir,shared-dir-add-user. |
827
+ | `runner-id` | The runner ID to run. Options: dev-cluster,etc-hosts,ipfs-expose,metadata,svc-ls,svc-rm,ssh-deploy-info,node-move,dev-hosts-expose,dev-hosts-restore,cluster-build,template-deploy,template-deploy-local,docker-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,deploy-key,instance-build-manifest,ls-deployments,host-update,install-crio,dd-container,ip-info,db-client,git-conf,promote,metrics,cluster,deploy,disk-clean,disk-devices,disk-usage,dev,service,sh,log,ps,pid-info,background,ports,deploy-test,tf-vae-test,spark-template,pull-rocky-image,rmi,kill,generate-pass,secret,underpost-config,gpu-env,tf-gpu-test,deploy-job,push-bundle,pull-bundle,build-cluster-deployment-manifests,monitor-ui,shared-dir,shared-dir-add-user. |
824
828
  | `path` | The input value, identifier, or path for the operation. |
825
829
 
826
830
  #### Options
@@ -871,6 +875,7 @@ Runs specified scripts using various runners.
871
875
  | `--kubeadm` | Sets the kubeadm cluster context for the runner execution. |
872
876
  | `--k3s` | Sets the k3s cluster context for the runner execution. |
873
877
  | `--kind` | Sets the kind cluster context for the runner execution. |
878
+ | `--traffic <traffic>` | Blue/green traffic colour to bake into generated manifests (default: blue). |
874
879
  | `--git-clean` | Runs git clean on volume mount paths before copying. |
875
880
  | `--deploy-id <deploy-id>` | Sets deploy id context for the runner execution. |
876
881
  | `--user <user>` | Sets user context for the runner execution. |
@@ -920,6 +925,7 @@ General-purpose Docker Compose development pipeline (mirrors the Kubernetes dev
920
925
  | `--reset` | Comprehensive teardown (equivalent to cluster --reset): removes all stack containers, the network, named volumes (destroys data), orphans, and generated artifacts. |
921
926
  | `--force` | Force reinstall (--install), remove volumes (--down), or also drop the env-file (--reset). |
922
927
  | `--deploy-id <deploy-id>` | Deployment to run as the app container (default: dd-default). 'dd-default' self-bootstraps a fresh engine; any other id runs the standard 'underpost start' command (mirrors src/cli/deploy.js). |
928
+ | `--docker-compose-id <docker-compose-id>` | Selects a canonical custom-workflow stack at engine-private/conf/<deploy-id>/docker-compose/<docker-compose-id>/ (docker-compose.yml + compose.env + nginx.conf, used as-is; nginx/env generation is skipped). e.g. --deploy-id dd-cyberia --docker-compose-id cyberia for the Cyberia MMO ecosystem. |
923
929
  | `--env <env>` | Deployment environment for non-default deploy ids (default: development). |
924
930
  | `--generate` | Render dynamic supporting files (nginx router config, env-file, app-command override). |
925
931
  | `--up` | Start the full stack detached (regenerates config first). |
package/README.md CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  <div align="center">
18
18
 
19
- [![Node.js CI](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml) [![Test](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml) [![Downloads](https://img.shields.io/npm/dm/underpost.svg)](https://www.npmjs.com/package/underpost) [![](https://data.jsdelivr.com/v1/package/npm/underpost/badge)](https://www.jsdelivr.com/package/npm/underpost) [![Socket Badge](https://socket.dev/api/badge/npm/package/underpost/3.2.30)](https://socket.dev/npm/package/underpost/overview/3.2.30) [![Coverage Status](https://coveralls.io/repos/github/underpostnet/engine/badge.svg?branch=master)](https://coveralls.io/github/underpostnet/engine?branch=master) [![Version](https://img.shields.io/npm/v/underpost.svg)](https://www.npmjs.org/package/underpost) [![License](https://img.shields.io/npm/l/underpost.svg)](https://www.npmjs.com/package/underpost)
19
+ [![Node.js CI](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml) [![Test](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml) [![Downloads](https://img.shields.io/npm/dm/underpost.svg)](https://www.npmjs.com/package/underpost) [![](https://data.jsdelivr.com/v1/package/npm/underpost/badge)](https://www.jsdelivr.com/package/npm/underpost) [![Socket Badge](https://socket.dev/api/badge/npm/package/underpost/3.2.70)](https://socket.dev/npm/package/underpost/overview/3.2.70) [![Coverage Status](https://coveralls.io/repos/github/underpostnet/engine/badge.svg?branch=master)](https://coveralls.io/github/underpostnet/engine?branch=master) [![Version](https://img.shields.io/npm/v/underpost.svg)](https://www.npmjs.org/package/underpost) [![License](https://img.shields.io/npm/l/underpost.svg)](https://www.npmjs.com/package/underpost)
20
20
 
21
21
  </div>
22
22
 
@@ -88,7 +88,7 @@ npm run dev
88
88
  <!-- cli-index-start -->
89
89
  ## Underpost CLI
90
90
 
91
- > underpost ci/cd cli v3.2.30
91
+ > underpost ci/cd cli v3.2.70
92
92
 
93
93
  **Usage:** `underpost [options] [command]`
94
94
 
package/bin/build.js CHANGED
@@ -154,6 +154,16 @@ const buildDeployTemplate = async (confName) => {
154
154
  if (!fs.existsSync(`${basePath}/images`)) fs.mkdirSync(`${basePath}/images`);
155
155
 
156
156
  fs.copyFileSync(`./.github/workflows/${repoName}.ci.yml`, `${basePath}/.github/workflows/${repoName}.ci.yml`);
157
+ if (fs.existsSync(`./.github/workflows/docker-image.${repoName}.ci.yml`))
158
+ fs.copyFileSync(
159
+ `./.github/workflows/docker-image.${repoName}.ci.yml`,
160
+ `${basePath}/.github/workflows/docker-image.${repoName}.ci.yml`,
161
+ );
162
+ if (fs.existsSync(`./.github/workflows/docker-image.${repoName}.dev.ci.yml`))
163
+ fs.copyFileSync(
164
+ `./.github/workflows/docker-image.${repoName}.dev.ci.yml`,
165
+ `${basePath}/.github/workflows/docker-image.${repoName}.dev.ci.yml`,
166
+ );
157
167
  fs.copyFileSync(`./.github/workflows/${repoName}.cd.yml`, `${basePath}/.github/workflows/${repoName}.cd.yml`);
158
168
 
159
169
  if (fs.existsSync(`./typedoc.${confName}.json`)) {
@@ -179,6 +189,26 @@ const buildDeployTemplate = async (confName) => {
179
189
  `${basePath}/.gitignore`,
180
190
  fs.readFileSync(`.gitignore`, 'utf8').split('# Ignore ERP / CRM custom prototypes src')[0],
181
191
  );
192
+
193
+ // Process catalog copies — each [src, dest] pair is copied from engine root to the template target.
194
+ if (catalog.copies && catalog.copies.length) {
195
+ for (const [src, dest] of catalog.copies) {
196
+ if (fs.existsSync(src)) {
197
+ logger.info(`Build copy`, `${src} -> ${dest}`);
198
+ fs.copySync(src, `${basePath}/${dest.replace(/^\.\//, '')}`);
199
+ }
200
+ }
201
+ }
202
+
203
+ // Process catalog moves — each [src, dest] pair is moved from engine src to template dest.
204
+ if (catalog.moves && catalog.moves.length) {
205
+ for (const [src, dest] of catalog.moves) {
206
+ if (fs.existsSync(src)) {
207
+ logger.info(`Build move`, `${src} -> ${dest}`);
208
+ fs.moveSync(src, `${basePath}/${dest.replace(/^\.\//, '')}`, { overwrite: true });
209
+ }
210
+ }
211
+ }
182
212
  };
183
213
 
184
214
  const program = new Command();
package/bin/deploy.js CHANGED
@@ -422,7 +422,7 @@ ${shellExec(`git log | grep Author: | sort -u`, { stdout: true }).split(`\n`).jo
422
422
  shellExec(`sudo rm -rf ${path}/${imageName.replace(':', '_')}.tar`);
423
423
  const args = [
424
424
  `node bin image --build --path ${path}/backend/`,
425
- `--image-name=${imageName} --image-path=${path}`,
425
+ `--image-name=${imageName} --image-out-path=${path}`,
426
426
  `--podman-save --${process.argv.includes('kubeadm') ? 'kubeadm' : 'kind'} --reset`,
427
427
  ];
428
428
  shellExec(args.join(' '));
@@ -434,7 +434,7 @@ ${shellExec(`git log | grep Author: | sort -u`, { stdout: true }).split(`\n`).jo
434
434
  shellExec(`sudo rm -rf ${path}/${imageName.replace(':', '_')}.tar`);
435
435
  const args = [
436
436
  `node bin image --build --path ${path}/frontend/`,
437
- `--image-name=${imageName} --image-path=${path}`,
437
+ `--image-name=${imageName} --image-out-path=${path}`,
438
438
  `--podman-save --${process.argv.includes('kubeadm') ? 'kubeadm' : 'kind'} --reset`,
439
439
  ];
440
440
  shellExec(args.join(' '));
package/bump.config.js CHANGED
@@ -17,6 +17,7 @@ export default {
17
17
  'package-lock.json',
18
18
  // engine-private confs are git-ignored and visited only if present at bump time.
19
19
  'engine-private/conf/**/package.json',
20
+ 'scripts/*',
20
21
  ],
21
22
  commit: false,
22
23
  tag: false,
@@ -26,7 +26,7 @@ services:
26
26
  mongodb:
27
27
  image: ${MONGO_IMAGE:-mongo:latest}
28
28
  container_name: dd-mongodb
29
- entrypoint: ["bash", "/docker-init/entrypoint.sh"]
29
+ entrypoint: ['bash', '/docker-init/entrypoint.sh']
30
30
  environment:
31
31
  MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME:?set MONGO_INITDB_ROOT_USERNAME in docker/compose.env}
32
32
  MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD:?set MONGO_INITDB_ROOT_PASSWORD in docker/compose.env}
@@ -38,9 +38,9 @@ services:
38
38
  networks:
39
39
  - dd-internal
40
40
  expose:
41
- - "27017"
41
+ - '27017'
42
42
  ports:
43
- - "${MONGO_HOST_PORT:-27017}:27017"
43
+ - '${MONGO_HOST_PORT:-27017}:27017'
44
44
  healthcheck:
45
45
  test:
46
46
  - CMD-SHELL
@@ -58,18 +58,18 @@ services:
58
58
  valkey-service:
59
59
  image: ${VALKEY_IMAGE:-valkey/valkey:latest}
60
60
  container_name: dd-valkey
61
- command: ["valkey-server", "--port", "6379", "--bind", "0.0.0.0", "--protected-mode", "no"]
61
+ command: ['valkey-server', '--port', '6379', '--bind', '0.0.0.0', '--protected-mode', 'no']
62
62
  volumes:
63
63
  - valkey-data:/data
64
64
  networks:
65
65
  - dd-internal
66
66
  expose:
67
- - "6379"
67
+ - '6379'
68
68
  # NodePort equivalent (manifests/valkey/valkey-nodeport.yaml nodePort 32079).
69
69
  ports:
70
- - "${VALKEY_NODEPORT:-32079}:6379"
70
+ - '${VALKEY_NODEPORT:-32079}:6379'
71
71
  healthcheck:
72
- test: ["CMD", "valkey-cli", "-p", "6379", "ping"]
72
+ test: ['CMD', 'valkey-cli', '-p', '6379', 'ping']
73
73
  interval: 10s
74
74
  timeout: 5s
75
75
  retries: 10
@@ -81,7 +81,7 @@ services:
81
81
  # (dd-default-development-blue). Connection targets use Docker service
82
82
  # discovery instead of hardcoded localhost.
83
83
  app:
84
- image: ${APP_IMAGE:-underpost/underpost-engine}:${APP_TAG:-v3.2.22}
84
+ image: ${APP_IMAGE:-underpost/underpost-engine}:${APP_TAG:-v3.2.70}
85
85
  container_name: dd-app
86
86
  # The start command is supplied by the generated override docker/compose.app.yml
87
87
  # (see `underpost docker-compose --generate --deploy-id <id>`), keeping this
@@ -100,18 +100,18 @@ services:
100
100
  networks:
101
101
  - dd-internal
102
102
  expose:
103
- - "4001"
104
- - "4002"
105
- - "4003"
106
- - "4004"
103
+ - '4001'
104
+ - '4002'
105
+ - '4003'
106
+ - '4004'
107
107
  # Direct access to the LoadBalancer-equivalent ports (manifest 4001-4004).
108
108
  ports:
109
- - "${APP_PORT_4001:-4001}:4001"
110
- - "${APP_PORT_4002:-4002}:4002"
111
- - "${APP_PORT_4003:-4003}:4003"
112
- - "${APP_PORT_4004:-4004}:4004"
109
+ - '${APP_PORT_4001:-4001}:4001'
110
+ - '${APP_PORT_4002:-4002}:4002'
111
+ - '${APP_PORT_4003:-4003}:4003'
112
+ - '${APP_PORT_4004:-4004}:4004'
113
113
  healthcheck:
114
- test: ["CMD-SHELL", "timeout 2 bash -c '</dev/tcp/127.0.0.1/4001' || exit 1"]
114
+ test: ['CMD-SHELL', "timeout 2 bash -c '</dev/tcp/127.0.0.1/4001' || exit 1"]
115
115
  interval: 15s
116
116
  timeout: 5s
117
117
  retries: 5
@@ -134,9 +134,9 @@ services:
134
134
  networks:
135
135
  - dd-internal
136
136
  ports:
137
- - "${PROXY_HTTP_PORT:-80}:80"
137
+ - '${PROXY_HTTP_PORT:-80}:80'
138
138
  healthcheck:
139
- test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1/healthz"]
139
+ test: ['CMD', 'wget', '-q', '-O', '-', 'http://127.0.0.1/healthz']
140
140
  interval: 15s
141
141
  timeout: 5s
142
142
  retries: 5
@@ -162,11 +162,11 @@ services:
162
162
  networks:
163
163
  - dd-internal
164
164
  expose:
165
- - "9090"
165
+ - '9090'
166
166
  ports:
167
- - "${PROMETHEUS_PORT:-9090}:9090"
167
+ - '${PROMETHEUS_PORT:-9090}:9090'
168
168
  healthcheck:
169
- test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:9090/-/healthy"]
169
+ test: ['CMD', 'wget', '-q', '-O', '-', 'http://127.0.0.1:9090/-/healthy']
170
170
  interval: 15s
171
171
  timeout: 5s
172
172
  retries: 5
@@ -185,18 +185,18 @@ services:
185
185
  environment:
186
186
  GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER:-admin}
187
187
  GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:-admin}
188
- GF_USERS_ALLOW_SIGN_UP: "false"
188
+ GF_USERS_ALLOW_SIGN_UP: 'false'
189
189
  volumes:
190
190
  - ./docker/grafana/provisioning:/etc/grafana/provisioning:ro
191
191
  - grafana-data:/var/lib/grafana
192
192
  networks:
193
193
  - dd-internal
194
194
  expose:
195
- - "3000"
195
+ - '3000'
196
196
  ports:
197
- - "${GRAFANA_PORT:-3000}:3000"
197
+ - '${GRAFANA_PORT:-3000}:3000'
198
198
  healthcheck:
199
- test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:3000/api/health"]
199
+ test: ['CMD', 'wget', '-q', '-O', '-', 'http://127.0.0.1:3000/api/health']
200
200
  interval: 15s
201
201
  timeout: 5s
202
202
  retries: 5
@@ -23,7 +23,7 @@ spec:
23
23
  spec:
24
24
  containers:
25
25
  - name: dd-cron-backup
26
- image: underpost/underpost-engine:v3.2.30
26
+ image: underpost/underpost-engine:v3.2.70
27
27
  command:
28
28
  - /bin/sh
29
29
  - -c
@@ -23,7 +23,7 @@ spec:
23
23
  spec:
24
24
  containers:
25
25
  - name: dd-cron-dns
26
- image: underpost/underpost-engine:v3.2.30
26
+ image: underpost/underpost-engine:v3.2.70
27
27
  command:
28
28
  - /bin/sh
29
29
  - -c
@@ -17,7 +17,7 @@ spec:
17
17
  spec:
18
18
  containers:
19
19
  - name: dd-default-development-blue
20
- image: underpost/underpost-engine:v3.2.30
20
+ image: underpost/underpost-engine:v3.2.70
21
21
  # resources:
22
22
  # requests:
23
23
  # memory: "124Ki"
@@ -98,7 +98,7 @@ spec:
98
98
  spec:
99
99
  containers:
100
100
  - name: dd-default-development-green
101
- image: underpost/underpost-engine:v3.2.30
101
+ image: underpost/underpost-engine:v3.2.70
102
102
  # resources:
103
103
  # requests:
104
104
  # memory: "124Ki"