feat(repo): Add unified repo-deploy.sh and multi-arch support

- Add repo-deploy.sh script for staging and deploying packages
- Replicate _all.ipk packages to all 6 architectures automatically
- Add "Refresh Indexes" button to LuCI dashboard for local deployments
- Add RPCD refresh method to regenerate Packages indexes on-device
- Support architectures: aarch64_cortex-a72, aarch64_cortex-a53,
  aarch64_generic, x86_64, mips_24kc, mipsel_24kc

Usage:
  ./secubox-tools/repo-deploy.sh stage --clean
  ./secubox-tools/repo-deploy.sh deploy root@192.168.255.1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-03-19 07:48:59 +01:00
parent 9ddf5a4e0b
commit d92b3360ea
317 changed files with 2611 additions and 344 deletions

View File

@ -582,7 +582,19 @@
"Bash(jq -r '.[] | \"\" \"\" + .workflowName + \"\": \"\" + .conclusion + \"\" \\(ID: \"\" + \\(.databaseId | tostring\\) + \"\"\\)\"\"' echo \"\" echo \"=== VM Appliance Artifacts ===\" gh api repos/gkerma/secubox-openwrt/actions/runs/23205786221/artifacts --jq '.artifacts[] | \"\" \"\" + .name + \"\" \\(\"\" + \\(\\(.size_in_bytes / 1048576\\) | floor | tostring\\) + \"\" MB\\)\"\"' echo \"\" echo \"=== Package Build Artifacts ===\" gh api repos/gkerma/secubox-openwrt/actions/runs/23206423503/artifacts --jq '.artifacts[] | \"\" \"\" + .name + \"\" \\(\"\" + \\(\\(.size_in_bytes / 1048576\\) | floor | tostring\\) + \"\" MB\\)\"\"')",
"Bash(__NEW_LINE_0593582cd60ca850__ echo \"\")",
"Bash(./secubox-tools/c3box-vm-full-build.sh:*)",
"Bash(DISK_SIZE=2 OUTPUT_DIR=/home/reepost/CyberMindStudio/secubox-openwrt/secubox-tools/c3box-vm/output ./secubox-tools/c3box-vm-full-build.sh:*)"
"Bash(DISK_SIZE=2 OUTPUT_DIR=/home/reepost/CyberMindStudio/secubox-openwrt/secubox-tools/c3box-vm/output ./secubox-tools/c3box-vm-full-build.sh:*)",
"Bash(__NEW_LINE_605f4de402c63a94__ echo \"=== secubox-core-users ===\")",
"Bash(test:*)",
"Bash(__NEW_LINE_605f4de402c63a94__ echo \"=== secubox-dpi-dual ===\")",
"Bash(__NEW_LINE_c0a31fda74571df0__ echo \"=== luci-app-config-vault files ===\")",
"Bash(__NEW_LINE_c0a31fda74571df0__ echo \"\")",
"Bash(f=\"package/secubox/$pkg/Makefile\")",
"Bash(if [ -f \"$f\" ])",
"Bash(if grep -q \"define Build/Compile\" \"$f\")",
"Bash(./secubox-tools/repo-deploy.sh:*)",
"Bash(./secubox-tools/quick-deploy.sh:*)",
"Bash(while read f)",
"Bash(do basename \"$f\")"
]
}
}

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

View File

@ -33,6 +33,12 @@ var callLogs = rpc.declare({
expect: {}
});
var callRefresh = rpc.declare({
object: 'luci.repo',
method: 'refresh',
expect: {}
});
return view.extend({
load: function() {
return Promise.all([
@ -139,7 +145,38 @@ return view.extend({
])
]);
}
}, _('Sync Packages'));
}, _('Sync from GitHub'));
var refreshBtn = E('button', {
'class': 'cbi-button cbi-button-action',
'click': function() {
ui.showModal(_('Refresh Indexes'), [
E('p', {}, _('Regenerate package indexes from files in /srv/repo.secubox.in/? Use this after uploading packages via rsync or SCP.')),
E('div', { 'class': 'right' }, [
E('button', {
'class': 'cbi-button',
'click': ui.hideModal
}, _('Cancel')),
' ',
E('button', {
'class': 'cbi-button cbi-button-positive',
'click': function() {
ui.hideModal();
ui.showModal(_('Refreshing...'), [
E('p', { 'class': 'spinning' }, _('Regenerating package indexes...'))
]);
callRefresh().then(function() {
setTimeout(function() {
ui.hideModal();
window.location.reload();
}, 1000);
});
}
}, _('Refresh'))
])
]);
}
}, _('Refresh Indexes'));
var logsBtn = E('button', {
'class': 'cbi-button',
@ -162,8 +199,10 @@ return view.extend({
return E('div', { 'class': 'cbi-section' }, [
E('h3', {}, _('Actions')),
E('div', { 'class': 'cbi-value' }, [
syncBtn, ' ', logsBtn
])
syncBtn, ' ', refreshBtn, ' ', logsBtn
]),
E('p', { 'style': 'color:#666;font-size:12px;margin-top:8px;' },
_('Use "Sync from GitHub" to download releases, or upload packages via rsync/SCP and click "Refresh Indexes".'))
]);
},
@ -174,12 +213,25 @@ return view.extend({
E('h3', {}, _('Usage')),
E('p', {}, _('Add to /etc/opkg/customfeeds.conf:')),
E('pre', { 'style': 'background:#f5f5f5;padding:10px;border-radius:4px;' }, [
'# Local repository\n',
'src/gz secubox_luci http://127.0.0.1:' + port + '/luci/{ARCH}\n\n',
'# Or via HTTPS (external)\n',
'src/gz secubox_luci https://repo.secubox.in/luci/{ARCH}'
'# Local repository (served from this device)\n',
'src/gz secubox_luci http://127.0.0.1:' + port + '/luci/{ARCH}\n',
'src/gz secubox_packages http://127.0.0.1:' + port + '/packages/{ARCH}\n\n',
'# Or via HTTPS (public URL)\n',
'src/gz secubox_luci https://repo.secubox.in/luci/{ARCH}\n',
'src/gz secubox_packages https://repo.secubox.in/packages/{ARCH}'
].join('')),
E('p', {}, _('Replace {ARCH} with your architecture: x86_64, aarch64_cortex-a72, aarch64_generic, etc.'))
E('p', {}, _('Replace {ARCH} with your architecture: x86_64, aarch64_cortex-a72, aarch64_generic, etc.')),
E('h4', { 'style': 'margin-top:16px;' }, _('Deployment from Workstation')),
E('p', {}, _('Upload packages from your development machine:')),
E('pre', { 'style': 'background:#f5f5f5;padding:10px;border-radius:4px;font-size:12px;' }, [
'# Stage and deploy packages\n',
'./secubox-tools/repo-deploy.sh stage\n',
'./secubox-tools/repo-deploy.sh deploy root@' + window.location.hostname + '\n\n',
'# Or sync manually with rsync\n',
'rsync -avz /tmp/secubox-repo-staging/ root@' + window.location.hostname + ':/srv/repo.secubox.in/'
].join('')),
E('p', {}, _('After uploading, click "Refresh Indexes" to regenerate the package lists.'))
]);
},

View File

View File

View File

View File

View File

View File

View File

View File

View File

Some files were not shown because too many files have changed in this diff Show More