5 ms·
after "deploy:restart", "deploy:tag_release" desc 'Tag release' task :tag_release do `git checkout #{rails_env}` `git tag #{rails_env}_#{DateTime.n
by enko 13y ago
after "deploy:restart", "deploy:tag_release"
desc 'Tag release'
task :tag_release do
`git checkout #{rails_env}`
`git tag #{rails_env}_#{DateTime.now.strftime "%Y_%m_%d-%H_%M"}`
`git push --tags`
`git checkout master`
end
Boom!
- dnr 13y agoThat's not going to match the release name that capistrano chose, right? Seems like you'd want to use latest_release or something.
- enko 13y agoYeah, modify to taste. I only wanted to post some example code to show how easy it is to automate tagging. My code won't be appropriate if you don't use master/staging/production branches, either.
- bradleyland 13y agoWe do the inverse. We tag first, then instruct Capistrano to grab the latest release (with a prompt). We have a release plan though, where software goes through QA before it's tagged. Only software ready for production gets a tag. Everything up to that point is done on a release branch. set :branch do default_tag = `git tag`.split("\n").last tag = Capistrano::CLI.ui.ask "Tag to deploy (make sure to push the tag first): [#{default_tag}] " tag = default_tag if tag.empty? tag end
- berto77 13y agoJust use git flow for releases. For non-trivial deploys, you may want to check out teamcity.