Beispiel #1
0
 def __init__(self):
     self.django = DjangoDeploy()
     self.extra_packages = env.extra_packages
Beispiel #2
0
    def __init__(self):
        self.release_path = None

        self.django = DjangoDeploy()

        required_envs(["project_name", "remote_app_path", "user", "remote_release_path", "remote_virtualenv_path"])
Beispiel #3
0
class ProjectDeploy(object):
    def __init__(self):
        self.django = DjangoDeploy()
        self.extra_packages = env.extra_packages
        
    def create_folder(self):
        create_directories(config._remote_app_path, env.user, '0750')
        create_directories(config.remote_release_path, env.user, '0750')

    def upload(self):
        release_number = datetime.now().strftime('%Y%m%d%H%M%S')
        arquivo_tar = "/tmp/{0}-{1}.tar.gz".format(config.project_name, release_number)
        self.release_path = os.path.join(config.remote_release_path, release_number)

        self.package(arquivo_tar)
        self.send_to_server(arquivo_tar)
        self.unpackage_on_server(arquivo_tar)
        self.link_on_current_folder(release_number)

    def package(self, arquivo_tar):
        local("git archive --format=tar HEAD | gzip >{0}".format(arquivo_tar))

    def send_to_server(self, arquivo_tar):
        run('mkdir %s' % self.release_path)
        put(arquivo_tar, arquivo_tar)
        local("rm {0}".format(arquivo_tar))

    def unpackage_on_server(self, arquivo_tar):
        with cd(self.release_path):
            run('tar zxf {0} --pax-option="delete=SCHILY.*"'.format(arquivo_tar))
            run('rm {0}'.format(arquivo_tar))

    def link_on_current_folder(self, release_number):
        with cd(env.remote_app_path):
            run('rm -f current')
            run('ln -snf releases/{0} current'.format(release_number))

    def install_pip_dependancies(self):
        run("{0}/bin/pip install -r {1}/requirements.txt".format(env.remote_virtualenv_path, self.release_path))

    def create_python_enviroment(self):
        install_packages(
            [
                'python-virtualenv'
            ]
        )

        virtualenv_bin_file = join(env.remote_virtualenv_path, "bin/activate")
        if not files.exists(virtualenv_bin_file):
            create_directories(env.remote_virtualenv_path, env.user, '0750')
            run("virtualenv --distribute --no-site-packages %s" % env.remote_virtualenv_path)

    def install_pil(self):
        sudo('apt-get build-dep python-imaging -qy')
        if not files.exists('/usr/lib/libfreetype.so'):
            sudo('ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/')
        if not files.exists('/usr/lib/libjpeg.so'):
            sudo('ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/')
        if not files.exists('/usr/lib/libz.so'):
            sudo('ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/')

    def deploy(self):
        if not files.exists('/usr/bin/git'):
            puts('new fresh server :D', m_type='warn')
            self.setup()

        puts("deploying your project")
        self.create_folder()
        self.create_python_enviroment()
        self.upload()
        self.install_pip_dependancies()
        self.django.deploy()

    def setup(self):
        puts("setup new project")
        server_upgrade()
        self.install_pil()
        install_packages(
            self.extra_packages +
            [
                'git-core',
                'curl',
            ]
        )

    def status(self):
        self.django.status()
Beispiel #4
0
class ProjectDeploy(object):
    def __init__(self):
        self.release_path = None

        self.django = DjangoDeploy()

        required_envs(["project_name", "remote_app_path", "user", "remote_release_path", "remote_virtualenv_path"])

    def create_folder(self):
        create_directories(env.remote_app_path, env.user, "0750")
        create_directories(env.remote_release_path, env.user, "0750")

    def upload(self):
        release_number = datetime.now().strftime("%Y%m%d%H%M%S")
        arquivo_tar = "/tmp/{0}-{1}.tar.gz".format(env.project_name, release_number)
        self.release_path = os.path.join(env.remote_release_path, release_number)

        self.package(arquivo_tar)
        self.send_to_server(arquivo_tar)
        self.unpackage_on_server(arquivo_tar)
        self.link_on_current_folder(release_number)

    def package(self, arquivo_tar):
        local("git archive --format=tar HEAD | gzip >{0}".format(arquivo_tar))

    def send_to_server(self, arquivo_tar):
        run("mkdir %s" % self.release_path)
        put(arquivo_tar, arquivo_tar)
        local("rm {0}".format(arquivo_tar))

    def unpackage_on_server(self, arquivo_tar):
        with cd(self.release_path):
            run('tar zxf {0} --pax-option="delete=SCHILY.*"'.format(arquivo_tar))
            run("rm {0}".format(arquivo_tar))

    def link_on_current_folder(self, release_number):
        with cd(env.remote_app_path):
            run("rm -f current")
            run("ln -snf releases/{0} current".format(release_number))

    def install_pip_dependancies(self):
        run("{0}/bin/pip install -r {1}/requirements.txt".format(env.remote_virtualenv_path, self.release_path))

    def create_python_enviroment(self):
        install_packages(["python-virtualenv"])

        virtualenv_bin_file = join(env.remote_virtualenv_path, "bin/activate")
        if not files.exists(virtualenv_bin_file):
            create_directories(env.remote_virtualenv_path, env.user, "0750")
            run("virtualenv --distribute --no-site-packages %s" % env.remote_virtualenv_path)

    def deploy(self):
        self.create_folder()
        self.create_python_enviroment()
        self.upload()
        self.install_pip_dependancies()
        self.django.deploy()

    def setup(self):
        puts("setup new project...")
        server_upgrade()
        install_packages(["git-core"])
        self.django.setup()
        self.deploy()