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:
parent
9ddf5a4e0b
commit
d92b3360ea
@ -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\")"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
0
luci-app-secubox-users/root/usr/libexec/rpcd/luci.secubox-users
Normal file → Executable file
0
luci-app-secubox-users/root/usr/libexec/rpcd/luci.secubox-users
Normal file → Executable file
0
package/secubox/luci-app-ai-insights/root/usr/libexec/rpcd/luci.ai-insights
Normal file → Executable file
0
package/secubox/luci-app-ai-insights/root/usr/libexec/rpcd/luci.ai-insights
Normal file → Executable file
0
package/secubox/luci-app-backup/root/usr/libexec/rpcd/luci.backup
Normal file → Executable file
0
package/secubox/luci-app-backup/root/usr/libexec/rpcd/luci.backup
Normal file → Executable file
0
package/secubox/luci-app-config-vault/root/usr/libexec/rpcd/luci.config-vault
Normal file → Executable file
0
package/secubox/luci-app-config-vault/root/usr/libexec/rpcd/luci.config-vault
Normal file → Executable file
0
package/secubox/luci-app-cookie-tracker/root/usr/libexec/rpcd/luci.cookie-tracker
Normal file → Executable file
0
package/secubox/luci-app-cookie-tracker/root/usr/libexec/rpcd/luci.cookie-tracker
Normal file → Executable file
0
package/secubox/luci-app-crowdsec-dashboard/root/usr/libexec/rpcd/luci.crowdsec-abuseipdb
Normal file → Executable file
0
package/secubox/luci-app-crowdsec-dashboard/root/usr/libexec/rpcd/luci.crowdsec-abuseipdb
Normal file → Executable file
0
package/secubox/luci-app-cve-triage/root/usr/libexec/rpcd/luci.cve-triage
Normal file → Executable file
0
package/secubox/luci-app-cve-triage/root/usr/libexec/rpcd/luci.cve-triage
Normal file → Executable file
0
package/secubox/luci-app-device-intel/root/usr/libexec/rpcd/luci.device-intel
Normal file → Executable file
0
package/secubox/luci-app-device-intel/root/usr/libexec/rpcd/luci.device-intel
Normal file → Executable file
0
package/secubox/luci-app-dns-master/root/usr/libexec/rpcd/luci.dns-master
Normal file → Executable file
0
package/secubox/luci-app-dns-master/root/usr/libexec/rpcd/luci.dns-master
Normal file → Executable file
0
package/secubox/luci-app-dns-provider/root/usr/libexec/rpcd/luci.dns-provider
Normal file → Executable file
0
package/secubox/luci-app-dns-provider/root/usr/libexec/rpcd/luci.dns-provider
Normal file → Executable file
0
package/secubox/luci-app-domoticz/root/usr/libexec/rpcd/luci.domoticz
Normal file → Executable file
0
package/secubox/luci-app-domoticz/root/usr/libexec/rpcd/luci.domoticz
Normal file → Executable file
0
package/secubox/luci-app-dpi-dual/root/usr/libexec/rpcd/luci.dpi-dual
Normal file → Executable file
0
package/secubox/luci-app-dpi-dual/root/usr/libexec/rpcd/luci.dpi-dual
Normal file → Executable file
0
package/secubox/luci-app-droplet/root/usr/libexec/rpcd/luci.droplet
Normal file → Executable file
0
package/secubox/luci-app-droplet/root/usr/libexec/rpcd/luci.droplet
Normal file → Executable file
0
package/secubox/luci-app-gotosocial/root/usr/libexec/rpcd/luci.gotosocial
Normal file → Executable file
0
package/secubox/luci-app-gotosocial/root/usr/libexec/rpcd/luci.gotosocial
Normal file → Executable file
0
package/secubox/luci-app-interceptor/root/usr/libexec/rpcd/luci.interceptor
Normal file → Executable file
0
package/secubox/luci-app-interceptor/root/usr/libexec/rpcd/luci.interceptor
Normal file → Executable file
0
package/secubox/luci-app-iot-guard/root/usr/libexec/rpcd/luci.iot-guard
Normal file → Executable file
0
package/secubox/luci-app-iot-guard/root/usr/libexec/rpcd/luci.iot-guard
Normal file → Executable file
0
package/secubox/luci-app-ipblocklist/root/usr/libexec/rpcd/luci.ipblocklist
Normal file → Executable file
0
package/secubox/luci-app-ipblocklist/root/usr/libexec/rpcd/luci.ipblocklist
Normal file → Executable file
0
package/secubox/luci-app-jellyfin/root/usr/libexec/rpcd/luci.jellyfin
Normal file → Executable file
0
package/secubox/luci-app-jellyfin/root/usr/libexec/rpcd/luci.jellyfin
Normal file → Executable file
0
package/secubox/luci-app-jitsi/root/usr/libexec/rpcd/luci.jitsi
Normal file → Executable file
0
package/secubox/luci-app-jitsi/root/usr/libexec/rpcd/luci.jitsi
Normal file → Executable file
0
package/secubox/luci-app-localrecall/root/usr/libexec/rpcd/luci.localrecall
Normal file → Executable file
0
package/secubox/luci-app-localrecall/root/usr/libexec/rpcd/luci.localrecall
Normal file → Executable file
0
package/secubox/luci-app-mac-guardian/root/usr/libexec/rpcd/luci.mac-guardian
Normal file → Executable file
0
package/secubox/luci-app-mac-guardian/root/usr/libexec/rpcd/luci.mac-guardian
Normal file → Executable file
0
package/secubox/luci-app-mailserver/root/usr/libexec/rpcd/luci.mailserver
Normal file → Executable file
0
package/secubox/luci-app-mailserver/root/usr/libexec/rpcd/luci.mailserver
Normal file → Executable file
0
package/secubox/luci-app-master-link/root/usr/libexec/rpcd/luci.master-link
Normal file → Executable file
0
package/secubox/luci-app-master-link/root/usr/libexec/rpcd/luci.master-link
Normal file → Executable file
0
package/secubox/luci-app-matrix/root/usr/libexec/rpcd/luci.matrix
Normal file → Executable file
0
package/secubox/luci-app-matrix/root/usr/libexec/rpcd/luci.matrix
Normal file → Executable file
0
package/secubox/luci-app-meshname-dns/root/usr/libexec/rpcd/luci.meshname
Normal file → Executable file
0
package/secubox/luci-app-meshname-dns/root/usr/libexec/rpcd/luci.meshname
Normal file → Executable file
0
package/secubox/luci-app-metacatalog/root/usr/libexec/rpcd/luci.metacatalog
Normal file → Executable file
0
package/secubox/luci-app-metacatalog/root/usr/libexec/rpcd/luci.metacatalog
Normal file → Executable file
0
package/secubox/luci-app-metrics-dashboard/root/usr/libexec/rpcd/luci.metrics
Normal file → Executable file
0
package/secubox/luci-app-metrics-dashboard/root/usr/libexec/rpcd/luci.metrics
Normal file → Executable file
0
package/secubox/luci-app-network-anomaly/root/usr/libexec/rpcd/luci.network-anomaly
Normal file → Executable file
0
package/secubox/luci-app-network-anomaly/root/usr/libexec/rpcd/luci.network-anomaly
Normal file → Executable file
0
package/secubox/luci-app-newsbin/root/usr/libexec/rpcd/luci.newsbin
Normal file → Executable file
0
package/secubox/luci-app-newsbin/root/usr/libexec/rpcd/luci.newsbin
Normal file → Executable file
0
package/secubox/luci-app-openclaw/root/usr/libexec/rpcd/luci.openclaw
Normal file → Executable file
0
package/secubox/luci-app-openclaw/root/usr/libexec/rpcd/luci.openclaw
Normal file → Executable file
0
package/secubox/luci-app-peertube/root/usr/libexec/rpcd/luci.peertube
Normal file → Executable file
0
package/secubox/luci-app-peertube/root/usr/libexec/rpcd/luci.peertube
Normal file → Executable file
0
package/secubox/luci-app-photoprism/root/usr/libexec/rpcd/luci.photoprism
Normal file → Executable file
0
package/secubox/luci-app-photoprism/root/usr/libexec/rpcd/luci.photoprism
Normal file → Executable 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.'))
|
||||
]);
|
||||
},
|
||||
|
||||
|
||||
0
package/secubox/luci-app-rezapp/root/usr/libexec/rpcd/luci.rezapp
Normal file → Executable file
0
package/secubox/luci-app-rezapp/root/usr/libexec/rpcd/luci.rezapp
Normal file → Executable file
0
package/secubox/luci-app-rtty-remote/root/usr/libexec/rpcd/luci.rtty-remote
Normal file → Executable file
0
package/secubox/luci-app-rtty-remote/root/usr/libexec/rpcd/luci.rtty-remote
Normal file → Executable file
0
package/secubox/luci-app-secubox-mirror/root/usr/libexec/rpcd/luci.mirrornet
Normal file → Executable file
0
package/secubox/luci-app-secubox-mirror/root/usr/libexec/rpcd/luci.mirrornet
Normal file → Executable file
0
package/secubox/luci-app-secubox-portal/root/usr/libexec/rpcd/luci.secubox-portal
Normal file → Executable file
0
package/secubox/luci-app-secubox-portal/root/usr/libexec/rpcd/luci.secubox-portal
Normal file → Executable file
0
package/secubox/luci-app-secubox-users/root/usr/libexec/rpcd/luci.secubox-users
Normal file → Executable file
0
package/secubox/luci-app-secubox-users/root/usr/libexec/rpcd/luci.secubox-users
Normal file → Executable file
0
package/secubox/luci-app-simplex/root/usr/libexec/rpcd/luci.simplex
Normal file → Executable file
0
package/secubox/luci-app-simplex/root/usr/libexec/rpcd/luci.simplex
Normal file → Executable file
0
package/secubox/luci-app-smtp-relay/root/usr/libexec/rpcd/luci.smtp-relay
Normal file → Executable file
0
package/secubox/luci-app-smtp-relay/root/usr/libexec/rpcd/luci.smtp-relay
Normal file → Executable file
0
package/secubox/luci-app-streamlit-forge/root/usr/libexec/rpcd/luci.streamlit-forge
Normal file → Executable file
0
package/secubox/luci-app-streamlit-forge/root/usr/libexec/rpcd/luci.streamlit-forge
Normal file → Executable file
0
package/secubox/luci-app-threat-analyst/root/usr/libexec/rpcd/luci.threat-analyst
Normal file → Executable file
0
package/secubox/luci-app-threat-analyst/root/usr/libexec/rpcd/luci.threat-analyst
Normal file → Executable file
0
package/secubox/luci-app-torrent/root/usr/libexec/rpcd/luci.torrent
Normal file → Executable file
0
package/secubox/luci-app-torrent/root/usr/libexec/rpcd/luci.torrent
Normal file → Executable file
0
package/secubox/luci-app-turn/root/usr/libexec/rpcd/luci.turn
Normal file → Executable file
0
package/secubox/luci-app-turn/root/usr/libexec/rpcd/luci.turn
Normal file → Executable file
0
package/secubox/luci-app-vortex-dns/root/usr/libexec/rpcd/luci.vortex-dns
Normal file → Executable file
0
package/secubox/luci-app-vortex-dns/root/usr/libexec/rpcd/luci.vortex-dns
Normal file → Executable file
0
package/secubox/luci-app-watchdog/root/usr/libexec/rpcd/luci.watchdog
Normal file → Executable file
0
package/secubox/luci-app-watchdog/root/usr/libexec/rpcd/luci.watchdog
Normal file → Executable file
0
package/secubox/luci-app-wazuh/root/usr/libexec/rpcd/luci.wazuh
Normal file → Executable file
0
package/secubox/luci-app-wazuh/root/usr/libexec/rpcd/luci.wazuh
Normal file → Executable file
0
package/secubox/luci-app-webradio/root/usr/libexec/rpcd/luci.webradio
Normal file → Executable file
0
package/secubox/luci-app-webradio/root/usr/libexec/rpcd/luci.webradio
Normal file → Executable file
0
package/secubox/secubox-ai-gateway/files/etc/init.d/ai-gateway
Normal file → Executable file
0
package/secubox/secubox-ai-gateway/files/etc/init.d/ai-gateway
Normal file → Executable file
0
package/secubox/secubox-ai-gateway/files/usr/libexec/rpcd/luci.ai-gateway
Normal file → Executable file
0
package/secubox/secubox-ai-gateway/files/usr/libexec/rpcd/luci.ai-gateway
Normal file → Executable file
0
package/secubox/secubox-app-bonus/root/etc/init.d/secubox-feed
Normal file → Executable file
0
package/secubox/secubox-app-bonus/root/etc/init.d/secubox-feed
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user