-
-
Save bhaberer/8835805 to your computer and use it in GitHub Desktop.
Capistrano 3.1.x Strategy to deploy git projects with submodules.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Usage: | |
# 1. Drop this file into lib/capistrano/submodule_strategy.rb | |
# 2. Add the following to your Capfile: | |
# require 'capistrano/git' | |
# require './lib/capistrano/submodule_strategy' | |
# 3. Add the following to your config/deploy.rb | |
# set :git_strategy, SubmoduleStrategy | |
module SubmoduleStrategy | |
# do all the things a normal capistrano git session would do | |
include Capistrano::Git::DefaultStrategy | |
# check for a .git directory | |
def test | |
test! " [ -d #{repo_path}/.git ] " | |
end | |
# same as in Capistrano::Git::DefaultStrategy | |
def check | |
test! :git, :'ls-remote', repo_url | |
end | |
def clone | |
git :clone, '-b', fetch(:branch), '--recursive', repo_url, repo_path | |
end | |
# same as in Capistrano::Git::DefaultStrategy | |
def update | |
git :remote, :update | |
end | |
# put the working tree in a release-branch, | |
# make sure the submodules are up-to-date | |
# and copy everything to the release path | |
def release | |
release_branch = fetch(:release_branch, File.basename(release_path)) | |
git :checkout, '-B', release_branch, | |
fetch(:remote_branch, "origin/#{fetch(:branch)}") | |
git :submodule, :update, '--init' | |
context.execute "rsync -ar --exclude=.git\* #{repo_path}/ #{release_path}" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm going to try this solution unless there are any others recently..?
https://gist.github.com/seenmyfate/11206162