cyberia 3.0.2 → 3.1.3
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/{.env.production → .env.example} +20 -2
- package/.github/workflows/engine-cyberia.cd.yml +41 -10
- package/.github/workflows/engine-cyberia.ci.yml +53 -14
- package/.github/workflows/ghpkg.ci.yml +1 -1
- package/.github/workflows/gitlab.ci.yml +1 -1
- package/.github/workflows/hardhat.ci.yml +82 -0
- package/.github/workflows/npmpkg.ci.yml +37 -8
- package/.github/workflows/publish.ci.yml +5 -5
- package/.github/workflows/publish.cyberia.ci.yml +5 -5
- package/.github/workflows/pwa-microservices-template-page.cd.yml +3 -3
- package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
- package/.github/workflows/release.cd.yml +3 -2
- package/.vscode/extensions.json +9 -8
- package/.vscode/settings.json +3 -2
- package/CHANGELOG.md +533 -290
- package/CLI-HELP.md +79 -53
- package/WHITE-PAPER.md +1540 -0
- package/bin/build.js +16 -11
- package/bin/cyberia.js +959 -8
- package/bin/deploy.js +103 -270
- package/bin/file.js +2 -1
- package/bin/index.js +959 -8
- package/bin/vs.js +3 -3
- package/conf.js +277 -77
- package/deployment.yaml +218 -4
- package/hardhat/.env.example +31 -0
- package/hardhat/README.md +531 -0
- package/hardhat/WHITE-PAPER.md +1540 -0
- package/hardhat/contracts/ObjectLayerToken.sol +391 -0
- package/hardhat/deployments/.gitkeep +0 -0
- package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
- package/hardhat/hardhat.config.js +136 -0
- package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
- package/hardhat/networks/besu-object-layer.network.json +138 -0
- package/hardhat/package-lock.json +7628 -0
- package/hardhat/package.json +45 -0
- package/hardhat/scripts/deployObjectLayerToken.js +98 -0
- package/hardhat/test/ObjectLayerToken.js +590 -0
- package/jsdoc.dd-cyberia.json +59 -0
- package/jsdoc.json +20 -13
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +490 -0
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +261 -0
- package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +132 -0
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/dd-test-development/deployment.yaml +52 -52
- package/manifests/deployment/dd-test-development/proxy.yaml +4 -4
- package/manifests/pv-pvc-dd.yaml +1 -1
- package/package.json +60 -50
- package/proxy.yaml +128 -9
- package/pv-pvc.yaml +132 -0
- package/scripts/k3s-node-setup.sh +1 -1
- package/scripts/ports-ls.sh +2 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +3 -1
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +1 -2
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +40 -7
- package/src/api/document/document.service.js +1 -1
- package/src/api/file/file.controller.js +3 -1
- package/src/api/file/file.service.js +28 -5
- package/src/api/ipfs/ipfs.service.js +2 -2
- package/src/api/object-layer/object-layer.controller.js +6 -2
- package/src/api/object-layer/object-layer.model.js +67 -21
- package/src/api/object-layer/object-layer.router.js +668 -42
- package/src/api/object-layer/object-layer.service.js +10 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +1 -2
- package/src/api/user/user.router.js +10 -5
- package/src/api/user/user.service.js +7 -7
- package/src/cli/baremetal.js +6 -10
- package/src/cli/cloud-init.js +0 -3
- package/src/cli/db.js +54 -71
- package/src/cli/deploy.js +64 -12
- package/src/cli/env.js +5 -5
- package/src/cli/fs.js +0 -2
- package/src/cli/image.js +0 -3
- package/src/cli/index.js +41 -13
- package/src/cli/monitor.js +5 -6
- package/src/cli/repository.js +329 -46
- package/src/cli/run.js +210 -122
- package/src/cli/secrets.js +1 -3
- package/src/cli/ssh.js +1 -1
- package/src/client/Itemledger.index.js +1 -959
- package/src/client/Underpost.index.js +36 -0
- package/src/client/components/core/AgGrid.js +20 -5
- package/src/client/components/core/Alert.js +2 -2
- package/src/client/components/core/Content.js +22 -3
- package/src/client/components/core/Docs.js +30 -6
- package/src/client/components/core/FileExplorer.js +71 -4
- package/src/client/components/core/Input.js +1 -1
- package/src/client/components/core/Modal.js +22 -6
- package/src/client/components/core/PublicProfile.js +3 -3
- package/src/client/components/core/RichText.js +1 -2
- package/src/client/components/core/Router.js +34 -1
- package/src/client/components/core/Worker.js +1 -1
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +63 -1
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +145 -119
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +64 -6
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +1 -0
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +44 -2
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +0 -1
- package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +64 -2
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +1 -0
- package/src/client/components/itemledger/CssItemledger.js +62 -0
- package/src/client/components/underpost/CommonUnderpost.js +29 -0
- package/src/client/components/underpost/CssUnderpost.js +281 -0
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
- package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
- package/src/client/components/underpost/ElementsUnderpost.js +38 -0
- package/src/client/components/underpost/LabGalleryUnderpost.js +82 -0
- package/src/client/components/underpost/LogInUnderpost.js +23 -0
- package/src/client/components/underpost/LogOutUnderpost.js +15 -0
- package/src/client/components/underpost/MenuUnderpost.js +691 -0
- package/src/client/components/underpost/RoutesUnderpost.js +47 -0
- package/src/client/components/underpost/SettingsUnderpost.js +16 -0
- package/src/client/components/underpost/SignUpUnderpost.js +9 -0
- package/src/client/components/underpost/SocketIoUnderpost.js +54 -0
- package/src/client/components/underpost/TranslateUnderpost.js +10 -0
- package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
- package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
- package/src/client/public/cryptokoyn/microdata.json +85 -0
- package/src/client/public/cryptokoyn/site.webmanifest +57 -0
- package/src/client/public/cryptokoyn/sitemap +3 -3
- package/src/client/public/default/sitemap +3 -3
- package/src/client/public/itemledger/browserconfig.xml +2 -2
- package/src/client/public/itemledger/manifest.webmanifest +4 -4
- package/src/client/public/itemledger/microdata.json +71 -0
- package/src/client/public/itemledger/sitemap +3 -3
- package/src/client/public/itemledger/yandex-browser-manifest.json +2 -2
- package/src/client/public/test/sitemap +3 -3
- package/src/client/services/object-layer/object-layer.management.js +23 -4
- package/src/client/ssr/body/404.js +15 -11
- package/src/client/ssr/body/500.js +15 -11
- package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +83 -0
- package/src/client/ssr/head/PwaItemledger.js +60 -0
- package/src/client/ssr/head/UnderpostScripts.js +6 -0
- package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
- package/src/client/ssr/pages/Test.js +11 -10
- package/src/client.build.js +0 -3
- package/src/client.dev.js +0 -3
- package/src/db/DataBaseProvider.js +17 -2
- package/src/db/mariadb/MariaDB.js +14 -9
- package/src/db/mongo/MongooseDB.js +17 -1
- package/src/index.js +1 -1
- package/src/proxy.js +0 -3
- package/src/runtime/express/Express.js +15 -9
- package/src/runtime/lampp/Lampp.js +6 -13
- package/src/server/auth.js +12 -14
- package/src/server/backup.js +2 -3
- package/src/server/besu-genesis-generator.js +1630 -0
- package/src/server/client-build-docs.js +126 -17
- package/src/server/client-build-live.js +9 -18
- package/src/server/client-build.js +203 -75
- package/src/server/client-dev-server.js +14 -13
- package/src/server/conf.js +376 -164
- package/src/server/cron.js +2 -1
- package/src/server/dns.js +28 -12
- package/src/server/downloader.js +0 -2
- package/src/server/logger.js +27 -9
- package/src/server/object-layer.js +92 -16
- package/src/server/peer.js +0 -2
- package/src/server/process.js +1 -50
- package/src/server/proxy.js +4 -8
- package/src/server/runtime.js +5 -8
- package/src/server/semantic-layer-generator.js +1 -0
- package/src/server/ssr.js +0 -3
- package/src/server/start.js +19 -12
- package/src/server/tls.js +0 -2
- package/src/server.js +0 -4
- package/.env.development +0 -43
- package/.env.test +0 -43
- package/hardhat/contracts/CryptoKoyn.sol +0 -59
- package/hardhat/contracts/ItemLedger.sol +0 -73
- package/hardhat/contracts/Lock.sol +0 -34
- package/hardhat/hardhat.config.cjs +0 -45
- package/hardhat/ignition/modules/Lock.js +0 -18
- package/hardhat/networks/cryptokoyn-itemledger.network.json +0 -29
- package/hardhat/scripts/deployCryptokoyn.cjs +0 -25
- package/hardhat/scripts/deployItemledger.cjs +0 -25
- package/hardhat/test/Lock.js +0 -126
- package/hardhat/white-paper.md +0 -581
- package/white-paper.md +0 -581
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
DEPLOY_ID=dd-default
|
|
2
2
|
NODE_ENV=production
|
|
3
3
|
PORT=3000
|
|
4
|
-
JWT_SECRET=
|
|
4
|
+
JWT_SECRET=changethis
|
|
5
5
|
REFRESH_EXPIRE_MINUTES=5
|
|
6
6
|
ACCESS_EXPIRE_MINUTES=1440
|
|
7
7
|
NODE_OPTIONS=--max-old-space-size=8192
|
|
@@ -15,8 +15,25 @@ DEFAULT_DEPLOY_ID=dd-default
|
|
|
15
15
|
DEFAULT_DEPLOY_HOST=default.net
|
|
16
16
|
DEFAULT_DEPLOY_PATH=/
|
|
17
17
|
MARIADB_HOST=changethis
|
|
18
|
+
MARIADB_PORT=3306
|
|
18
19
|
MARIADB_USER=changethis
|
|
19
20
|
MARIADB_PASSWORD=changethis
|
|
21
|
+
DB_PROVIDER=mongoose
|
|
22
|
+
DB_HOST=mongodb://127.0.0.1:27017
|
|
23
|
+
DB_NAME=default
|
|
24
|
+
SMTP_HOST=changethis
|
|
25
|
+
SMTP_PORT=465
|
|
26
|
+
SMTP_SECURE=true
|
|
27
|
+
SMTP_AUTH_USER=changethis
|
|
28
|
+
SMTP_AUTH_PASS=changethis
|
|
29
|
+
MAILER_SENDER_EMAIL=noreply@default.net
|
|
30
|
+
MAILER_SENDER_NAME=Default
|
|
31
|
+
DDNS_HOST=changethis
|
|
32
|
+
DDNS_PROVIDER=dondominio
|
|
33
|
+
DDNS_API_KEY=changethis
|
|
34
|
+
DDNS_USER=changethis
|
|
35
|
+
VALKEY_HOST=127.0.0.1
|
|
36
|
+
VALKEY_PORT=6379
|
|
20
37
|
WIFI_PASSWORD=changethis
|
|
21
38
|
CLOUDINARY_CLOUD_NAME=changethis
|
|
22
39
|
CLOUDINARY_API_KEY=changethis
|
|
@@ -53,4 +70,5 @@ ENABLE_FILE_LOGS=false
|
|
|
53
70
|
BASE_API=api
|
|
54
71
|
CERTBOT_LIVE_PATH=changethis
|
|
55
72
|
CERTBOT_LIVE_PATH_WINDOWS=changethis
|
|
56
|
-
DEV_PROXY_PORT_OFFSET=200
|
|
73
|
+
DEV_PROXY_PORT_OFFSET=200
|
|
74
|
+
DOTENV_CONFIG_QUIET=true
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
name: CD | Engine cyberia | remote ssh
|
|
2
|
-
on:
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
job:
|
|
7
|
+
description: 'Job to run (deploy, sync-and-deploy, init)'
|
|
8
|
+
required: true
|
|
9
|
+
type: choice
|
|
10
|
+
options:
|
|
11
|
+
- deploy
|
|
12
|
+
- sync-and-deploy
|
|
13
|
+
- init
|
|
3
14
|
permissions:
|
|
4
15
|
contents: write
|
|
5
16
|
packages: write
|
|
@@ -7,12 +18,17 @@ permissions:
|
|
|
7
18
|
|
|
8
19
|
jobs:
|
|
9
20
|
deploy:
|
|
10
|
-
if:
|
|
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
|
+
)
|
|
11
27
|
name: Remote SSH deployment
|
|
12
28
|
runs-on: ubuntu-latest
|
|
13
29
|
steps:
|
|
14
30
|
- name: Run remote deploy via SSH
|
|
15
|
-
uses: appleboy/ssh-action@v1.2.
|
|
31
|
+
uses: appleboy/ssh-action@v1.2.5
|
|
16
32
|
with:
|
|
17
33
|
# Remote host (secret)
|
|
18
34
|
host: ${{ secrets.SSH_HOST }}
|
|
@@ -31,15 +47,21 @@ jobs:
|
|
|
31
47
|
set -e
|
|
32
48
|
echo "Starting remote deploy"
|
|
33
49
|
cd /home/dd/engine
|
|
34
|
-
sudo -n -- /bin/bash -lc "
|
|
50
|
+
sudo -n -- /bin/bash -lc "underpost run pull"
|
|
51
|
+
sudo -n -- /bin/bash -lc "npm install"
|
|
35
52
|
sudo -n -- /bin/bash -lc "node bin run deploy dd-cyberia"
|
|
36
53
|
sync-and-deploy:
|
|
37
|
-
if:
|
|
54
|
+
if: >-
|
|
55
|
+
github.repository == 'underpostnet/engine'
|
|
56
|
+
&& (
|
|
57
|
+
startsWith(github.event.head_commit.message, 'cd(ssh-sync-engine-cyberia)')
|
|
58
|
+
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'sync-and-deploy')
|
|
59
|
+
)
|
|
38
60
|
name: Remote SSH sync and deploy
|
|
39
61
|
runs-on: ubuntu-latest
|
|
40
62
|
steps:
|
|
41
63
|
- name: Run remote deploy via SSH
|
|
42
|
-
uses: appleboy/ssh-action@v1.2.
|
|
64
|
+
uses: appleboy/ssh-action@v1.2.5
|
|
43
65
|
with:
|
|
44
66
|
# Remote host (secret)
|
|
45
67
|
host: ${{ secrets.SSH_HOST }}
|
|
@@ -58,16 +80,24 @@ jobs:
|
|
|
58
80
|
set -e
|
|
59
81
|
echo "Starting remote sync and deploy"
|
|
60
82
|
cd /home/dd/engine
|
|
61
|
-
sudo -n -- /bin/bash -lc "
|
|
83
|
+
sudo -n -- /bin/bash -lc "underpost run pull"
|
|
84
|
+
sudo -n -- /bin/bash -lc "npm install"
|
|
85
|
+
sudo -n -- /bin/bash -lc "underpost fs src/client/public/cyberia --git --pull --recursive --deploy-id dd-cyberia"
|
|
86
|
+
sudo -n -- /bin/bash -lc "underpost fs src/client/public/underpost --git --pull --recursive --deploy-id dd-cyberia --storage-file-path './engine-private/conf/dd-cyberia/storage.underpost.json'"
|
|
62
87
|
sudo -n -- /bin/bash -lc "npm run test"
|
|
63
88
|
sudo -n -- /bin/bash -lc "node bin run sync --kubeadm --deploy-id-cron-jobs none --timeout-response 300000ms dd-cyberia,1,,localhost/rockylinux9-underpost:v2.98.3 --cmd 'npm install -g npm@11.2.0,npm install -g underpost,underpost secret underpost --create-from-file /etc/config/.env.production,underpost start --build --run dd-cyberia production'"
|
|
64
89
|
init:
|
|
65
|
-
if:
|
|
90
|
+
if: >-
|
|
91
|
+
github.repository == 'underpostnet/engine'
|
|
92
|
+
&& (
|
|
93
|
+
startsWith(github.event.head_commit.message, 'cd(ssh-init-engine-cyberia)')
|
|
94
|
+
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'init')
|
|
95
|
+
)
|
|
66
96
|
name: Remote SSH init deployment
|
|
67
97
|
runs-on: ubuntu-latest
|
|
68
98
|
steps:
|
|
69
99
|
- name: Run remote deploy via SSH
|
|
70
|
-
uses: appleboy/ssh-action@v1.2.
|
|
100
|
+
uses: appleboy/ssh-action@v1.2.5
|
|
71
101
|
with:
|
|
72
102
|
# Remote host (secret)
|
|
73
103
|
host: ${{ secrets.SSH_HOST }}
|
|
@@ -86,7 +116,8 @@ jobs:
|
|
|
86
116
|
set -e
|
|
87
117
|
echo "Starting init deploy"
|
|
88
118
|
cd /home/dd/engine
|
|
89
|
-
sudo -n -- /bin/bash -lc "
|
|
119
|
+
sudo -n -- /bin/bash -lc "underpost run pull"
|
|
120
|
+
sudo -n -- /bin/bash -lc "npm install"
|
|
90
121
|
sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --sync --build-manifest --image 'localhost/rockylinux9-underpost:v2.98.3' --timeout-response 300000ms --versions green --replicas 1 --cmd 'npm install -g npm@11.2.0,npm install -g underpost,underpost secret underpost --create-from-file /etc/config/.env.production,underpost start --build --run dd-cyberia production'"
|
|
91
122
|
sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --disable-update-proxy"
|
|
92
123
|
sudo -n -- /bin/bash -lc "node bin monitor dd-cyberia production --ready-deployment --promote --timeout-response 300000ms --versions green --replicas 1"
|
|
@@ -4,15 +4,36 @@ on:
|
|
|
4
4
|
workflows: ['CI | Publish npm repository package']
|
|
5
5
|
types:
|
|
6
6
|
- completed
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
sync:
|
|
10
|
+
description: 'Trigger sync-and-deploy CD after build'
|
|
11
|
+
required: false
|
|
12
|
+
default: 'false'
|
|
13
|
+
type: choice
|
|
14
|
+
options:
|
|
15
|
+
- 'true'
|
|
16
|
+
- 'false'
|
|
17
|
+
message:
|
|
18
|
+
description: 'Commit message for the build'
|
|
19
|
+
required: false
|
|
20
|
+
default: ''
|
|
21
|
+
deploy_type:
|
|
22
|
+
description: 'CD job type to dispatch (sync-and-deploy or init)'
|
|
23
|
+
required: false
|
|
24
|
+
default: 'sync-and-deploy'
|
|
25
|
+
type: choice
|
|
26
|
+
options:
|
|
27
|
+
- sync-and-deploy
|
|
28
|
+
- init
|
|
7
29
|
permissions:
|
|
8
30
|
contents: write
|
|
9
31
|
packages: write
|
|
10
32
|
id-token: write
|
|
11
33
|
jobs:
|
|
12
34
|
pwa-microservices-template:
|
|
35
|
+
if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
|
|
13
36
|
name: Update github repo package Jobs
|
|
14
|
-
env:
|
|
15
|
-
SYNC: ${{ startsWith(github.event.workflow_run.head_commit.message, 'ci(package-pwa-microservices-template-sync-engine-cyberia)') }}
|
|
16
37
|
runs-on: ubuntu-latest
|
|
17
38
|
container:
|
|
18
39
|
image: quay.io/rockylinux/rockylinux:9
|
|
@@ -21,7 +42,7 @@ jobs:
|
|
|
21
42
|
packages: write
|
|
22
43
|
id-token: write
|
|
23
44
|
steps:
|
|
24
|
-
- uses: actions/checkout@
|
|
45
|
+
- uses: actions/checkout@v6
|
|
25
46
|
|
|
26
47
|
- name: Install required packages
|
|
27
48
|
run: |
|
|
@@ -49,11 +70,29 @@ jobs:
|
|
|
49
70
|
run: |
|
|
50
71
|
cd .. && underpost clone underpostnet/pwa-microservices-template
|
|
51
72
|
FULL_MSG=$(cd pwa-microservices-template && git log -1 --pretty=%B 2>/dev/null || echo "")
|
|
52
|
-
|
|
73
|
+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
74
|
+
if [ -n "${{ github.event.inputs.message }}" ]; then
|
|
75
|
+
LAST_COMMIT_MESSAGE="${{ github.event.inputs.message }}"
|
|
76
|
+
else
|
|
77
|
+
LAST_COMMIT_MESSAGE=$(echo "$FULL_MSG" | sed '1s/^[^:]*: [^ ]* //' | grep -v '^\[cd:' || true)
|
|
78
|
+
fi
|
|
79
|
+
SHOULD_CD="${{ github.event.inputs.sync }}"
|
|
80
|
+
DEPLOY_TYPE="${{ github.event.inputs.deploy_type }}"
|
|
81
|
+
else
|
|
82
|
+
LAST_COMMIT_MESSAGE=$(echo "$FULL_MSG" | sed '1s/^[^:]*: [^ ]* //' | grep -v '^\[cd:' || true)
|
|
83
|
+
CD_MARKER=$(echo "$FULL_MSG" | grep '^\[cd:engine-cyberia:' | head -1 || true)
|
|
84
|
+
if [ -n "$CD_MARKER" ]; then
|
|
85
|
+
SHOULD_CD="true"
|
|
86
|
+
DEPLOY_TYPE=$(echo "$CD_MARKER" | sed 's/\[cd:engine-cyberia:\(.*\)\]/\1/')
|
|
87
|
+
else
|
|
88
|
+
SHOULD_CD="false"
|
|
89
|
+
fi
|
|
90
|
+
fi
|
|
53
91
|
if [ -z "$LAST_COMMIT_MESSAGE" ]; then
|
|
54
92
|
LAST_COMMIT_MESSAGE="Update engine cyberia repository"
|
|
55
93
|
fi
|
|
56
94
|
echo "[INFO] Captured commit message: $LAST_COMMIT_MESSAGE"
|
|
95
|
+
echo "[INFO] Should CD: $SHOULD_CD, Deploy type: $DEPLOY_TYPE"
|
|
57
96
|
underpost clone --bare underpostnet/engine-cyberia
|
|
58
97
|
cd engine
|
|
59
98
|
node bin/build dd-cyberia development
|
|
@@ -66,16 +105,16 @@ jobs:
|
|
|
66
105
|
git add .
|
|
67
106
|
git commit -m "$LAST_COMMIT_MESSAGE"
|
|
68
107
|
underpost push . underpostnet/engine-cyberia
|
|
69
|
-
if [ "$
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
108
|
+
if [ "$SHOULD_CD" = "true" ]; then
|
|
109
|
+
if [ -z "$DEPLOY_TYPE" ]; then
|
|
110
|
+
DEPLOY_TYPE="sync-and-deploy"
|
|
111
|
+
fi
|
|
112
|
+
echo "[INFO] Dispatching engine-cyberia CD ${DEPLOY_TYPE}"
|
|
113
|
+
curl -s -X POST \
|
|
114
|
+
-H "Accept: application/vnd.github.v3+json" \
|
|
115
|
+
-H "Authorization: token ${{ secrets.GIT_AUTH_TOKEN }}" \
|
|
116
|
+
"https://api.github.com/repos/underpostnet/engine/actions/workflows/engine-cyberia.cd.yml/dispatches" \
|
|
117
|
+
-d "{\"ref\":\"master\",\"inputs\":{\"job\":\"${DEPLOY_TYPE}\"}}"
|
|
79
118
|
else
|
|
80
119
|
echo "[INFO] Deployment skipped"
|
|
81
120
|
fi
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
# CI | Hardhat – Compile, Test, Audit
|
|
3
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
4
|
+
name: CI | Hardhat
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
paths:
|
|
9
|
+
- 'hardhat/**'
|
|
10
|
+
- '.github/workflows/hardhat.ci.yml'
|
|
11
|
+
pull_request:
|
|
12
|
+
paths:
|
|
13
|
+
- 'hardhat/**'
|
|
14
|
+
- '.github/workflows/hardhat.ci.yml'
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
build-and-test:
|
|
22
|
+
name: Compile, Test & Audit
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
defaults:
|
|
25
|
+
run:
|
|
26
|
+
working-directory: hardhat
|
|
27
|
+
|
|
28
|
+
strategy:
|
|
29
|
+
matrix:
|
|
30
|
+
node-version: ['24']
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- name: Checkout repository
|
|
34
|
+
uses: actions/checkout@v6
|
|
35
|
+
|
|
36
|
+
- name: Setup Node.js ${{ matrix.node-version }}
|
|
37
|
+
uses: actions/setup-node@v6
|
|
38
|
+
with:
|
|
39
|
+
node-version: ${{ matrix.node-version }}
|
|
40
|
+
cache: 'npm'
|
|
41
|
+
cache-dependency-path: hardhat/package-lock.json
|
|
42
|
+
|
|
43
|
+
# ── Install ──────────────────────────────────────────────────────────
|
|
44
|
+
# Use `npm ci` for reproducible installs from the lockfile.
|
|
45
|
+
# Never install packages globally in CI.
|
|
46
|
+
- name: Install dependencies (npm ci)
|
|
47
|
+
run: npm ci
|
|
48
|
+
|
|
49
|
+
# ── Security Audit ───────────────────────────────────────────────────
|
|
50
|
+
# Production deps are what ships on-chain – fail on any moderate+ vuln.
|
|
51
|
+
- name: npm audit – production deps (moderate+)
|
|
52
|
+
run: npm audit --audit-level=moderate --omit=dev
|
|
53
|
+
|
|
54
|
+
# Dev/toolchain deps (hardhat, solidity-coverage, etc.) carry known
|
|
55
|
+
# transitive vulnerabilities that upstream hasn't patched yet.
|
|
56
|
+
# Log them for visibility but don't block the pipeline.
|
|
57
|
+
- name: npm audit – dev deps (informational)
|
|
58
|
+
run: npm audit --audit-level=moderate || true
|
|
59
|
+
|
|
60
|
+
# ── Compile ──────────────────────────────────────────────────────────
|
|
61
|
+
- name: Compile Solidity contracts
|
|
62
|
+
run: npx hardhat compile
|
|
63
|
+
|
|
64
|
+
# ── Test ─────────────────────────────────────────────────────────────
|
|
65
|
+
- name: Run tests
|
|
66
|
+
run: npx hardhat test
|
|
67
|
+
env:
|
|
68
|
+
REPORT_GAS: 'true'
|
|
69
|
+
|
|
70
|
+
# ── Coverage (optional, only on primary Node version) ────────────────
|
|
71
|
+
- name: Solidity coverage
|
|
72
|
+
if: matrix.node-version == '20'
|
|
73
|
+
run: npx hardhat coverage
|
|
74
|
+
|
|
75
|
+
# ── Lockfile integrity check ─────────────────────────────────────────
|
|
76
|
+
# Fail if package-lock.json is out of sync with package.json
|
|
77
|
+
- name: Verify lockfile is up to date
|
|
78
|
+
run: |
|
|
79
|
+
git diff --exit-code package-lock.json || {
|
|
80
|
+
echo "::error::package-lock.json is out of sync with package.json. Run 'npm install' locally and commit the lockfile."
|
|
81
|
+
exit 1
|
|
82
|
+
}
|
|
@@ -4,6 +4,20 @@ on:
|
|
|
4
4
|
branches: ['master']
|
|
5
5
|
pull_request:
|
|
6
6
|
branches: ['master']
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
message:
|
|
10
|
+
description: 'Changelog message for the build'
|
|
11
|
+
required: false
|
|
12
|
+
default: ''
|
|
13
|
+
deploy_conf_id:
|
|
14
|
+
description: 'Engine conf ID to dispatch after build (e.g., engine-core, engine-cyberia)'
|
|
15
|
+
required: false
|
|
16
|
+
default: ''
|
|
17
|
+
deploy_type:
|
|
18
|
+
description: 'Deployment type for the engine conf CD (sync-and-deploy or init)'
|
|
19
|
+
required: false
|
|
20
|
+
default: ''
|
|
7
21
|
permissions:
|
|
8
22
|
contents: write
|
|
9
23
|
packages: write
|
|
@@ -12,7 +26,10 @@ jobs:
|
|
|
12
26
|
pwa-microservices-template:
|
|
13
27
|
if: |
|
|
14
28
|
github.repository == 'underpostnet/engine'
|
|
15
|
-
&&
|
|
29
|
+
&& (
|
|
30
|
+
startsWith(github.event.head_commit.message, 'ci(package-pwa-microservices-template')
|
|
31
|
+
|| github.event_name == 'workflow_dispatch'
|
|
32
|
+
)
|
|
16
33
|
name: Update npm repo package Jobs
|
|
17
34
|
runs-on: ubuntu-latest
|
|
18
35
|
container:
|
|
@@ -22,7 +39,7 @@ jobs:
|
|
|
22
39
|
packages: write
|
|
23
40
|
id-token: write
|
|
24
41
|
steps:
|
|
25
|
-
- uses: actions/checkout@
|
|
42
|
+
- uses: actions/checkout@v6
|
|
26
43
|
|
|
27
44
|
- name: Install required packages
|
|
28
45
|
run: |
|
|
@@ -36,13 +53,19 @@ jobs:
|
|
|
36
53
|
|
|
37
54
|
- name: Capture commit message
|
|
38
55
|
run: |
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
56
|
+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
57
|
+
LAST_COMMIT_MESSAGE="${{ github.event.inputs.message }}"
|
|
58
|
+
if [ -z "$LAST_COMMIT_MESSAGE" ]; then
|
|
59
|
+
LAST_COMMIT_MESSAGE="Update repository"
|
|
60
|
+
fi
|
|
61
|
+
else
|
|
62
|
+
FULL_MSG="${{ github.event.head_commit.message }}"
|
|
63
|
+
REST="$(echo "$FULL_MSG" | tail -n +2 | awk 'NR==1{first=$0; has_first=1; next} NR==2{print first " " $0; has_first=0; next} {print} END{if(has_first) print first}')"
|
|
64
|
+
LAST_COMMIT_MESSAGE="${REST:-$FULL_MSG}"
|
|
65
|
+
fi
|
|
42
66
|
echo "LAST_COMMIT_MESSAGE<<EOF" >> $GITHUB_ENV
|
|
43
67
|
echo "$LAST_COMMIT_MESSAGE" >> $GITHUB_ENV
|
|
44
68
|
echo "EOF" >> $GITHUB_ENV
|
|
45
|
-
echo "[INFO] Full commit message: $FULL_MSG"
|
|
46
69
|
echo "[INFO] Extracted payload: $LAST_COMMIT_MESSAGE"
|
|
47
70
|
|
|
48
71
|
- name: Install dependencies
|
|
@@ -62,11 +85,17 @@ jobs:
|
|
|
62
85
|
run: |
|
|
63
86
|
cd .. && underpost clone underpostnet/pwa-microservices-template
|
|
64
87
|
cd engine
|
|
65
|
-
npm run update
|
|
88
|
+
npm run update:template
|
|
66
89
|
cd ../pwa-microservices-template
|
|
67
90
|
git remote set-url origin git@github.com:underpostnet/pwa-microservices-template.git
|
|
68
91
|
git add .
|
|
69
92
|
git config user.name 'underpostnet'
|
|
70
93
|
git config user.email 'fcoverdugoa@underpost.net'
|
|
71
|
-
|
|
94
|
+
COMMIT_MSG="$LAST_COMMIT_MESSAGE"
|
|
95
|
+
DEPLOY_CONF_ID="${{ github.event.inputs.deploy_conf_id }}"
|
|
96
|
+
DEPLOY_TYPE="${{ github.event.inputs.deploy_type }}"
|
|
97
|
+
if [ -n "$DEPLOY_CONF_ID" ] && [ -n "$DEPLOY_TYPE" ]; then
|
|
98
|
+
COMMIT_MSG=$(printf '%s\n[cd:%s:%s]' "$COMMIT_MSG" "$DEPLOY_CONF_ID" "$DEPLOY_TYPE")
|
|
99
|
+
fi
|
|
100
|
+
underpost cmt . ci package-pwa-microservices-template-ghpkg "$COMMIT_MSG"
|
|
72
101
|
underpost push . underpostnet/pwa-microservices-template
|
|
@@ -12,9 +12,9 @@ jobs:
|
|
|
12
12
|
contents: read
|
|
13
13
|
id-token: write
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
16
|
|
|
17
|
-
- uses: actions/setup-node@
|
|
17
|
+
- uses: actions/setup-node@v6
|
|
18
18
|
with:
|
|
19
19
|
node-version: '24.x'
|
|
20
20
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -35,9 +35,9 @@ jobs:
|
|
|
35
35
|
contents: read
|
|
36
36
|
id-token: write
|
|
37
37
|
steps:
|
|
38
|
-
- uses: actions/checkout@
|
|
38
|
+
- uses: actions/checkout@v6
|
|
39
39
|
|
|
40
|
-
- uses: actions/setup-node@
|
|
40
|
+
- uses: actions/setup-node@v6
|
|
41
41
|
with:
|
|
42
42
|
node-version: '24.x'
|
|
43
43
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -52,7 +52,7 @@ jobs:
|
|
|
52
52
|
run: npm publish --provenance --access public
|
|
53
53
|
|
|
54
54
|
- name: Setup node to publish to GitHub Packages
|
|
55
|
-
uses: actions/setup-node@
|
|
55
|
+
uses: actions/setup-node@v6
|
|
56
56
|
with:
|
|
57
57
|
node-version: '24.x'
|
|
58
58
|
registry-url: 'https://npm.pkg.github.com'
|
|
@@ -12,9 +12,9 @@ jobs:
|
|
|
12
12
|
contents: read
|
|
13
13
|
id-token: write
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
16
|
|
|
17
|
-
- uses: actions/setup-node@
|
|
17
|
+
- uses: actions/setup-node@v6
|
|
18
18
|
with:
|
|
19
19
|
node-version: '24.x'
|
|
20
20
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -35,9 +35,9 @@ jobs:
|
|
|
35
35
|
contents: read
|
|
36
36
|
id-token: write
|
|
37
37
|
steps:
|
|
38
|
-
- uses: actions/checkout@
|
|
38
|
+
- uses: actions/checkout@v6
|
|
39
39
|
|
|
40
|
-
- uses: actions/setup-node@
|
|
40
|
+
- uses: actions/setup-node@v6
|
|
41
41
|
with:
|
|
42
42
|
node-version: '24.x'
|
|
43
43
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -52,7 +52,7 @@ jobs:
|
|
|
52
52
|
run: npm publish --provenance --access public
|
|
53
53
|
|
|
54
54
|
- name: Setup node to publish to GitHub Packages
|
|
55
|
-
uses: actions/setup-node@
|
|
55
|
+
uses: actions/setup-node@v6
|
|
56
56
|
with:
|
|
57
57
|
node-version: '24.x'
|
|
58
58
|
registry-url: 'https://npm.pkg.github.com'
|
|
@@ -33,7 +33,7 @@ jobs:
|
|
|
33
33
|
image: quay.io/rockylinux/rockylinux:9
|
|
34
34
|
steps:
|
|
35
35
|
- name: Checkout
|
|
36
|
-
uses: actions/checkout@
|
|
36
|
+
uses: actions/checkout@v6
|
|
37
37
|
# with:
|
|
38
38
|
# lfs: true
|
|
39
39
|
# - name: Checkout LFS objects
|
|
@@ -56,7 +56,7 @@ jobs:
|
|
|
56
56
|
node bin new --default-conf --conf-workflow-id dd-github-pages
|
|
57
57
|
node bin new --deploy-id dd-github-pages
|
|
58
58
|
underpost env dd-github-pages production
|
|
59
|
-
|
|
59
|
+
NODE_ENV=production node bin client dd-github-pages '' underpostnet.github.io /pwa-microservices-template-ghpkg
|
|
60
60
|
# git lfs install
|
|
61
61
|
# git lfs track
|
|
62
62
|
# git lfs ls-files
|
|
@@ -64,7 +64,7 @@ jobs:
|
|
|
64
64
|
- name: Setup Pages
|
|
65
65
|
uses: actions/configure-pages@v5
|
|
66
66
|
- name: Upload artifact
|
|
67
|
-
uses: actions/upload-pages-artifact@
|
|
67
|
+
uses: actions/upload-pages-artifact@v4
|
|
68
68
|
with:
|
|
69
69
|
# Upload entire repository
|
|
70
70
|
path: './public/underpostnet.github.io/pwa-microservices-template-ghpkg/'
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
13
|
steps:
|
|
14
14
|
- name: Run remote deploy via SSH
|
|
15
|
-
uses: appleboy/ssh-action@v1.2.
|
|
15
|
+
uses: appleboy/ssh-action@v1.2.5
|
|
16
16
|
with:
|
|
17
17
|
# Remote host (secret)
|
|
18
18
|
host: ${{ secrets.SSH_HOST }}
|
|
@@ -31,7 +31,8 @@ jobs:
|
|
|
31
31
|
set -e
|
|
32
32
|
echo "Starting remote release deploy"
|
|
33
33
|
cd /home/dd/engine
|
|
34
|
-
sudo -n -- /bin/bash -lc "
|
|
34
|
+
sudo -n -- /bin/bash -lc "underpost run pull"
|
|
35
|
+
sudo -n -- /bin/bash -lc "npm install"
|
|
35
36
|
sudo -n -- /bin/bash -lc "underpost run secret"
|
|
36
37
|
sudo -n -- /bin/bash -lc "npm install -g underpost"
|
|
37
38
|
sudo -n -- /bin/bash -lc "underpost run secret"
|
package/.vscode/extensions.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
"recommendations": [
|
|
3
|
+
"anseki.vscode-color",
|
|
4
|
+
"bashmish.es6-string-css",
|
|
5
|
+
"eamodio.gitlens",
|
|
6
|
+
"esbenp.prettier-vscode",
|
|
7
|
+
"github.copilot-chat",
|
|
8
|
+
"tobermory.es6-string-html"
|
|
9
|
+
]
|
|
10
|
+
}
|
package/.vscode/settings.json
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
3
3
|
"editor.formatOnSave": true,
|
|
4
4
|
"explorer.compactFolders": false,
|
|
5
|
-
"
|
|
5
|
+
"js/ts.preferences.importModuleSpecifierEnding": "js",
|
|
6
6
|
"[javascript]": {
|
|
7
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
7
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
8
8
|
},
|
|
9
|
+
"editor.inlineSuggest.enabled": true
|
|
9
10
|
}
|