fix: Optimize image push logic (#10096)

Refs #10030
This commit is contained in:
ssongliu 2025-08-21 18:33:49 +08:00 committed by GitHub
parent f5bae6d75c
commit fd9c421969
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 26 additions and 2 deletions

View file

@ -850,6 +850,8 @@ const message = {
image: 'Image | Images',
imagePull: 'Pull',
imagePush: 'Push',
imagePushHelper:
'Detected that this image has multiple tags. Please confirm that the image name used for pushing is: {0}',
imageDelete: 'Image delete',
imageTagDeleteHelper: 'Remove other tags associated with this image ID',
repoName: 'Container registry',

View file

@ -825,6 +825,8 @@ const message = {
image: '画像|画像',
imagePull: '引く',
imagePush: '押す',
imagePushHelper:
'このイメージに複数のタグが存在することが検出されましたプッシュ時に使用するイメージ名が以下であることを確認してください{0}',
imageDelete: '画像削除',
imageTagDeleteHelper: 'この画像IDに関連付けられた他のタグを削除します',
repoName: 'コンテナレジストリ',

View file

@ -817,6 +817,8 @@ const message = {
image: '이미지 | 이미지들',
imagePull: '풀',
imagePush: '푸시',
imagePushHelper:
' 이미지에 여러 태그가 있는 것으로 감지되었습니다. 푸시 사용할 이미지 이름이 다음인지 확인하세요: {0}',
imageDelete: '이미지 삭제',
imageTagDeleteHelper: ' 이미지 ID와 관련된 다른 태그를 제거합니다.',
repoName: '컨테이너 저장소 이름',

View file

@ -841,6 +841,8 @@ const message = {
image: 'Imej | Imej-imej',
imagePull: 'Tarik',
imagePush: 'Tekan',
imagePushHelper:
'Terdapat pengesahan bahawa imej ini mempunyai beberapa tag. Sila pastikan nama imej yang digunakan untuk menolak adalah: {0}',
imageDelete: 'Padam imej',
imageTagDeleteHelper: 'Buang tag lain yang berkaitan dengan ID imej ini',
repoName: 'Pendaftaran kontena',

View file

@ -835,6 +835,8 @@ const message = {
image: 'Imagem | Imagens',
imagePull: 'Puxar',
imagePush: 'Enviar',
imagePushHelper:
'Detectado que esta imagem possui múltiplas tags. Por favor, confirme que o nome da imagem usada para push é: {0}',
imageDelete: 'Excluir imagem',
imageTagDeleteHelper: 'Remover outras tags associadas a este ID de imagem',
repoName: 'Registro de contêiner',

View file

@ -837,6 +837,8 @@ const message = {
image: 'Образ | Образы',
imagePull: 'Загрузить',
imagePush: 'Отправить',
imagePushHelper:
'Обнаружено, что у этого образа несколько тегов. Подтвердите, что имя образа, используемое для отправки: {0}',
imageDelete: 'Удалить образ',
imageTagDeleteHelper: 'Удалить другие теги, связанные с этим ID образа',
repoName: 'Реестр контейнеров',

View file

@ -860,6 +860,8 @@ const message = {
image: 'İmaj | İmajlar',
imagePull: 'Çek',
imagePush: 'Gönder',
imagePushHelper:
'Bu imgenin birden fazla etiketi olduğu tespit edildi. Lütfen gönderimde kullanılan imge adının şu olduğunu onaylayın: {0}',
imageDelete: 'İmaj sil',
imageTagDeleteHelper: 'Bu imaj IDsi ile ilişkili diğer etiketleri kaldır',
repoName: 'Konteyner kayıt defteri',

View file

@ -815,6 +815,7 @@ const message = {
image: '鏡像',
imagePull: '拉取鏡像',
imagePush: '推送鏡像',
imagePushHelper: '檢測到該映像存在多個標籤請確認推送時使用的映像名稱為{0}',
imageDelete: '刪除鏡像',
imageTagDeleteHelper: '移除與該映像 ID 相關聯的其他標籤',
repoName: '倉庫名',

View file

@ -814,6 +814,7 @@ const message = {
image: '镜像',
imagePull: '拉取镜像',
imagePush: '推送镜像',
imagePushHelper: '检测到该镜像存在多个标签请确认推送时使用的镜像名称为{0}',
imageDelete: '删除镜像',
imageTagDeleteHelper: '移除与该镜像 ID 相关联的其他标签',
repoName: '仓库名',

View file

@ -2,12 +2,12 @@
<DrawerPro v-model="drawerVisible" :header="$t('container.imagePush')" @close="onCloseLog" size="large">
<el-form ref="formRef" label-position="top" :model="form" label-width="80px">
<el-form-item :label="$t('container.tag')" :rules="Rules.requiredSelect" prop="tagName">
<el-select filterable v-model="form.tagName">
<el-select filterable v-model="form.tagName" @change="handleChange">
<el-option v-for="item in form.tags" :key="item" :value="item" :label="item" />
</el-select>
</el-form-item>
<el-form-item :label="$t('container.repoName')" :rules="Rules.requiredSelect" prop="repoID">
<el-select clearable style="width: 100%" filterable v-model="form.repoID">
<el-select clearable class="w-full" filterable v-model="form.repoID" @change="handleChange">
<el-option v-for="item in dialogData.repos" :key="item.id" :value="item.id" :label="item.name" />
</el-select>
</el-form-item>
@ -15,6 +15,9 @@
<el-input v-model.trim="form.name">
<template #prepend>{{ loadDetailInfo(form.repoID) }}/</template>
</el-input>
<span v-if="form.tags?.length !== 1" class="input-help">
{{ $t('container.imagePushHelper', [loadDetailInfo(form.repoID) + '/' + form.name]) }}
</span>
</el-form-item>
</el-form>
@ -75,6 +78,11 @@ const emit = defineEmits<{ (e: 'search'): void }>();
type FormInstance = InstanceType<typeof ElForm>;
const formRef = ref<FormInstance>();
const handleChange = () => {
let repoURL = loadDetailInfo(form.repoID);
form.name = form.tagName.indexOf(repoURL) !== -1 ? form.tagName.replaceAll(repoURL, '') : form.tagName;
};
const onSubmit = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
formEl.validate(async (valid) => {