Files
ai-exchange/scripts/deploy_server.exp
T

34 lines
1.5 KiB
Plaintext
Executable File

#!/usr/bin/expect -f
set timeout 300
set host "192.168.3.90"
set user "root"
set password "816301"
set script_dir [file dirname [file normalize [info script]]]
set project_root [file normalize [file join $script_dir ".."]]
set archive "/tmp/ai-ict-deploy.tgz"
set remote_archive "/root/ai-ict-deploy.tgz"
set remote_path "/root/deploy/ai-ict"
proc auth {} {
expect {
"*yes/no*" { send "yes\r"; exp_continue }
"*assword:*" { send "$::password\r"; exp_continue }
eof
}
}
exec /bin/sh -c "cd '$project_root' && tar -czf '$archive' Dockerfile docker-compose.yml pyproject.toml README.md .env.example src scripts migrations"
spawn ssh -o StrictHostKeyChecking=accept-new $user@$host "hostname && docker --version && ((docker compose version) || (docker-compose --version)) && mkdir -p $remote_path"
auth
spawn scp -o StrictHostKeyChecking=accept-new $archive $user@$host:$remote_archive
auth
spawn ssh -o StrictHostKeyChecking=accept-new $user@$host "if [ -f $remote_path/.env ]; then cp $remote_path/.env /root/ai-ict-deploy.env.bak; fi && rm -rf $remote_path/* && tar -xzf $remote_archive -C $remote_path && if [ -f /root/ai-ict-deploy.env.bak ]; then mv /root/ai-ict-deploy.env.bak $remote_path/.env; fi && cd $remote_path && ((docker compose down || docker-compose down) >/dev/null 2>&1 || true) && ((docker compose up -d --build) || (docker-compose up -d --build)) && ((docker compose ps) || (docker-compose ps))"
auth
file delete -force $archive
puts "deploy_complete"