我希望创建一个可以从终端运行的部署脚本,它会自动从存储库部署我的站点。我确定的步骤是:
我已经将SSH连接和git pull命令放在了我的shell文件中,但是我坚持使用的是MySQL,它是一个(交互式的?)壳本身。所以在我的档案里:
#!/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语句,读取要运行的最后一个补丁,然后运行任何相应的修补程序。
mysql提示符发出mysql语句?do循环。在这里提供帮助将是非常感谢的。
发布于 2013-01-08 15:22:27
假设您想在远程端完成所有的业务:
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发布于 2013-01-08 14:01:09
您可以使用Perl或类似的语言从mysql获得输出。这可以用于执行您的控制流。
在输入mysql命令时,将它们放入文件中。
然后运行为:mysql -u <user> -p -h <host> < file.sqlcommands。
您还可以使用'-e‘将查询放在mysql命令行上。把你的“选择最大(补丁)从.”并读取脚本中的输出。
发布于 2013-01-08 14:12:34
cat *.sql | mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAMEhttps://stackoverflow.com/questions/14216514
复制相似问题