def create_bump_commit(repository, release_branch, bintray_user, bintray_org): with release_branch.config_reader() as cfg: release = cfg.get('release') print('Updating version info in __init__.py and run.sh') update_run_sh_version(release) update_init_py_version(release) input( 'Please add the release notes to the CHANGELOG.md file, then press Enter to continue.' ) proceed = None while not proceed: print(repository.diff()) proceed = yesno('Are these changes ok? y/N ', default=False) if repository.diff(): repository.create_bump_commit(release_branch, release) repository.push_branch_to_remote(release_branch) bintray_api = BintrayAPI(os.environ['BINTRAY_TOKEN'], bintray_user) if not bintray_api.repository_exists(bintray_org, release_branch.name): print('Creating data repository {} on bintray'.format( release_branch.name)) bintray_api.create_repository(bintray_org, release_branch.name, 'generic') else: print('Bintray repository {} already exists. Skipping'.format( release_branch.name))
def resume(args): try: distclean() repository = Repository(REPO_ROOT, args.repo) br_name = branch_name(args.release) if not repository.branch_exists(br_name): raise ScriptError('No local branch exists for this release.') gh_release = repository.find_release(args.release) if gh_release and not gh_release.draft: print( 'WARNING!! Found non-draft (public) release for this version!') proceed = yesno( 'Are you sure you wish to proceed? Modifying an already ' 'released version is dangerous! y/N ', default=False) if proceed.lower() is not True: raise ScriptError('Aborting release') release_branch = repository.checkout_branch(br_name) if args.cherries: cherries = input( 'Indicate (space-separated) PR numbers to cherry-pick then press Enter:\n' ) repository.cherry_pick_prs(release_branch, cherries.split()) create_bump_commit(repository, release_branch, args.bintray_user, args.bintray_org) pr_data = repository.find_release_pr(args.release) if not pr_data: pr_data = repository.create_release_pull_request(args.release) check_pr_mergeable(pr_data) if not args.skip_ci: monitor_pr_status(pr_data) downloader = BinaryDownloader(args.destination) files = downloader.download_all(args.release) if not gh_release: gh_release = create_release_draft(repository, args.release, pr_data, files) delete_assets(gh_release) upload_assets(gh_release, files) tag_as_latest = is_tag_latest(args.release) img_manager = ImageManager(args.release, tag_as_latest) img_manager.build_images(repository) except ScriptError as e: print(e) return 1 print_final_instructions(args) return 0
def resume(args): try: distclean() repository = Repository(REPO_ROOT, args.repo) br_name = branch_name(args.release) if not repository.branch_exists(br_name): raise ScriptError('No local branch exists for this release.') gh_release = repository.find_release(args.release) if gh_release and not gh_release.draft: print('WARNING!! Found non-draft (public) release for this version!') proceed = yesno( 'Are you sure you wish to proceed? Modifying an already ' 'released version is dangerous! y/N ', default=False ) if proceed.lower() is not True: raise ScriptError('Aborting release') release_branch = repository.checkout_branch(br_name) if args.cherries: cherries = input('Indicate (space-separated) PR numbers to cherry-pick then press Enter:\n') repository.cherry_pick_prs(release_branch, cherries.split()) create_bump_commit(repository, release_branch, args.bintray_user, args.bintray_org) pr_data = repository.find_release_pr(args.release) if not pr_data: pr_data = repository.create_release_pull_request(args.release) check_pr_mergeable(pr_data) if not args.skip_ci: monitor_pr_status(pr_data) downloader = BinaryDownloader(args.destination) files = downloader.download_all(args.release) if not gh_release: gh_release = create_release_draft(repository, args.release, pr_data, files) delete_assets(gh_release) upload_assets(gh_release, files) img_manager = ImageManager(args.release) img_manager.build_images(repository, files) except ScriptError as e: print(e) return 1 print_final_instructions(args) return 0
def create_bump_commit(repository, release_branch, bintray_user, bintray_org): with release_branch.config_reader() as cfg: release = cfg.get('release') print('Updating version info in __init__.py and run.sh') update_run_sh_version(release) update_init_py_version(release) input('Please add the release notes to the CHANGELOG.md file, then press Enter to continue.') proceed = None while not proceed: print(repository.diff()) proceed = yesno('Are these changes ok? y/N ', default=False) if repository.diff(): repository.create_bump_commit(release_branch, release) repository.push_branch_to_remote(release_branch) bintray_api = BintrayAPI(os.environ['BINTRAY_TOKEN'], bintray_user) print('Creating data repository {} on bintray'.format(release_branch.name)) bintray_api.create_repository(bintray_org, release_branch.name, 'generic')
def _check_if_tag_latest(version): ga_version = all(n.isdigit() for n in version.split('.')) and version.count('.') == 2 return ga_version and yesno('Should this release be tagged as \"latest\"? Y/n', default=True)