在上一篇文章中Rake的使用中,简单介绍了下Rake.经过这些天的感悟,今天添加两个小用例.
我的博客,还有日常写的一些小demo,工作中的所有代码,都是通过git管理的,尤其是自己的博客仓库,改动很频繁.
写完博客之后改个错别字,在线上测一些东西(反正没人看),都需要四个步骤.
1. git add .
2. git commit -m "some thing"
3. git push github仓库
4. git push 博客仓库
虽然我使用了简写的git命令,但是还是受不了啊.
因此使用Rake编写了脚本,在我查看过diff之后,一次命令,直接帮我完成这些所有步骤.
用到的知识点,Rake中定义带有参数的任务,因为我们在commit的时候需要一个message嘛.
task :default => :push
desc "ps"
task :ps do
sh 'git ps origin master'
sh 'git ps blog_origin master'
end
desc "commit"
task :ci, :msg do |t, args|
mm = args[:msg]
sh "echo #{mm}"
end
desc "deploy"
task :deploy, :msg do |t, args|
mm = args[:msg]
sh "git add ."
sh "git ci -am #{mm}"
sh 'git ps origin master'
sh 'git ps blog_origin master'
end
在deploy
和ci
任务中,都是有参数传递的.
这个脚本还是有改进空间的,比如ps
任务可以直接在deploy
任务中调用,而不用写两遍.我这么写的原因是我解决不了怎样先执行两条语句,再调用任务
.
这个当然不是真的上线了,,,真的上线这么搞会出事情的,,所以告诫大家,在正式的线上不要这么搞.
这个脚本集成了步骤:
1. 将本地项目打包
2. 将jar包copy到服务器指定目录
3. 在服务器上启动项目
直接贴脚本了.
desc "deploy the jar to blog and run it"
task :deploy do
sh 'mvn clean package -Dmaven.test.skip=true'
sh 'scp target/lucene-demo-0.0.1-SNAPSHOT.jar blog:/usr/panfeng'
sh 'ssh blog " cd /usr/panfeng && nohup java -jar lucene-demo-0.0.1-SNAPSHOT.jar >> search.txt &"'
end
首先执行mvn clean package
打包项目,然后执行scp source target
将jar包上传到服务器,之后使用ssh
登录服务器并启动jar包.
以前听过一句话,当你要将一个事情做两遍的时候,考虑为它编写一个脚本
.
但是觉得有点激进了,因为当时我对脚本的理解是python,java等写的脚本,后来学习了shell,觉得还是有点麻烦,而且好多场景感觉不是很适用.
接触了Rake之后,我觉得,两次
有点激进,但是我们确实应该积极的对日常的重复操作编写脚本,可以极大的提高生产力.不仅便捷,而且更加安全可靠,比我们手动执行更加可靠.
2019-05-09 完成
以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
联系邮箱:huyanshi2580@gmail.com
更多学习笔记见个人博客——>呼延十
var gitment = new Gitment({ id: 'Rake的两个小应用', // 可选。默认为 location.href owner: 'hublanker', repo: 'blog', oauth: { client_id: '2297651c181f632a31db', client_secret: 'a62f60d8da404586acc965a2ba6a6da9f053703b', }, }) gitment.render('container')