34 lines
1.5 KiB
Plaintext
Executable File
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"
|