import os
import paramiko

host = '8.140.221.49'
username = 'root'
private_key_path = r'C:\Users\FZX\.ssh\FzxBdsh-ECS.pem'

def run_command(ssh, cmd):
    stdin, stdout, stderr = ssh.exec_command(cmd)
    return stdout.read().decode().strip(), stderr.read().decode().strip()

print('='*80)
print('重新推送前端镜像到服务器')
print('='*80)

print('\n1️⃣ 重新构建并保存前端镜像')
frontend_projects = [
    ('merchant_web', 'merchant-web'),
    ('platform_web', 'platform-web'),
    ('official_website', 'official-website')
]

for dir_name, image_name in frontend_projects:
    print(f'\n处理 {image_name}...')
    os.system(f'cd d:/FzxBDSH/frontend/{dir_name} && npm run build')
    os.system(f'cd d:/FzxBDSH/frontend/{dir_name} && podman build -t {image_name}:v1.1.0 .')
    os.system(f'podman save -o /tmp/{image_name}.tar {image_name}:v1.1.0')
    print(f'✅ {image_name} 镜像保存完成')

print('\n2️⃣ 上传镜像到服务器')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, key_filename=private_key_path, timeout=30)

sftp = ssh.open_sftp()
for _, image_name in frontend_projects:
    local_path = f'/tmp/{image_name}.tar'
    remote_path = f'/tmp/{image_name}.tar'
    sftp.put(local_path, remote_path)
    print(f'✅ {image_name}.tar 上传完成')
sftp.close()

print('\n3️⃣ 在服务器上加载镜像')
for _, image_name in frontend_projects:
    run_command(ssh, f'podman load -i /tmp/{image_name}.tar')
    run_command(ssh, f'podman tag {image_name}:v1.1.0 localhost:5000/fzx/{image_name}:v1.1.0')
    run_command(ssh, f'podman push localhost:5000/fzx/{image_name}:v1.1.0 --tls-verify=false')
    print(f'✅ {image_name} 镜像加载并推送完成')

print('\n4️⃣ 验证服务器上的镜像')
output, error = run_command(ssh, 'podman images | grep fzx')
print(output)

ssh.close()

print('\n' + '='*80)
print('前端镜像推送完成！')
print('='*80)