我正在使用GoCD在VPC内建立项目的持续集成和部署到AWS EC2实例(同样可以 也在詹金斯尝试)。理想情况下,我想从我的GoCD系统触发构建,分发和部署/重启项目。 我能够在VPC中构建和分发项目到私有实例。但是我在私有项目上重新启动项目时遇到了问题 实例。我的项目是基于java [dropwizard]的微服务项目。
重新启动以下是我迄今为止所做的事情:
1-在目标私有实例上安装restart.sh脚本以停止并重新启动项目。
#!/bin/sh
BASE_DIR=/home/ubuntu/project
PROJECT=my_deployment_test
# Kill the existing API service
echo "Stopping test Server instance"
#sudo pkill -f 'my_deployment_test.jar'
echo "Starting my_deployment_test"
# Start API Services
sudo /usr/bin/java -cp "$BASE_DIR/$PROJECT/lib/*:$BASE_DIR/$PROJECT" -jar $BASE_DIR/$PROJECT/my_deployment_test.jar server $BASE_DIR/$PROJECT/conf.yml &
在私有实例中本地运行时,此脚本正常工作。它正在扼杀现有流程并启动项目。
2-在public / NAT实例中有一个remoteRestart.sh脚本,我可以通过该脚本触发私有实例中的上述restart.sh
ssh -i private_key.pem user@host /home/ubuntu/project/my_deployment_test/restart
如果以上脚本有效,那么我将在GoCD中执行一个任务,在内部将在公共/ NAT实例上执行remoteRestart.sh 在私人场所重启项目。
但是,我在公共/ NAT实例本身上执行remoteRestart.sh时遇到问题。 在控制台中我可以看到echo语句的输出。私有实例上的早期项目进程也被杀死但是 项目没有开始。
有一个选项可以使用S3来分发使用AWS代码部署服务,但我发现[对于我的情况],每次我需要部署时都不需要在s3上存储所有项目项。
上面的脚本我可能会出错。还有其他选择吗?
感谢
答案 0 :(得分:0)
当会话断开连接时,脚本可能会被杀死。尝试将脚本作为后台(&
)进程运行,或通过at now
将其移除。