I do something similar, but with GitLab CI.
script:
- ssh-add <(echo "$PRODUCTION_PRIVATE_KEY")
- VERSION_FOLDER=`date +%F_%T`
- scp -P$PRODUCTION_SSH_PORT -r release.tar.gz $PRODUCTION_DEPLOY_USER@$PRODUCTION_HOST:/var/www/apps/myapp
- ssh -p$PRODUCTION_SSH_PORT $PRODUCTION_DEPLOY_USER@$PRODUCTION_HOST "mkdir -p /var/www/apps/myapp/versions/$VERSION_FOLDER"
- ssh -p$PRODUCTION_SSH_PORT $PRODUCTION_DEPLOY_USER@$PRODUCTION_HOST "sudo /bin/systemctl stop myapp.service"
- ssh -p$PRODUCTION_SSH_PORT $PRODUCTION_DEPLOY_USER@$PRODUCTION_HOST "tar -xf /var/www/apps/myapp/release.tar.gz -C /var/www/apps/myapp/versions/$VERSION_FOLDER"
- ssh -p$PRODUCTION_SSH_PORT $PRODUCTION_DEPLOY_USER@$PRODUCTION_HOST "ln -sfn /var/www/apps/myapp/versions/$VERSION_FOLDER /var/www/apps/myapp/current"
- ssh -p$PRODUCTION_SSH_PORT $PRODUCTION_DEPLOY_USER@$PRODUCTION_HOST "sudo /bin/systemctl start myapp.service"
- ssh -p$PRODUCTION_SSH_PORT $PRODUCTION_DEPLOY_USER@$PRODUCTION_HOST "ls -dt /var/www/apps/myapp/versions/* | tail -n +5 | xargs rm -rf"
I start/stop services with systemd. Took the config here, I think https://mfeckie.github.io/Phoenix-In-Production-With-Systemd/






















