def download_official_wheels(): """ Download the official wheels for each platform """ assert AZURE_STORAGE_CONNECTION_STRING, 'Set AZURE_STORAGE_CONNECTION_STRING environment variable' from mssqlcli import __version__ as latest_version # Clear previous downloads utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY) os.mkdir(utility.MSSQLCLI_DIST_DIRECTORY) print('Downloading official wheels with version: {}'.format(latest_version)) blob_names = [ 'mssql_cli-{}-py2.py3-none-macosx_10_11_intel.whl'.format(latest_version), 'mssql_cli-{}-py2.py3-none-manylinux1_x86_64.whl'.format(latest_version), 'mssql_cli-{}-py2.py3-none-win_amd64.whl'.format(latest_version), 'mssql_cli-{}-py2.py3-none-win32.whl'.format(latest_version) ] blob_service = BlockBlobService(connection_string=AZURE_STORAGE_CONNECTION_STRING) for blob in blob_names: print('Downloading wheel:{}'.format(blob)) if not blob_service.exists(BLOB_MSSQL_CLI_DAILY_CONTAINER_NAME, blob): print('Error: blob: {} does not exist in container: {}'.format(blob, BLOB_MSSQL_CLI_DAILY_CONTAINER_NAME)) sys.exit(1) blob_service.get_blob_to_path(BLOB_MSSQL_CLI_DAILY_CONTAINER_NAME, blob, '{0}\{1}'.format( utility.MSSQLCLI_DIST_DIRECTORY, blob))
def copy_sqltoolsservice(platform): """ For each supported platform, build a universal wheel. """ # Clean up dangling directories if previous run was interrupted. utility.clean_up(directory=TARGET_DIRECTORY) if not platform or platform not in SUPPORTED_PLATFORMS: print('{} is not supported.'.format(platform)) print( 'Please provide a valid platform flag.' + '[win32, win_amd64, win64, manylinux1_x86_64, manylinux1_i686, macosx_10_11_intel]' ) sys.exit(1) copy_file_path = SUPPORTED_PLATFORMS[platform] print('Sqltoolsservice archive found at {}'.format(copy_file_path)) if copy_file_path.endswith('tar.gz'): compressed_file = tarfile.open(name=copy_file_path, mode='r:gz') elif copy_file_path.endswith('.zip'): compressed_file = zipfile.ZipFile(copy_file_path) if not os.path.exists(TARGET_DIRECTORY): os.makedirs(TARGET_DIRECTORY) print( u'Bin placing sqltoolsservice for this platform: {}.'.format(platform)) print(u'Extracting files from {}'.format(copy_file_path)) compressed_file.extractall(TARGET_DIRECTORY)
def build(): """ Builds mssql-cli package. """ print_heading('Cleanup') # clean utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY) utility.clean_up_egg_info_sub_directories(utility.ROOT_DIR) print_heading('Running setup') # install general requirements. utility.exec_command( '{0} -m pip install -r requirements-dev.txt'.format(PYTHON), utility.ROOT_DIR) # convert windows line endings to unix for mssql-cli bash script utility.exec_command('{0} dos2unix.py mssql-cli mssql-cli'.format(PYTHON), utility.ROOT_DIR) # run flake8 code_analysis() if utility.get_current_platform().startswith('win'): platforms_to_build = ['win32', 'win_amd64'] else: platforms_to_build = [utility.get_current_platform()] for plat in platforms_to_build: # For the current platform, populate the appropriate binaries and # generate the wheel. clean_and_copy_sqltoolsservice(plat) utility.clean_up(utility.MSSQLCLI_BUILD_DIRECTORY) print_heading('Building mssql-cli pip package') utility.exec_command('%s --version' % PYTHON, utility.ROOT_DIR) utility.exec_command('%s setup.py bdist_wheel --plat-name %s' % (PYTHON, plat), utility.ROOT_DIR, continue_on_error=False) try: # checks if long description will render correctly--does not work on some systems utility.exec_command('twine check {}'.format( os.path.join(utility.MSSQLCLI_DIST_DIRECTORY, '*')), utility.ROOT_DIR, continue_on_error=False) except IOError as err: print(err) print("Unable to run 'twine check'.") # Copy back the SqlToolsService binaries for this platform. clean_and_copy_sqltoolsservice(utility.get_current_platform()) copy_and_rename_wheels()
def build(): """ Builds mssql-cli package. """ print_heading('Cleanup') # clean utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY) utility.clean_up_egg_info_sub_directories(utility.ROOT_DIR) print_heading('Running setup') # install general requirements. utility.exec_command('{0} install -r requirements-dev.txt'.format(PIP), utility.ROOT_DIR) # convert windows line endings to unix for mssql-cli bash script utility.exec_command('{0} dos2unix.py mssql-cli mssql-cli'.format(PYTHON), utility.ROOT_DIR) # run flake8 code_analysis() if utility.get_current_platform().startswith('win'): platforms_to_build = ['win32', 'win_amd64'] else: platforms_to_build = [utility.get_current_platform()] for plat in platforms_to_build: # For the current platform, populate the appropriate binaries and # generate the wheel. clean_and_copy_sqltoolsservice(plat) utility.clean_up(utility.MSSQLCLI_BUILD_DIRECTORY) print_heading('Building mssql-cli pip package') utility.exec_command('%s --version' % PYTHON, utility.ROOT_DIR) utility.exec_command( '%s setup.py check -r -s bdist_wheel --plat-name %s' % (PYTHON, plat), utility.ROOT_DIR, continue_on_error=False) # generate sdist--only run on macOS to eliminate redundant copies when published to Azure # NOTE: macOS was arbitrarily chosen as the single OS if sys.platform == 'darwin': utility.exec_command( '%s setup.py check -r -s sdist --formats=gztar' % PYTHON, utility.ROOT_DIR, continue_on_error=False) # Copy back the SqlToolsService binaries for this platform. clean_and_copy_sqltoolsservice(utility.get_current_platform()) copy_and_rename_wheels()
def import_visual(prod_visual,filename=None): api_url = '/migration/api/import/' payload = {'dry_run': False, "dataconnection_name":prod_visual.connection} files = {} if filename: files = {'import_file': open(filename,'r')} else: files = {'import_file': open('new_visual.json','r')} response = API.arc_api_post_request(api_url,'',payload,files) # clean up util.clean_up()
def build_sqltoolsservice_wheels(platforms): """ For each supported platform, build a universal wheel. """ # Clean up dangling directories if previous run was interrupted. utility.clean_up(directory=TARGET_DIRECTORY) utility.clean_up(directory=BUILD_DIRECTORY) if not platforms: # Defaults to all supported platforms. platforms = SUPPORTED_PLATFORMS.keys() print(u'Generating .whl files for the following platforms: {}'.format( platforms)) for platform in platforms: if platform not in SUPPORTED_PLATFORMS: print(u'{} is not a supported platform'.format(platform)) break # Set environment variable to communicate current platform to setup.py. os.environ[u'MSSQLTOOLSSERVICE_PLATFORM'] = platform print(u'Calling setup bdist_wheel for platform:{}'.format(platform)) download_and_unzip(SUPPORTED_PLATFORMS[platform], directory=TARGET_DIRECTORY) utility.exec_command(u'python setup.py check -r -s bdist_wheel', CURRENT_DIRECTORY) print( u'Cleaning up mssqltoolservice and build directory for platform:{}' .format(platform)) utility.clean_up(directory=TARGET_DIRECTORY) utility.clean_up(directory=BUILD_DIRECTORY)
def build(): """ Builds mssql-cli package. """ print_heading('Cleanup') # clean utility.clean_up(utility.MSSQLCLI_DIST_DIRECTORY) utility.clean_up_egg_info_sub_directories(utility.ROOT_DIR) print_heading('Running setup') # install general requirements. utility.exec_command('{0} install -r requirements-dev.txt'.format(PIP), utility.ROOT_DIR) # convert windows line endings to unix for mssql-cli bash script utility.exec_command('{0} dos2unix.py mssql-cli mssql-cli'.format(PYTHON), utility.ROOT_DIR) # run flake8 code_analysis() if utility.get_current_platform().startswith('win'): platforms_to_build = ['win32', 'win_amd64'] else: platforms_to_build = [utility.get_current_platform()] for platform in platforms_to_build: # For the current platform, populate the appropriate binaries and # generate the wheel. clean_and_copy_sqltoolsservice(platform) utility.clean_up(utility.MSSQLCLI_BUILD_DIRECTORY) print_heading('Building mssql-cli pip package') utility.exec_command('{0} --version'.format(PYTHON), utility.ROOT_DIR) utility.exec_command( '{0} setup.py check -r -s bdist_wheel --plat-name {1}'.format( PYTHON, platform), utility.ROOT_DIR, continue_on_error=False) # Copy back the SqlToolsService binaries for this platform. clean_and_copy_sqltoolsservice(utility.get_current_platform()) copy_and_rename_wheels()
def build(platform_names): """ Builds mssql-scripter package. """ print_heading('Cleanup') # clean utility.clean_up(utility.MSSQLSCRIPTER_DIST_DIRECTORY) print_heading('Running setup') # install general requirements. utility.exec_command('pip install -r dev_requirements.txt', utility.ROOT_DIR) # convert windows line endings to unix for mssql-cli bash script utility.exec_command('python dos2unix.py mssql-scripter mssql-scripter', utility.ROOT_DIR) for platform in platform_names: utility.clean_up(utility.MSSQLSCRIPTER_BUILD_DIRECTORY) utility.cleaun_up_egg_info_sub_directories(utility.ROOT_DIR) mssqltoolsservice.copy_sqltoolsservice(platform) print_heading( 'Building mssql-scripter {} wheel package package'.format( platform)) utility.exec_command('python --version', utility.ROOT_DIR) utility.exec_command( 'python setup.py check -r -s bdist_wheel --plat-name {}'.format( platform), utility.ROOT_DIR, continue_on_error=False) mssqltoolsservice.clean_up_sqltoolsservice()
def clean_up_sqltoolsservice(): utility.clean_up(directory=TARGET_DIRECTORY)
def build(options): supported_actions = ['nightly'] action = None if len(options) >= 1: if options[0] not in supported_actions: print('Please provide a supported action {}.'.format( supported_actions)) return action = options[0] if action == 'nightly': assert AZURE_STORAGE_CONNECTION_STRING, 'Set AZURE_STORAGE_CONNECTION_STRING environment variable' print_heading('Cleanup') # clean utility.clean_up(utility.MSSQLSCRIPTER_DIST_DIRECTORY) utility.clean_up(utility.MSSQLTOOLSSERVICE_DIST_DIRECTORY) utility.cleaun_up_egg_info_sub_directories(utility.ROOT_DIR) utility.cleaun_up_egg_info_sub_directories( utility.MSSQLTOOLSSERVICE_DIRECTORY) print_heading('Running setup') # install general requirements. utility.exec_command('pip install -r dev_requirements.txt', utility.ROOT_DIR) print_heading('Running mssql-scripter tests') utility.exec_command('tox', utility.ROOT_DIR, continue_on_error=False) print_heading('Building mssql-scripter pip package') utility.exec_command('python setup.py check -r -s sdist', utility.ROOT_DIR, continue_on_error=False) print_heading('Building mssqltoolsservice pip package') utility.exec_command('python buildwheels.py', utility.MSSQLTOOLSSERVICE_DIRECTORY, continue_on_error=False) if action == 'nightly': blob_service = BlockBlobService( connection_string=AZURE_STORAGE_CONNECTION_STRING) print_heading('Uploading packages to blob storage ') for pkg in os.listdir(utility.MSSQLSCRIPTER_DIST_DIRECTORY): pkg_path = os.path.join(utility.MSSQLSCRIPTER_DIST_DIRECTORY, pkg) print('Uploading package {}'.format(pkg_path)) upload_package(blob_service, pkg_path, 'mssql-scripter') for pkg in os.listdir(utility.MSSQLTOOLSSERVICE_DIST_DIRECTORY): pkg_path = os.path.join(utility.MSSQLTOOLSSERVICE_DIST_DIRECTORY, pkg) pkg_name = os.path.basename(pkg_path).split('-')[0].replace( '_', '-').lower() print('Uploading package {}'.format(pkg_name)) upload_package(blob_service, pkg_path, pkg_name) # Upload the final index file upload_index_file(blob_service, 'index.html', 'Simple Index', UPLOADED_PACKAGE_LINKS)