mirror of
https://github.com/frappe/bench.git
synced 2025-01-10 00:37:51 +00:00
Merge pull request #449 from saurabh6790/staging_release_build
command to staging branch from develop brach
This commit is contained in:
commit
c9c75bda17
@ -38,7 +38,7 @@ bench_command.add_command(switch_to_develop)
|
|||||||
|
|
||||||
from bench.commands.utils import (start, restart, set_nginx_port, set_ssl_certificate, set_ssl_certificate_key, set_url_root,
|
from bench.commands.utils import (start, restart, set_nginx_port, set_ssl_certificate, set_ssl_certificate_key, set_url_root,
|
||||||
set_mariadb_host, set_default_site, download_translations, shell, backup_site, backup_all_sites, release, renew_lets_encrypt,
|
set_mariadb_host, set_default_site, download_translations, shell, backup_site, backup_all_sites, release, renew_lets_encrypt,
|
||||||
disable_production, bench_src)
|
disable_production, bench_src, prepare_staging)
|
||||||
bench_command.add_command(start)
|
bench_command.add_command(start)
|
||||||
bench_command.add_command(restart)
|
bench_command.add_command(restart)
|
||||||
bench_command.add_command(set_nginx_port)
|
bench_command.add_command(set_nginx_port)
|
||||||
@ -52,6 +52,7 @@ bench_command.add_command(shell)
|
|||||||
bench_command.add_command(backup_site)
|
bench_command.add_command(backup_site)
|
||||||
bench_command.add_command(backup_all_sites)
|
bench_command.add_command(backup_all_sites)
|
||||||
bench_command.add_command(release)
|
bench_command.add_command(release)
|
||||||
|
bench_command.add_command(prepare_staging)
|
||||||
bench_command.add_command(renew_lets_encrypt)
|
bench_command.add_command(renew_lets_encrypt)
|
||||||
bench_command.add_command(disable_production)
|
bench_command.add_command(disable_production)
|
||||||
bench_command.add_command(bench_src)
|
bench_command.add_command(bench_src)
|
||||||
|
@ -130,6 +130,13 @@ def release(app, bump_type, from_branch, to_branch, owner, repo_name, remote):
|
|||||||
release(bench_path='.', app=app, bump_type=bump_type, from_branch=from_branch, to_branch=to_branch,
|
release(bench_path='.', app=app, bump_type=bump_type, from_branch=from_branch, to_branch=to_branch,
|
||||||
remote=remote, owner=owner, repo_name=repo_name)
|
remote=remote, owner=owner, repo_name=repo_name)
|
||||||
|
|
||||||
|
@click.command('prepare-staging')
|
||||||
|
@click.argument('app')
|
||||||
|
def prepare_staging(app):
|
||||||
|
"""Prepare staging branch from develop branch"""
|
||||||
|
from bench.prepare_staging import prepare_staging
|
||||||
|
prepare_staging(bench_path='.', app=app)
|
||||||
|
|
||||||
|
|
||||||
@click.command('disable-production')
|
@click.command('disable-production')
|
||||||
def disable_production():
|
def disable_production():
|
||||||
|
73
bench/prepare_staging.py
Executable file
73
bench/prepare_staging.py
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
#! env python
|
||||||
|
import os
|
||||||
|
import git
|
||||||
|
import click
|
||||||
|
from .config.common_site_config import get_config
|
||||||
|
|
||||||
|
github_username = None
|
||||||
|
github_password = None
|
||||||
|
|
||||||
|
def prepare_staging(bench_path, app, remote='upstream'):
|
||||||
|
from .release import get_release_message
|
||||||
|
validate(bench_path)
|
||||||
|
|
||||||
|
repo_path = os.path.join(bench_path, 'apps', app)
|
||||||
|
update_branches(repo_path, remote)
|
||||||
|
message = get_release_message(repo_path, from_branch='develop', to_branch='staging', remote=remote)
|
||||||
|
|
||||||
|
if not message:
|
||||||
|
print('No commits to release')
|
||||||
|
return
|
||||||
|
|
||||||
|
print()
|
||||||
|
print(message)
|
||||||
|
print()
|
||||||
|
|
||||||
|
click.confirm('Do you want to continue?', abort=True)
|
||||||
|
|
||||||
|
create_staging(repo_path)
|
||||||
|
push_commits(repo_path)
|
||||||
|
|
||||||
|
def validate(bench_path):
|
||||||
|
from .release import validate
|
||||||
|
|
||||||
|
config = get_config(bench_path)
|
||||||
|
validate(bench_path, config)
|
||||||
|
|
||||||
|
def update_branches(repo_path, remote):
|
||||||
|
from .release import update_branch
|
||||||
|
update_branch(repo_path, 'staging', remote)
|
||||||
|
update_branch(repo_path, 'develop', remote)
|
||||||
|
|
||||||
|
git.Repo(repo_path).git.checkout('develop')
|
||||||
|
|
||||||
|
def create_staging(repo_path, from_branch='develop'):
|
||||||
|
from .release import handle_merge_error
|
||||||
|
|
||||||
|
print('creating staging from', from_branch)
|
||||||
|
repo = git.Repo(repo_path)
|
||||||
|
g = repo.git
|
||||||
|
g.checkout('staging')
|
||||||
|
try:
|
||||||
|
g.merge(from_branch, '--no-ff')
|
||||||
|
except git.exc.GitCommandError as e:
|
||||||
|
handle_merge_error(e, source=from_branch, target='staging')
|
||||||
|
|
||||||
|
g.checkout(from_branch)
|
||||||
|
try:
|
||||||
|
g.merge('staging')
|
||||||
|
except git.exc.GitCommandError as e:
|
||||||
|
handle_merge_error(e, source='staging', target=from_branch)
|
||||||
|
|
||||||
|
def push_commits(repo_path, remote='upstream'):
|
||||||
|
print('pushing staging branch of', repo_path)
|
||||||
|
|
||||||
|
repo = git.Repo(repo_path)
|
||||||
|
g = repo.git
|
||||||
|
|
||||||
|
args = [
|
||||||
|
'develop:develop',
|
||||||
|
'staging:staging'
|
||||||
|
]
|
||||||
|
|
||||||
|
print(g.push(remote, *args))
|
Loading…
Reference in New Issue
Block a user