cyberia 3.2.12 → 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.
Files changed (194) hide show
  1. package/.env.example +127 -68
  2. package/.github/workflows/cyberia-client.cd.yml +40 -0
  3. package/.github/workflows/cyberia-server.cd.yml +40 -0
  4. package/.github/workflows/docker-image.cyberia-client.ci.yml +49 -0
  5. package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +48 -0
  6. package/.github/workflows/docker-image.cyberia-server.ci.yml +69 -0
  7. package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +69 -0
  8. package/.github/workflows/docker-image.engine-cyberia.ci.yml +52 -0
  9. package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +52 -0
  10. package/.github/workflows/engine-cyberia.cd.yml +34 -24
  11. package/.github/workflows/engine-cyberia.ci.yml +27 -5
  12. package/.github/workflows/ghpkg.ci.yml +89 -1
  13. package/.github/workflows/gitlab.ci.yml +1 -1
  14. package/.github/workflows/hardhat.ci.yml +1 -1
  15. package/.github/workflows/npmpkg.ci.yml +19 -12
  16. package/.github/workflows/publish.ci.yml +2 -2
  17. package/.github/workflows/publish.cyberia.ci.yml +5 -16
  18. package/.github/workflows/pwa-microservices-template-page.cd.yml +1 -8
  19. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  20. package/CHANGELOG.md +451 -1
  21. package/CLI-HELP.md +1040 -1130
  22. package/Dockerfile +141 -43
  23. package/Dockerfile.dev +143 -0
  24. package/Dockerfile.test +165 -0
  25. package/README.md +1 -1
  26. package/baremetal/commission-workflows.json +1 -0
  27. package/bin/build.js +128 -136
  28. package/bin/build.template.js +25 -179
  29. package/bin/cyberia.js +1089 -188
  30. package/bin/deploy.js +6 -3
  31. package/bin/index.js +1089 -188
  32. package/bump.config.js +1 -0
  33. package/compose.env +131 -0
  34. package/conf.js +19 -1
  35. package/deployment.yaml +74 -2
  36. package/docker-compose.yml +316 -0
  37. package/hardhat/hardhat.config.js +2 -2
  38. package/hardhat/package-lock.json +620 -2041
  39. package/hardhat/package.json +7 -5
  40. package/hardhat/scripts/deployObjectLayerToken.js +18 -18
  41. package/hardhat/test/ObjectLayerToken.js +378 -274
  42. package/ipfs/configure-ipfs.sh +13 -0
  43. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
  44. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  45. package/manifests/deployment/dd-cyberia-development/deployment.yaml +74 -2
  46. package/manifests/deployment/dd-cyberia-development/grpc-service.yaml +17 -0
  47. package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +32 -0
  48. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  49. package/mongodb/entrypoint.sh +76 -0
  50. package/nginx.conf +87 -0
  51. package/package.json +34 -22
  52. package/pv-pvc.yaml +32 -0
  53. package/scripts/disk-clean.sh +85 -60
  54. package/scripts/kubeadm-node-setup.sh +317 -0
  55. package/scripts/link-local-underpost-cli.sh +6 -0
  56. package/scripts/rocky-kickstart.sh +877 -185
  57. package/scripts/rpmfusion-ffmpeg-setup.sh +26 -50
  58. package/scripts/test-monitor.sh +248 -0
  59. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +43 -7
  60. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +17 -25
  61. package/src/api/cyberia-action/cyberia-action.controller.js +19 -0
  62. package/src/api/cyberia-action/cyberia-action.model.js +21 -29
  63. package/src/api/cyberia-action/cyberia-action.router.js +42 -7
  64. package/src/api/cyberia-action/cyberia-action.service.js +20 -4
  65. package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +58 -57
  66. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +37 -6
  67. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +8 -2
  68. package/src/api/cyberia-entity/cyberia-entity.router.js +39 -7
  69. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +74 -0
  70. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +67 -0
  71. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +63 -0
  72. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +46 -0
  73. package/src/api/cyberia-instance/cyberia-fallback-world.js +62 -10
  74. package/src/api/cyberia-instance/cyberia-instance.model.js +32 -2
  75. package/src/api/cyberia-instance/cyberia-instance.router.js +6 -6
  76. package/src/api/cyberia-instance/cyberia-world-generator.js +116 -3
  77. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +3 -0
  78. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +39 -7
  79. package/src/api/cyberia-map/cyberia-map.router.js +21 -6
  80. package/src/api/cyberia-quest/cyberia-quest.controller.js +38 -0
  81. package/src/api/cyberia-quest/cyberia-quest.router.js +47 -7
  82. package/src/api/cyberia-quest/cyberia-quest.service.js +59 -4
  83. package/src/api/cyberia-saga/cyberia-saga.controller.js +74 -0
  84. package/src/api/cyberia-saga/cyberia-saga.model.js +59 -0
  85. package/src/api/cyberia-saga/cyberia-saga.router.js +63 -0
  86. package/src/api/cyberia-saga/cyberia-saga.service.js +42 -0
  87. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +551 -122
  88. package/src/api/cyberia-skill/cyberia-skill.controller.js +74 -0
  89. package/src/api/cyberia-skill/cyberia-skill.model.js +50 -0
  90. package/src/api/cyberia-skill/cyberia-skill.router.js +63 -0
  91. package/src/api/cyberia-skill/cyberia-skill.service.js +42 -0
  92. package/src/api/ipfs/ipfs.service.js +28 -15
  93. package/src/api/object-layer/object-layer.router.js +25 -15
  94. package/src/api/object-layer/object-layer.service.js +15 -20
  95. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +39 -7
  96. package/src/cli/baremetal.js +717 -16
  97. package/src/cli/cluster.js +80 -5
  98. package/src/cli/deploy.js +326 -292
  99. package/src/cli/docker-compose.js +648 -0
  100. package/src/cli/env.js +12 -6
  101. package/src/cli/fs.js +75 -30
  102. package/src/cli/image.js +187 -55
  103. package/src/cli/index.js +157 -6
  104. package/src/cli/kickstart.js +142 -20
  105. package/src/cli/monitor.js +387 -6
  106. package/src/cli/release.js +72 -15
  107. package/src/cli/repository.js +339 -40
  108. package/src/cli/run.js +678 -186
  109. package/src/cli/secrets.js +82 -48
  110. package/src/cli/ssh.js +234 -0
  111. package/src/cli/static.js +2 -2
  112. package/src/client/components/core/PanelForm.js +44 -44
  113. package/src/client/components/cyberia/ActionEngineCyberia.js +1867 -0
  114. package/src/client/components/cyberia/EntityEngineCyberia.js +585 -0
  115. package/src/client/components/cyberia/InstanceEngineCyberia.js +219 -13
  116. package/src/client/components/cyberia/MapEngineCyberia.js +154 -71
  117. package/src/client/components/cyberia/ObjectLayerEngineModal.js +40 -63
  118. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +34 -20
  119. package/src/client/components/cyberia/SharedDefaultsCyberia.js +195 -4
  120. package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +66 -0
  121. package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +8 -0
  122. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +8 -0
  123. package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +92 -20
  124. package/src/client/public/cyberia-docs/ARCHITECTURE.md +272 -50
  125. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +3 -3
  126. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +39 -22
  127. package/src/client/public/cyberia-docs/CYBERIA-LORE.md +88 -0
  128. package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +394 -0
  129. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +28 -12
  130. package/src/client/public/cyberia-docs/CYBERIA.md +1 -1
  131. package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +27 -5
  132. package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
  133. package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
  134. package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +99 -0
  135. package/src/client/services/cyberia-instance/cyberia-instance.management.js +2 -2
  136. package/src/client/services/cyberia-map/cyberia-map.management.js +2 -2
  137. package/src/client/services/cyberia-saga/cyberia-saga.service.js +99 -0
  138. package/src/client/services/cyberia-skill/cyberia-skill.service.js +99 -0
  139. package/src/client/services/object-layer/object-layer.management.js +6 -6
  140. package/src/{server → client-builder}/client-build-docs.js +15 -5
  141. package/src/{server → client-builder}/client-build-live.js +3 -3
  142. package/src/{server → client-builder}/client-build.js +25 -22
  143. package/src/{server → client-builder}/client-dev-server.js +3 -3
  144. package/src/{server → client-builder}/client-icons.js +2 -2
  145. package/src/{server → client-builder}/ssr.js +5 -5
  146. package/src/client.build.js +1 -3
  147. package/src/client.dev.js +1 -1
  148. package/src/db/mongo/MongoBootstrap.js +12 -12
  149. package/src/db/mongo/MongooseDB.js +2 -1
  150. package/src/grpc/cyberia/grpc-server.js +255 -70
  151. package/src/index.js +12 -1
  152. package/src/mailer/EmailRender.js +1 -1
  153. package/src/{server → projects/cyberia}/atlas-sprite-sheet-generator.js +2 -2
  154. package/src/{server → projects/cyberia}/besu-genesis-generator.js +3 -3
  155. package/src/projects/cyberia/catalog-cyberia.js +81 -0
  156. package/src/projects/cyberia/gemini-client.js +175 -0
  157. package/src/projects/cyberia/generate-saga.js +2107 -0
  158. package/src/{server → projects/cyberia}/ipfs-client.js +6 -4
  159. package/src/{server → projects/cyberia}/object-layer.js +12 -108
  160. package/src/{server → projects/cyberia}/semantic-layer-generator-floor.js +1 -1
  161. package/src/{server → projects/cyberia}/semantic-layer-generator-resource.js +1 -1
  162. package/src/{server → projects/cyberia}/semantic-layer-generator-skin.js +1 -1
  163. package/src/{server → projects/cyberia}/semantic-layer-generator.js +2 -2
  164. package/src/{server → projects/cyberia}/shape-generator.js +2 -2
  165. package/src/projects/underpost/catalog-underpost.js +60 -0
  166. package/src/runtime/cyberia-client/Dockerfile +31 -83
  167. package/src/runtime/cyberia-client/Dockerfile.dev +23 -30
  168. package/src/runtime/cyberia-server/Dockerfile +23 -42
  169. package/src/runtime/cyberia-server/Dockerfile.dev +20 -35
  170. package/src/runtime/engine-cyberia/Dockerfile +143 -0
  171. package/src/runtime/engine-cyberia/Dockerfile.dev +143 -0
  172. package/src/runtime/engine-cyberia/Dockerfile.test +165 -0
  173. package/src/runtime/engine-cyberia/compose.env +131 -0
  174. package/src/runtime/engine-cyberia/docker-compose.yml +316 -0
  175. package/src/runtime/engine-cyberia/ipfs/configure-ipfs.sh +13 -0
  176. package/src/runtime/engine-cyberia/mongodb/entrypoint.sh +76 -0
  177. package/src/runtime/engine-cyberia/nginx.conf +87 -0
  178. package/src/runtime/express/Express.js +2 -2
  179. package/src/runtime/nginx/Nginx.js +250 -0
  180. package/src/runtime/wp/Dockerfile +3 -3
  181. package/src/server/catalog.js +72 -0
  182. package/src/server/conf.js +415 -60
  183. package/src/server/runtime-status.js +252 -0
  184. package/src/server/start.js +42 -11
  185. package/src/server.js +6 -2
  186. package/test/cyberia-instance-conf-defaults.test.js +140 -0
  187. package/test/deploy-monitor.test.js +267 -0
  188. package/test/shape-generator.test.js +7 -1
  189. package/typedoc.dd-cyberia.json +3 -1
  190. package/typedoc.json +3 -1
  191. package/manifests/deployment/dd-test-development/deployment.yaml +0 -256
  192. package/manifests/deployment/dd-test-development/proxy.yaml +0 -102
  193. /package/src/client/ssr/{Render.js → RootDocument.js} +0 -0
  194. /package/src/{server → client-builder}/client-formatted.js +0 -0
@@ -1,6 +1,5 @@
1
1
  name: CD | Engine cyberia | remote ssh
2
2
  on:
3
- push:
4
3
  workflow_dispatch:
5
4
  inputs:
6
5
  job:
@@ -18,12 +17,7 @@ permissions:
18
17
 
19
18
  jobs:
20
19
  deploy:
21
- if: >-
22
- github.repository == 'underpostnet/engine'
23
- && (
24
- startsWith(github.event.head_commit.message, 'cd(ssh-engine-cyberia)')
25
- || (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'deploy')
26
- )
20
+ if: github.event.inputs.job == 'deploy'
27
21
  name: Remote SSH deployment
28
22
  runs-on: ubuntu-latest
29
23
  steps:
@@ -53,12 +47,7 @@ jobs:
53
47
  sudo -n -- /bin/bash -lc "node bin run secret"
54
48
  sudo -n -- /bin/bash -lc "node bin run deploy dd-cyberia"
55
49
  sync-and-deploy:
56
- if: >-
57
- github.repository == 'underpostnet/engine'
58
- && (
59
- startsWith(github.event.head_commit.message, 'cd(ssh-sync-engine-cyberia)')
60
- || (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'sync-and-deploy')
61
- )
50
+ if: github.event.inputs.job == 'sync-and-deploy'
62
51
  name: Remote SSH sync and deploy
63
52
  runs-on: ubuntu-latest
64
53
  steps:
@@ -82,23 +71,43 @@ jobs:
82
71
  set -e
83
72
  set -o pipefail
84
73
  echo "Starting remote sync and deploy"
74
+ TARGET_NODE=localhost.localdomain
85
75
  cd /home/dd/engine
86
76
  sudo -n -- /bin/bash -lc "node bin run pull"
87
77
  sudo -n -- /bin/bash -lc "npm install"
88
78
  sudo -n -- /bin/bash -lc "node bin run secret"
89
- sudo -n -- /bin/bash -lc "node bin run clean src/client/public/cyberia"
90
- sudo -n -- /bin/bash -lc "node bin fs src/client/public/cyberia --git --pull --recursive --deploy-id dd-cyberia"
91
- sudo -n -- /bin/bash -lc "node bin run clean src/client/public/underpost"
92
- sudo -n -- /bin/bash -lc "node bin fs src/client/public/underpost --git --pull --recursive --deploy-id dd-cyberia --storage-file-path './engine-private/conf/dd-cyberia/storage.underpost.json'"
93
79
  sudo -n -- /bin/bash -lc "npm run test"
94
- sudo -n -- /bin/bash -lc "node bin run sync --kubeadm --deploy-id-cron-jobs none --timeout-response 300000ms dd-cyberia"
80
+ sudo -n -- /bin/bash -lc "node bin run sync 'dd-cyberia,1,,underpost/engine-cyberia:v3.2.70' \
81
+ --kubeadm \
82
+ --deploy-id-cron-jobs none \
83
+ --timeout-response 300000ms \
84
+ --node-name ${TARGET_NODE} \
85
+ --ssh-key-path /home/dd/tmp/897as9dxhaskd9 \
86
+ --image-pull-policy Always \
87
+ --cmd 'cd /home/dd/engine, \
88
+ underpost clone underpostnet/engine-cyberia, \
89
+ mkdir -p /home/dd/engine/src/client/public/itemledger \
90
+ /home/dd/engine/src/client/public/cryptokoyn \
91
+ /home/dd/engine/src/client/components/cryptokoyn \
92
+ /home/dd/engine/src/client/components/itemledger \
93
+ /home/dd/engine/hardhat, \
94
+ cp -a ./engine-cyberia/src/client/public/itemledger/. /home/dd/engine/src/client/public/itemledger/, \
95
+ cp -a ./engine-cyberia/src/client/public/cryptokoyn/. /home/dd/engine/src/client/public/cryptokoyn/, \
96
+ cp -a ./engine-cyberia/src/client/components/cryptokoyn/. /home/dd/engine/src/client/components/cryptokoyn/, \
97
+ cp -a ./engine-cyberia/src/client/components/itemledger/. /home/dd/engine/src/client/components/itemledger/, \
98
+ cp -a ./engine-cyberia/src/client/Itemledger.index.js /home/dd/engine/src/client/Itemledger.index.js, \
99
+ cp -a ./engine-cyberia/src/client/Cryptokoyn.index.js /home/dd/engine/src/client/Cryptokoyn.index.js, \
100
+ rm -rf ./engine-cyberia, \
101
+ sudo rm -rf ./engine-private/, \
102
+ node bin clone underpostnet/engine-cyberia-private, \
103
+ sudo mv ./engine-cyberia-private ./engine-private, \
104
+ node bin env dd-cyberia production, \
105
+ node ./engine-private/itc-scripts/dd-cyberia-0.js, \
106
+ node bin env dd-cyberia production, \
107
+ node bin client dd-cyberia, \
108
+ node bin start dd-cyberia production --run'"
95
109
  init:
96
- if: >-
97
- github.repository == 'underpostnet/engine'
98
- && (
99
- startsWith(github.event.head_commit.message, 'cd(ssh-init-engine-cyberia)')
100
- || (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'init')
101
- )
110
+ if: github.event.inputs.job == 'init'
102
111
  name: Remote SSH init deployment
103
112
  runs-on: ubuntu-latest
104
113
  steps:
@@ -126,6 +135,7 @@ jobs:
126
135
  sudo -n -- /bin/bash -lc "node bin run pull"
127
136
  sudo -n -- /bin/bash -lc "npm install"
128
137
  sudo -n -- /bin/bash -lc "node bin run secret"
138
+ sudo -n -- /bin/bash -lc "node bin/build dd-cyberia --conf"
129
139
  sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --sync --build-manifest --timeout-response 300000ms --versions green --replicas 1"
130
140
  sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --disable-update-proxy --git-clean"
131
141
  sudo -n -- /bin/bash -lc "node bin monitor dd-cyberia production --ready-deployment --promote --timeout-response 300000ms --versions green --replicas 1"
@@ -37,7 +37,7 @@ jobs:
37
37
  packages: write
38
38
  id-token: write
39
39
  steps:
40
- - uses: actions/checkout@v6
40
+ - uses: actions/checkout@v7
41
41
 
42
42
  - name: Install required packages
43
43
  run: |
@@ -61,13 +61,13 @@ jobs:
61
61
  - name: Build repository
62
62
  env:
63
63
  GITHUB_TOKEN: ${{ secrets.GIT_AUTH_TOKEN }}
64
+ GITHUB_USERNAME: ${{ github.repository_owner }}
64
65
  run: |
65
66
  cd .. && node engine/bin clone underpostnet/pwa-microservices-template
66
67
  if [ -n "${{ github.event.inputs.message }}" ]; then
67
68
  LAST_COMMIT_MESSAGE="${{ github.event.inputs.message }}"
68
69
  else
69
- FULL_MSG=$(cd pwa-microservices-template && git log -1 --pretty=%B 2>/dev/null || echo "")
70
- LAST_COMMIT_MESSAGE=$(echo "$FULL_MSG" | sed '1s/^[^:]*: [^ ]* //')
70
+ LAST_COMMIT_MESSAGE=$(cd engine && node bin cmt --changelog-msg --from-n-commit 1 --changelog-no-hash 2>/dev/null || echo "")
71
71
  fi
72
72
  SHOULD_CD="${{ github.event.inputs.sync }}"
73
73
  DEPLOY_TYPE="${{ github.event.inputs.deploy_type }}"
@@ -78,16 +78,38 @@ jobs:
78
78
  echo "[INFO] Should CD: $SHOULD_CD, Deploy type: $DEPLOY_TYPE"
79
79
  node engine/bin clone --bare underpostnet/engine-cyberia
80
80
  cd engine
81
+ git clone --depth 1 --no-checkout https://$GITHUB_TOKEN@github.com/underpostnet/engine-private.git ./engine-private
82
+ cd ./engine-private && git sparse-checkout set conf/dd-cyberia && git checkout && cd ..
81
83
  node bin/build dd-cyberia development
82
84
  cd ../pwa-microservices-template
83
85
  rm -rf ./.git
84
86
  mv ../engine-cyberia.git ./.git
87
+ mv ../engine/engine-private ./engine-private
88
+ npm install
89
+ node bin new --default-conf --deploy-id dd-cyberia
90
+ mv ./conf.dd-cyberia.js ./conf.js
91
+ rm -rf ./engine-private
85
92
  git init
86
93
  git config user.name 'underpostnet'
87
94
  git config user.email 'development@underpost.net'
88
95
  git add .
89
- git commit -m "$LAST_COMMIT_MESSAGE"
90
- node ../engine/bin push . underpostnet/engine-cyberia
96
+ if git diff --cached --quiet; then
97
+ echo "[INFO] No changes to publish; skipping commit and push."
98
+ else
99
+ git commit -m "$LAST_COMMIT_MESSAGE"
100
+ node ../engine/bin push . underpostnet/engine-cyberia
101
+ echo "[INFO] Dispatching canonical github package build engine-ghpkg-cyberia"
102
+ GHPKG_PAYLOAD=$(MSG="$LAST_COMMIT_MESSAGE" node -e '
103
+ const i = { conf_id: "cyberia" };
104
+ if (process.env.MSG) i.message = process.env.MSG;
105
+ process.stdout.write(JSON.stringify({ ref: "master", inputs: i }));
106
+ ')
107
+ curl -s -X POST \
108
+ -H "Accept: application/vnd.github.v3+json" \
109
+ -H "Authorization: token ${{ secrets.GIT_AUTH_TOKEN }}" \
110
+ "https://api.github.com/repos/underpostnet/engine/actions/workflows/ghpkg.ci.yml/dispatches" \
111
+ -d "$GHPKG_PAYLOAD"
112
+ fi
91
113
  if [ "$SHOULD_CD" = "true" ]; then
92
114
  if [ -z "$DEPLOY_TYPE" ]; then
93
115
  DEPLOY_TYPE="sync-and-deploy"
@@ -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
@@ -20,7 +30,7 @@ jobs:
20
30
  packages: write
21
31
  id-token: write
22
32
  steps:
23
- - uses: actions/checkout@v6
33
+ - uses: actions/checkout@v7
24
34
 
25
35
  - name: Install required packages
26
36
  run: |
@@ -57,6 +67,7 @@ jobs:
57
67
  - name: Clone and Push to github package repository
58
68
  env:
59
69
  GITHUB_TOKEN: ${{ secrets.GIT_AUTH_TOKEN }}
70
+ GITHUB_USERNAME: ${{ github.repository_owner }}
60
71
  run: |
61
72
  node bin clone --bare underpostnet/pwa-microservices-template-ghpkg
62
73
  rm -rf ./.git
@@ -70,3 +81,80 @@ jobs:
70
81
  git status
71
82
  git commit -m "$LAST_COMMIT_MESSAGE"
72
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
@@ -6,7 +6,7 @@ jobs:
6
6
  name: Update gitlab repo package Jobs
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
- - uses: actions/checkout@v6
9
+ - uses: actions/checkout@v7
10
10
  with:
11
11
  fetch-depth: 0
12
12
  lfs: true
@@ -31,7 +31,7 @@ jobs:
31
31
 
32
32
  steps:
33
33
  - name: Checkout repository
34
- uses: actions/checkout@v6
34
+ uses: actions/checkout@v7
35
35
 
36
36
  - name: Setup Node.js ${{ matrix.node-version }}
37
37
  uses: actions/setup-node@v6
@@ -11,7 +11,7 @@ on:
11
11
  required: false
12
12
  default: ''
13
13
  deploy_conf_id:
14
- description: 'Engine conf ID to dispatch after build (e.g., engine-core, engine-cyberia)'
14
+ description: 'Engine conf ID to dispatch after build'
15
15
  required: false
16
16
  default: ''
17
17
  deploy_type:
@@ -39,7 +39,7 @@ jobs:
39
39
  packages: write
40
40
  id-token: write
41
41
  steps:
42
- - uses: actions/checkout@v6
42
+ - uses: actions/checkout@v7
43
43
 
44
44
  - name: Install required packages
45
45
  run: |
@@ -85,20 +85,24 @@ jobs:
85
85
  run: |
86
86
  cd .. && node engine/bin clone underpostnet/pwa-microservices-template
87
87
  cd engine
88
- npm run update:template
88
+ npm run build:template
89
89
  cd ../pwa-microservices-template
90
90
  git remote set-url origin git@github.com:underpostnet/pwa-microservices-template.git
91
91
  git add .
92
92
  git config user.name 'underpostnet'
93
93
  git config user.email 'fcoverdugoa@underpost.net'
94
- node ../engine/bin cmt . ci package-pwa-microservices-template-ghpkg "$LAST_COMMIT_MESSAGE"
95
- node ../engine/bin push . underpostnet/pwa-microservices-template
94
+ if git diff --cached --quiet; then
95
+ echo "[INFO] No template changes to publish; skipping commit and push."
96
+ else
97
+ node ../engine/bin cmt . ci package-pwa-microservices-template-ghpkg "$LAST_COMMIT_MESSAGE"
98
+ node ../engine/bin push . underpostnet/pwa-microservices-template
99
+ fi
96
100
 
97
101
  - name: Dispatch all engine CIs
98
102
  run: |
99
103
  DEPLOY_CONF_ID="${{ github.event.inputs.deploy_conf_id }}"
100
104
  DEPLOY_TYPE="${{ github.event.inputs.deploy_type }}"
101
- for ENGINE in engine-core engine-cyberia engine-lampp engine-test; do
105
+ for ENGINE in engine-core engine-prototype engine-cyberia engine-lampp engine-test; do
102
106
  SYNC="false"
103
107
  DT=""
104
108
  if [ "$ENGINE" = "$DEPLOY_CONF_ID" ]; then
@@ -106,14 +110,17 @@ jobs:
106
110
  DT="$DEPLOY_TYPE"
107
111
  fi
108
112
  echo "[INFO] Dispatching ${ENGINE}.ci.yml (sync=$SYNC, deploy_type=$DT)"
109
- INPUTS="{\"sync\":\"${SYNC}\""
110
- if [ -n "$DT" ]; then
111
- INPUTS="${INPUTS},\"deploy_type\":\"${DT}\""
112
- fi
113
- 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
+ ')
114
121
  curl -s -X POST \
115
122
  -H "Accept: application/vnd.github.v3+json" \
116
123
  -H "Authorization: token ${{ secrets.GIT_AUTH_TOKEN }}" \
117
124
  "https://api.github.com/repos/underpostnet/engine/actions/workflows/${ENGINE}.ci.yml/dispatches" \
118
- -d "{\"ref\":\"master\",\"inputs\":${INPUTS}}"
125
+ -d "$PAYLOAD"
119
126
  done
@@ -17,7 +17,7 @@ jobs:
17
17
  packages: write
18
18
  id-token: write
19
19
  steps:
20
- - uses: actions/checkout@v6
20
+ - uses: actions/checkout@v7
21
21
 
22
22
  - name: Install required packages
23
23
  run: |
@@ -54,7 +54,7 @@ jobs:
54
54
  packages: write
55
55
  id-token: write
56
56
  steps:
57
- - uses: actions/checkout@v6
57
+ - uses: actions/checkout@v7
58
58
 
59
59
  - uses: actions/setup-node@v6
60
60
  with:
@@ -12,7 +12,7 @@ jobs:
12
12
  contents: read
13
13
  id-token: write
14
14
  steps:
15
- - uses: actions/checkout@v6
15
+ - uses: actions/checkout@v7
16
16
 
17
17
  - uses: actions/setup-node@v6
18
18
  with:
@@ -29,35 +29,24 @@ jobs:
29
29
 
30
30
  build-and-publish-ghpkg:
31
31
  # prevents this action from running on forks
32
- if: github.repository == 'underpostnet/engine-cyberia-ghpkg'
32
+ if: github.repository == 'underpostnet/engine-ghpkg-cyberia'
33
33
  runs-on: ubuntu-latest
34
34
  permissions:
35
35
  contents: read
36
+ packages: write
36
37
  id-token: write
37
38
  steps:
38
- - uses: actions/checkout@v6
39
+ - uses: actions/checkout@v7
39
40
 
40
41
  - uses: actions/setup-node@v6
41
42
  with:
42
43
  node-version: '24.x'
43
- registry-url: 'https://registry.npmjs.org'
44
+ registry-url: 'https://npm.pkg.github.com'
44
45
  scope: '@underpostnet'
45
46
 
46
47
  - name: Install Dependencies
47
48
  run: npm ci
48
49
 
49
- - name: Publish to npm
50
- env:
51
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
52
- run: npm publish --provenance --access public
53
-
54
- - name: Setup node to publish to GitHub Packages
55
- uses: actions/setup-node@v6
56
- with:
57
- node-version: '24.x'
58
- registry-url: 'https://npm.pkg.github.com'
59
- scope: '@underpostnet'
60
-
61
50
  - name: Publish to GitHub Packages
62
51
  run: |
63
52
  npm config set //npm.pkg.github.com/:_authToken=${{ secrets.GIT_AUTH_TOKEN }}
@@ -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:
@@ -33,7 +26,7 @@ jobs:
33
26
  image: quay.io/rockylinux/rockylinux:9
34
27
  steps:
35
28
  - name: Checkout
36
- uses: actions/checkout@v6
29
+ uses: actions/checkout@v7
37
30
  # with:
38
31
  # lfs: true
39
32
  # - name: Checkout LFS objects
@@ -11,7 +11,7 @@ jobs:
11
11
  options: --entrypoint /bin/bash
12
12
  steps:
13
13
  - name: Clone repository
14
- uses: actions/checkout@v6
14
+ uses: actions/checkout@v7
15
15
 
16
16
  - name: Install required packages
17
17
  run: |