feat: support multi-node batch installation in Skills Hub (#12921)

This commit is contained in:
ssongliu
2026-06-02 22:25:05 +08:00
committed by GitHub
parent 929cd38184
commit 654691543c
21 changed files with 41 additions and 12 deletions
+1
View File
@@ -48,6 +48,7 @@ type SubTask struct {
}
const (
TaskInstall = "TaskInstall"
TaskUpgrade = "TaskUpgrade"
TaskAddNode = "TaskAddNode"
TaskSync = "TaskSync"
+2
View File
@@ -145,6 +145,8 @@ PushAppInstallTaskToNode: "Push app installation task to node [{{ .name }}]"
TaskPush: "Push"
AppInstallTask: "App installation task"
PushAppFailed: "Failed to push app installation task"
SkillHubInstallTask: "Install skill [{{ .name }}]"
SkillHubInstallToTarget: "Install skill to target [{{ .name }}]"
Success: "Success"
#script
+2
View File
@@ -140,6 +140,8 @@ FailedStatus: "{{ .name }} fallida {{ .err }}"
Start: "Iniciar"
SubTask: "Subtarea"
Skip: "Omitir errores y continuar..."
SkillHubInstallTask: "Instalar skill [{{ .name }}]"
SkillHubInstallToTarget: "Instalar skill en destino [{{ .name }}]"
#script
ScriptLibrary: "Biblioteca de scripts"
+2
View File
@@ -139,6 +139,8 @@ PushAppInstallTaskToNode: "ノード [{{ .name }}] にアプリインストー
TaskPush: "送信"
AppInstallTask: "アプリインストールタスク"
PushAppFailed: "アプリインストールタスクの送信に失敗しました"
SkillHubInstallTask: "スキルをインストール [{{ .name }}]"
SkillHubInstallToTarget: "ターゲットにスキルをインストール [{{ .name }}]"
Success: "成功"
#script
+2
View File
@@ -138,6 +138,8 @@ PushAppInstallTaskToNode: "노드 [{{ .name }}]로 앱 설치 작업 전송"
TaskPush: "전송"
AppInstallTask: "앱 설치 작업"
PushAppFailed: "앱 설치 작업 전송 실패"
SkillHubInstallTask: "스킬 설치 [{{ .name }}]"
SkillHubInstallToTarget: "대상에 스킬 설치 [{{ .name }}]"
Success: "성공"
#script
+2
View File
@@ -133,6 +133,8 @@ PushAppInstallTaskToNode: "Hantar tugas pemasangan aplikasi ke nod [{{ .name }}]
TaskPush: "Hantar"
AppInstallTask: "Tugas pemasangan aplikasi"
PushAppFailed: "Gagal menghantar tugas pemasangan aplikasi"
SkillHubInstallTask: "Pasang kemahiran [{{ .name }}]"
SkillHubInstallToTarget: "Pasang kemahiran ke sasaran [{{ .name }}]"
Success: "Berjaya"
#script
+2
View File
@@ -138,6 +138,8 @@ PushAppInstallTaskToNode: "Enviar tarefa de instalação de aplicativo para o n
TaskPush: "Enviar"
AppInstallTask: "Tarefa de instalação de aplicativo"
PushAppFailed: "Falha ao enviar tarefa de instalação de aplicativo"
SkillHubInstallTask: "Instalar skill [{{ .name }}]"
SkillHubInstallToTarget: "Instalar skill no destino [{{ .name }}]"
Success: "Sucesso"
#script
+2
View File
@@ -137,6 +137,8 @@ Skip: "Пропустить ошибки и продолжить..."
TaskPush: "Отправить"
AppInstallTask: "Задача установки приложения"
PushAppFailed: "Не удалось отправить задачу установки приложения"
SkillHubInstallTask: "Установить навык [{{ .name }}]"
SkillHubInstallToTarget: "Установить навык в цель [{{ .name }}]"
Success: "Успешно"
#script
+2
View File
@@ -137,6 +137,8 @@ PushAppInstallTaskToNode: "Uygulama kurulum görevini düğüme [{{ .name }}] g
TaskPush: "Gönder"
AppInstallTask: "Uygulama kurulum görevi"
PushAppFailed: "Uygulama kurulum görevi gönderilemedi"
SkillHubInstallTask: "Skill yükle [{{ .name }}]"
SkillHubInstallToTarget: "Skill hedefe yükle [{{ .name }}]"
Success: "Başarılı"
#script
+2
View File
@@ -139,6 +139,8 @@ PushAppInstallTaskToNode: "傳送應用安裝任務到節點 [{{ .name }}]"
TaskPush: "傳送"
AppInstallTask: "應用安裝任務"
PushAppFailed: "傳送應用安裝任務失敗"
SkillHubInstallTask: "安裝技能 [{{ .name }}]"
SkillHubInstallToTarget: "安裝技能到目標 [{{ .name }}]"
Success: "成功"
#script
+2
View File
@@ -145,6 +145,8 @@ PushAppInstallTaskToNode: "推送应用安装任务到节点 [{{ .name }}]"
TaskPush: "推送"
AppInstallTask: "应用安装任务"
PushAppFailed: "推送应用安装任务失败"
SkillHubInstallTask: "安装技能 [{{ .name }}]"
SkillHubInstallToTarget: "安装技能 {{ .name }} 到目标 {{ .target }}"
Success: "成功"
#script
+2 -1
View File
@@ -1078,7 +1078,7 @@ const message = {
containerized: 'Containerized',
containerName: 'Container Name',
hostSkillDir: 'Skill Directory',
hostSkillDirHelper: 'Enter the Skill directory path on the server where 1Panel is installed.',
hostSkillDirHelper: 'Enter the Skill directory path on the node.',
containerSkillDir: 'Container Skill Directory',
installMethod: 'Install Method',
copy: 'Copy',
@@ -1113,6 +1113,7 @@ const message = {
published: 'Published',
disabled: 'Unpublished',
rejected: 'Rejected',
deleted: 'Deleted',
},
agent: {
common: 'Common',
+2 -2
View File
@@ -1092,8 +1092,7 @@ const message = {
containerized: 'En contenedor',
containerName: 'Nombre del contenedor',
hostSkillDir: 'Directorio de Skills',
hostSkillDirHelper:
'Introduzca la ruta del directorio de Skills en el servidor donde está instalado 1Panel.',
hostSkillDirHelper: 'Introduzca la ruta del directorio de Skills del nodo.',
containerSkillDir: 'Directorio de Skills en el contenedor',
installMethod: 'Método de instalación',
copy: 'Copiar',
@@ -1129,6 +1128,7 @@ const message = {
published: 'Publicado',
disabled: 'Retirado',
rejected: 'Rechazado',
deleted: 'Eliminado',
},
agent: {
common: 'Común',
+2 -2
View File
@@ -1082,8 +1082,7 @@ const message = {
containerized: 'コンテナ化',
containerName: 'コンテナ名',
hostSkillDir: 'Skill ディレクトリ',
hostSkillDirHelper:
'1Panel がインストールされているサーバー上の Skill ディレクトリパスを入力してください',
hostSkillDirHelper: 'ノードの Skill ディレクトリパスを入力してください',
containerSkillDir: 'コンテナ内 Skill ディレクトリ',
installMethod: 'インストール方法',
copy: 'コピー',
@@ -1120,6 +1119,7 @@ const message = {
published: '公開済み',
disabled: '非公開',
rejected: '却下',
deleted: '削除済み',
},
agent: {
common: '共通',
+2 -1
View File
@@ -1066,7 +1066,7 @@ const message = {
containerized: '컨테이너화',
containerName: '컨테이너 이름',
hostSkillDir: 'Skill 디렉터리',
hostSkillDirHelper: '1Panel이 설치된 서버 Skill 디렉터리 경로를 입력하세요.',
hostSkillDirHelper: '노드 Skill 디렉터리 경로를 입력하세요.',
containerSkillDir: '컨테이너 Skill 디렉터리',
installMethod: '설치 방식',
copy: '복사',
@@ -1102,6 +1102,7 @@ const message = {
published: '게시됨',
disabled: '게시 해제됨',
rejected: '거부됨',
deleted: '삭제됨',
},
agent: {
common: '공통',
+2 -1
View File
@@ -1091,7 +1091,7 @@ const message = {
containerized: 'Berkontena',
containerName: 'Nama kontena',
hostSkillDir: 'Direktori Skill',
hostSkillDirHelper: 'Masukkan laluan direktori Skill pada pelayan tempat 1Panel dipasang.',
hostSkillDirHelper: 'Masukkan laluan direktori Skill pada nod.',
containerSkillDir: 'Direktori Skill dalam kontena',
installMethod: 'Kaedah pemasangan',
copy: 'Salin',
@@ -1126,6 +1126,7 @@ const message = {
published: 'Diterbitkan',
disabled: 'Dinyahterbit',
rejected: 'Ditolak',
deleted: 'Dipadam',
},
agent: {
common: 'Umum',
+2 -1
View File
@@ -1087,7 +1087,7 @@ const message = {
containerized: 'Conteinerizado',
containerName: 'Nome do contêiner',
hostSkillDir: 'Diretório de Skills',
hostSkillDirHelper: 'Informe o caminho do diretório de Skills no servidor onde o 1Panel está instalado.',
hostSkillDirHelper: 'Informe o caminho do diretório de Skills no .',
containerSkillDir: 'Diretório de Skills no contêiner',
installMethod: 'Método de instalação',
copy: 'Copiar',
@@ -1123,6 +1123,7 @@ const message = {
published: 'Publicado',
disabled: 'Despublicado',
rejected: 'Rejeitado',
deleted: 'Excluído',
},
agent: {
common: 'Comum',
+2 -1
View File
@@ -1081,7 +1081,7 @@ const message = {
containerized: 'В контейнере',
containerName: 'Имя контейнера',
hostSkillDir: 'Каталог Skills',
hostSkillDirHelper: 'Введите путь к каталогу Skills на сервере, где установлен 1Panel.',
hostSkillDirHelper: 'Введите путь к каталогу Skills на узле.',
containerSkillDir: 'Каталог Skills в контейнере',
installMethod: 'Способ установки',
copy: 'Копировать',
@@ -1118,6 +1118,7 @@ const message = {
published: 'Опубликован',
disabled: 'Снят с публикации',
rejected: 'Отклонен',
deleted: 'Удален',
},
agent: {
common: 'Общий',
+2 -1
View File
@@ -1089,7 +1089,7 @@ const message = {
containerized: 'Konteynerli',
containerName: 'Konteyner adı',
hostSkillDir: 'Skill dizini',
hostSkillDirHelper: '1Panelin kurulu olduğu sunucudaki Skill dizini yolunu girin.',
hostSkillDirHelper: 'Düğümdeki Skill dizini yolunu girin.',
containerSkillDir: 'Konteyner içi Skill dizini',
installMethod: 'Kurulum yöntemi',
copy: 'Kopyala',
@@ -1125,6 +1125,7 @@ const message = {
published: 'Yayınlandı',
disabled: 'Yayından kaldırıldı',
rejected: 'Reddedildi',
deleted: 'Silindi',
},
agent: {
common: 'Ortak',
+2 -1
View File
@@ -1025,7 +1025,7 @@ const message = {
containerized: '容器化',
containerName: '容器名稱',
hostSkillDir: 'Skill 目錄',
hostSkillDirHelper: '請填寫 1Panel 所在伺服器上的 Skill 目錄路徑',
hostSkillDirHelper: '請填寫節點 Skill 目錄路徑',
containerSkillDir: '容器內 Skill 目錄',
installMethod: '安裝方式',
copy: '複製',
@@ -1058,6 +1058,7 @@ const message = {
published: '已上架',
disabled: '已下架',
rejected: '審核未通過',
deleted: '已刪除',
},
agent: {
common: '通用',
+2 -1
View File
@@ -1019,7 +1019,7 @@ const message = {
containerized: '容器化',
containerName: '容器名称',
hostSkillDir: 'Skill 目录',
hostSkillDirHelper: '请填写 1Panel 所在服务器上的 Skill 目录路径',
hostSkillDirHelper: '请填写节点 Skill 目录路径',
containerSkillDir: '容器内 Skill 目录',
installMethod: '安装方式',
copy: '复制',
@@ -1052,6 +1052,7 @@ const message = {
published: '已上架',
disabled: '已下架',
rejected: '审核未通过',
deleted: '已删除',
},
agent: {
common: '通用',