我正在寻找一个可以从终端运行的部署脚本,它会自动从存储库部署我的站点。我发现的步骤是:
我已经在我的shell文件中放置了SSH连接和git pull
命令,但我所坚持的是MySQL,它本身就是一个(交互式?)shell。所以在我的文件中我有:
#!/bin/bash
# connect to remote server via SSH
ssh $SSH_USER@$SSH_HOST
# update code via Git
git pull origin $GIT_BRANCH
# connect to the database
mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME
# run any database patches
# disconnect from the database
# TODO
exit 0
如您所见,我正在连接数据库,但不知道如何执行任何MySQL语句。
目前,我有一个按数字顺序包含SQL补丁的目录。所以 1.sql , 2.sql ,依此类推。然后在我的数据库中,我有一个表,只记录要运行的最后一个补丁。所以我需要做一个SELECT
语句,读取要运行的最后一个补丁,然后运行任何必要的补丁。
SELECT
提示符发出mysql
语句?do
循环?非常感谢这里的帮助。
答案 0 :(得分:1)
假设您想要在远程方面做所有业务:
ssh $SSH_USER@$SSH_HOST << END_SSH
git pull origin $GIT_BRANCH
mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME << END_SQL
<sql statements go here>
END_SQL
END_SSH
答案 1 :(得分:0)
您可以使用Perl或类似方法从mysql获取输出。这可用于控制流程。
将您的mysql命令放入文件中,就像输入它们一样。
然后运行:mysql -u <user> -p -h <host> < file.sqlcommands
。
您还可以使用'-e'在mysql命令行上放置查询。把你的'select max(补丁)放进去吧。并阅读脚本中的输出。
答案 2 :(得分:0)
cat *.sql | mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME