def exe(self, command, exit_on_error=True): if isinstance(command, (str, unicode)): pass elif isinstance(command, list): command = ' '.join(command) else: raise Exception( "Command should be a str, unicode or a list, found %s (%s)" % ( type(command), command)) command = command.replace('${TRAVIS_BUILD_DIR}', self.mqt_path) if self.env: command = "%s %s" % (self.env, command) print(travis_helpers.green("Exec: %s" % command)) exit_code = subprocess.call(command, shell=True) if exit_code > 0: msg = 'ERROR while execulting: %s' % command print(travis_helpers.red(msg)) if exit_on_error: sys.exit(msg) return exit_code
def execute_script(sh, job_id, script_exec, script_filter): if script_filter and script_filter not in script_exec: print(travis_helpers.dark_grey( "Command argument script set, only script %s to execute" % script_filter)) return res = sh.exe(script_exec, exit_on_error=False) if res > 0: print(travis_helpers.red("Error in job %s, script: %s" % ( job_id, script_exec))) print ( "Execute only that failed test with command: " "./run.py -j %s -s %s" % (job_id, script_filter)) sys.exit(1)
def main(argv=None): """ Export translation files and push them to Transifex The transifex password should be encrypted in .travis.yml If not, export exits early. """ if argv is None: argv = sys.argv transifex_user = os.environ.get("TRANSIFEX_USER") transifex_password = os.environ.get("TRANSIFEX_PASSWORD") if not transifex_user: print( yellow_light("WARNING! Transifex user not defined- " "exiting early.")) return 1 if not transifex_password: print( yellow_light("WARNING! Transifex password not recognized- " "exiting early.")) return 1 travis_home = os.environ.get("HOME", "~/") travis_build_dir = os.environ.get("TRAVIS_BUILD_DIR", "../..") travis_repo_slug = os.environ.get("TRAVIS_REPO_SLUG") travis_repo_owner = travis_repo_slug.split("/")[0] travis_repo_shortname = travis_repo_slug.split("/")[1] odoo_unittest = False odoo_exclude = os.environ.get("EXCLUDE") odoo_include = os.environ.get("INCLUDE") install_options = os.environ.get("INSTALL_OPTIONS", "").split() odoo_version = os.environ.get("VERSION") if not odoo_version: # For backward compatibility, take version from parameter # if it's not globally set odoo_version = sys.argv[1] print( yellow_light("WARNING: no env variable set for VERSION. " "Using '%s'" % odoo_version)) default_project_slug = "%s-%s" % (travis_repo_slug.replace( '/', '-'), odoo_version.replace('.', '-')) transifex_project_slug = os.environ.get("TRANSIFEX_PROJECT_SLUG", default_project_slug) transifex_project_name = "%s (%s)" % (travis_repo_shortname, odoo_version) transifex_organization = os.environ.get("TRANSIFEX_ORGANIZATION", travis_repo_owner) transifex_fill_up_resources = os.environ.get("TRANSIFEX_FILL_UP_RESOURCES", "True") transifex_team = os.environ.get("TRANSIFEX_TEAM", "23907") repository_url = "https://github.com/%s" % travis_repo_slug odoo_full = os.environ.get("ODOO_REPO", "odoo/odoo") server_path = get_server_path(odoo_full, odoo_version, travis_home) addons_path = get_addons_path(travis_home, travis_build_dir, server_path) addons_list = get_addons_to_check(travis_build_dir, odoo_include, odoo_exclude) addons = ','.join(addons_list) print("\nWorking in %s" % travis_build_dir) print("Using repo %s and addons path %s" % (odoo_full, addons_path)) if not addons: print(yellow_light("WARNING! Nothing to translate- exiting early.")) return 0 # Create Transifex project if it doesn't exist print() print(yellow("Creating Transifex project if it doesn't exist")) auth = (transifex_user, transifex_password) api_url = "https://www.transifex.com/api/2/" api = API(api_url, auth=auth) project_data = { "slug": transifex_project_slug, "name": transifex_project_name, "source_language_code": "en", "description": transifex_project_name, "repository_url": repository_url, "organization": transifex_organization, "license": "permissive_open_source", "fill_up_resources": transifex_fill_up_resources, "team": transifex_team, } try: api.project(transifex_project_slug).get() print('This Transifex project already exists.') except exceptions.HttpClientError: try: api.projects.post(project_data) print('Transifex project has been successfully created.') except exceptions.HttpClientError: print('Transifex organization: %s' % transifex_organization) print('Transifex username: %s' % transifex_user) print('Transifex project slug: %s' % transifex_project_slug) print( red('Error: Authentication failed. Please verify that ' 'Transifex organization, user and password are ' 'correct. You can change these variables in your ' '.travis.yml file.')) raise print("\nModules to translate: %s" % addons) # Install the modules on the database database = "openerp_i18n" setup_server(database, odoo_unittest, addons, server_path, addons_path, install_options, addons_list) # Initialize Transifex project print() print(yellow('Initializing Transifex project')) init_args = [ '--host=https://www.transifex.com', '--user=%s' % transifex_user, '--pass=%s' % transifex_password ] commands.cmd_init(init_args, path_to_tx=None) path_to_tx = utils.find_dot_tx() connection_context = context_mapping[odoo_version] with connection_context(server_path, addons_path, database) \ as odoo_context: for module in addons_list: print() print(yellow("Downloading PO file for %s" % module)) source_filename = os.path.join(travis_build_dir, module, 'i18n', module + ".pot") # Create i18n/ directory if doesn't exist if not os.path.exists(os.path.dirname(source_filename)): os.makedirs(os.path.dirname(source_filename)) with open(source_filename, 'w') as f: f.write(odoo_context.get_pot_contents(module)) print() print(yellow("Linking PO file and Transifex resource")) set_args = [ '-t', 'PO', '--auto-local', '-r', '%s.%s' % (transifex_project_slug, module), '%s/i18n/<lang>.po' % module, '--source-lang', 'en', '--source-file', source_filename, '--execute' ] commands.cmd_set(set_args, path_to_tx) print() print(yellow('Pushing translation files to Transifex')) push_args = ['-s', '-t', '--skip'] commands.cmd_push(push_args, path_to_tx) return 0
def main(argv=None): """ Export translation files and push them to Transifex The transifex password should be encrypted in .travis.yml If not, export exits early. """ if argv is None: argv = sys.argv transifex_user = os.environ.get("TRANSIFEX_USER") transifex_password = os.environ.get("TRANSIFEX_PASSWORD") if not transifex_user: print(yellow_light("WARNING! Transifex user not defined- " "exiting early.")) return 1 if not transifex_password: print(yellow_light("WARNING! Transifex password not recognized- " "exiting early.")) return 1 travis_home = os.environ.get("HOME", "~/") travis_dependencies_dir = os.path.join(travis_home, 'dependencies') travis_build_dir = os.environ.get("TRAVIS_BUILD_DIR", "../..") travis_repo_slug = os.environ.get("TRAVIS_REPO_SLUG") travis_repo_owner = travis_repo_slug.split("/")[0] travis_repo_shortname = travis_repo_slug.split("/")[1] odoo_unittest = False odoo_exclude = os.environ.get("EXCLUDE") odoo_include = os.environ.get("INCLUDE") install_options = os.environ.get("INSTALL_OPTIONS", "").split() odoo_version = os.environ.get("VERSION") if not odoo_version: # For backward compatibility, take version from parameter # if it's not globally set odoo_version = argv[1] print(yellow_light("WARNING: no env variable set for VERSION. " "Using '%s'" % odoo_version)) default_project_slug = "%s-%s" % (travis_repo_slug.replace('/', '-'), odoo_version.replace('.', '-')) transifex_project_slug = os.environ.get("TRANSIFEX_PROJECT_SLUG", default_project_slug) transifex_project_name = "%s (%s)" % (travis_repo_shortname, odoo_version) transifex_organization = os.environ.get("TRANSIFEX_ORGANIZATION", travis_repo_owner) transifex_fill_up_resources = os.environ.get( "TRANSIFEX_FILL_UP_RESOURCES", "True" ) transifex_team = os.environ.get( "TRANSIFEX_TEAM", "23907" ) repository_url = "https://github.com/%s" % travis_repo_slug odoo_full = os.environ.get("ODOO_REPO", "odoo/odoo") server_path = get_server_path(odoo_full, odoo_version, travis_home) addons_path = get_addons_path(travis_dependencies_dir, travis_build_dir, server_path) addons_list = get_addons_to_check(travis_build_dir, odoo_include, odoo_exclude) addons = ','.join(addons_list) create_server_conf({'addons_path': addons_path}, odoo_version) print("\nWorking in %s" % travis_build_dir) print("Using repo %s and addons path %s" % (odoo_full, addons_path)) if not addons: print(yellow_light("WARNING! Nothing to translate- exiting early.")) return 0 # Create Transifex project if it doesn't exist print() print(yellow("Creating Transifex project if it doesn't exist")) auth = (transifex_user, transifex_password) api_url = "https://www.transifex.com/api/2/" api = API(api_url, auth=auth) project_data = {"slug": transifex_project_slug, "name": transifex_project_name, "source_language_code": "en", "description": transifex_project_name, "repository_url": repository_url, "organization": transifex_organization, "license": "permissive_open_source", "fill_up_resources": transifex_fill_up_resources, "team": transifex_team, } try: api.project(transifex_project_slug).get() print('This Transifex project already exists.') except exceptions.HttpClientError: try: api.projects.post(project_data) print('Transifex project has been successfully created.') except exceptions.HttpClientError: print('Transifex organization: %s' % transifex_organization) print('Transifex username: %s' % transifex_user) print('Transifex project slug: %s' % transifex_project_slug) print(red('Error: Authentication failed. Please verify that ' 'Transifex organization, user and password are ' 'correct. You can change these variables in your ' '.travis.yml file.')) raise print("\nModules to translate: %s" % addons) # Install the modules on the database database = "openerp_i18n" setup_server(database, odoo_unittest, addons, server_path, addons_path, install_options, addons_list) # Initialize Transifex project print() print(yellow('Initializing Transifex project')) init_args = ['--host=https://www.transifex.com', '--user=%s' % transifex_user, '--pass=%s' % transifex_password] commands.cmd_init(init_args, path_to_tx=None) path_to_tx = utils.find_dot_tx() connection_context = context_mapping[odoo_version] with connection_context(server_path, addons_path, database) \ as odoo_context: for module in addons_list: print() print(yellow("Downloading POT file for %s" % module)) source_filename = os.path.join(travis_build_dir, module, 'i18n', module + ".pot") # Create i18n/ directory if doesn't exist if not os.path.exists(os.path.dirname(source_filename)): os.makedirs(os.path.dirname(source_filename)) with open(source_filename, 'w') as f: f.write(odoo_context.get_pot_contents(module)) print() print(yellow("Linking POT file and Transifex resource")) set_args = ['-t', 'PO', '--auto-local', '-r', '%s.%s' % (transifex_project_slug, module), '%s/i18n/<lang>.po' % module, '--source-lang', 'en', '--source-file', source_filename, '--execute'] commands.cmd_set(set_args, path_to_tx) print() print(yellow('Pushing translation files to Transifex')) push_args = ['-s', '-t', '--skip'] commands.cmd_push(push_args, path_to_tx) return 0
import check_tags import travis_helpers version = os.environ.get('VERSION', '') token = os.environ.get('GITHUB_TOKEN') travis_pull_request_number = os.environ.get('TRAVIS_PULL_REQUEST') travis_repo_slug = os.environ.get('TRAVIS_REPO_SLUG') travis_pr_slug = os.environ.get('TRAVIS_PULL_REQUEST_SLUG') travis_branch = os.environ.get('TRAVIS_BRANCH') travis_build_dir = os.environ.get('TRAVIS_BUILD_DIR') error_msg = "Check guidelines: https://gitlab.com/itpp/handbook/blob/master/documenting-updates.md If you are not IT-Projects' employee, you can ignore it and we'll handle it by our own" exit_status = 0 result = check_tags.get_errors_msgs_commits(travis_repo_slug, travis_pull_request_number, travis_branch, version, token, travis_build_dir, travis_pr_slug) count_errors = len(result.keys()) if count_errors > 0: for key, value in result.items(): print('Faulty discription of commit or update of files:') print(travis_helpers.yellow("{commit}".format(commit=key))) print(travis_helpers.red("{errors}".format(errors=value))) print(error_msg) print() print() print( travis_helpers.red("check tags errors: found {number_errors}!".format( number_errors=count_errors))) exit_status = 1 exit(exit_status)
def main(argv=None): """ Export translation files and push them to Transifex The transifex password should be encrypted in .travis.yml If not, export exits early. """ if argv is None: argv = sys.argv transifex_user = os.environ.get("TRANSIFEX_USER", "*****@*****.**") transifex_password = os.environ.get("TRANSIFEX_PASSWORD") if not transifex_user: print( yellow_light("WARNING! Transifex user not defined- " "exiting early.")) return 1 if not transifex_password: print( yellow_light("WARNING! Transifex password not recognized- " "exiting early.")) return 1 travis_home = os.environ.get("HOME", "~/") travis_build_dir = os.environ.get("TRAVIS_BUILD_DIR", "../..") travis_repo_slug = os.environ.get("TRAVIS_REPO_SLUG") travis_repo_owner = travis_repo_slug.split("/")[0] travis_repo_shortname = travis_repo_slug.split("/")[1] odoo_unittest = False odoo_exclude = os.environ.get("EXCLUDE") odoo_include = os.environ.get("INCLUDE") install_options = os.environ.get("INSTALL_OPTIONS", "").split() odoo_version = os.environ.get("VERSION") langs = parse_list(os.environ.get("LANG_ALLOWED", "")) if not odoo_version: # For backward compatibility, take version from parameter # if it's not globally set odoo_version = argv[1] print( yellow_light("WARNING: no env variable set for VERSION. " "Using '%s'" % odoo_version)) default_project_slug = "%s-%s" % (travis_repo_slug.replace( '/', '-'), odoo_version.replace('.', '-')) transifex_project_slug = os.environ.get("TRANSIFEX_PROJECT_SLUG", default_project_slug) transifex_project_name = "%s (%s)" % (travis_repo_shortname, odoo_version) transifex_organization = os.environ.get("TRANSIFEX_ORGANIZATION", travis_repo_owner) transifex_fill_up_resources = os.environ.get("TRANSIFEX_FILL_UP_RESOURCES", "True") transifex_team = os.environ.get("TRANSIFEX_TEAM", "45447") repository_url = "https://github.com/%s" % travis_repo_slug odoo_full = os.environ.get("ODOO_REPO", "odoo/odoo") server_path = get_server_path(odoo_full, odoo_version, travis_home) addons_path = get_addons_path(travis_home, travis_build_dir, server_path) addons_list = get_addons_to_check(travis_build_dir, odoo_include, odoo_exclude) addons_path_list = parse_list(addons_path) all_depends = get_depends(addons_path_list, addons_list) main_modules = set(os.listdir(travis_build_dir)) main_depends = main_modules & all_depends addons_list = list(main_depends) addons = ','.join(addons_list) create_server_conf({'addons_path': addons_path}, odoo_version) print("\nWorking in %s" % travis_build_dir) print("Using repo %s and addons path %s" % (odoo_full, addons_path)) if not addons: print(yellow_light("WARNING! Nothing to translate- exiting early.")) return 0 # Create Transifex project if it doesn't exist print() print(yellow("Creating Transifex project if it doesn't exist")) auth = (transifex_user, transifex_password) api_url = "https://www.transifex.com/api/2/" api = API(api_url, auth=auth) project_data = { "slug": transifex_project_slug, "name": transifex_project_name, "source_language_code": "en", "description": transifex_project_name, "repository_url": repository_url, "organization": transifex_organization, "license": "permissive_open_source", "fill_up_resources": transifex_fill_up_resources, "team": transifex_team, } try: api.project(transifex_project_slug).get() print('This Transifex project already exists.') except exceptions.HttpClientError: try: api.projects.post(project_data) print('Transifex project has been successfully created.') except exceptions.HttpClientError: print('Transifex organization: %s' % transifex_organization) print('Transifex username: %s' % transifex_user) print('Transifex project slug: %s' % transifex_project_slug) print( red('Error: Authentication failed. Please verify that ' 'Transifex organization, user and password are ' 'correct. You can change these variables in your ' '.travis.yml file.')) raise print("\nModules to translate: %s" % addons) # Install the modules on the database database = "openerp_test" script_name = get_server_script(odoo_version) setup_server(database, odoo_unittest, addons, server_path, script_name, addons_path, install_options, addons_list) # Initialize Transifex project print() print(yellow('Initializing Transifex project')) init_args = [ '--host=https://www.transifex.com', '--user=%s' % transifex_user, '--pass=%s' % transifex_password ] commands.cmd_init(init_args, path_to_tx=None) path_to_tx = utils.find_dot_tx() # Use by default version 10 connection context connection_context = context_mapping.get(odoo_version, Odoo10Context) with connection_context(server_path, addons_path, database) \ as odoo_context: for module in addons_list: print() print(yellow("Obtaining POT file for %s" % module)) i18n_folder = os.path.join(travis_build_dir, module, 'i18n') source_filename = os.path.join(i18n_folder, module + ".pot") # Create i18n/ directory if doesn't exist if not os.path.exists(os.path.dirname(source_filename)): os.makedirs(os.path.dirname(source_filename)) with open(source_filename, 'w') as f: f.write(odoo_context.get_pot_contents(module)) # Put the correct timestamp for letting known tx client which # translations to update for po_file_name in os.listdir(i18n_folder): if not po_file_name.endswith('.po'): continue if langs and os.path.splitext(po_file_name)[0] not in langs: # Limit just allowed languages if is defined os.remove(os.path.join(i18n_folder, po_file_name)) continue po_file_name = os.path.join(i18n_folder, po_file_name) command = [ 'git', 'log', '--pretty=format:%cd', '-n1', '--date=raw', po_file_name ] timestamp = float(subprocess.check_output(command).split()[0]) # This converts to UTC the timestamp timestamp = time.mktime(time.gmtime(timestamp)) os.utime(po_file_name, (timestamp, timestamp)) print() print(yellow("Linking POT file and Transifex resource")) set_args = [ '-t', 'PO', '--auto-local', '-r', '%s.%s' % (transifex_project_slug, module), '%s/i18n/<lang>.po' % module, '--source-lang', 'en', '--source-file', source_filename, '--execute' ] commands.cmd_set(set_args, path_to_tx) print() print(yellow('Pushing translation files to Transifex')) push_args = ['-s', '-t', '--skip'] commands.cmd_push(push_args, path_to_tx) return 0
if isinstance(res, string_types): res = res.strip('\n') res = res.splitlines() res = [path.dirname(i).split('/')[0] for i in res] res = list(set(res)) return res config_file = path.abspath(sys.argv[1]) repo_path = os.environ.get('TRAVIS_BUILD_DIR', False) expected_errors = int(os.environ.get('PYLINT_EXPECTED_ERRORS', 0)) modules = [] status = 0 for change in changer_files(path.abspath(repo_path)): if not change: continue modules.extend(['--path', change]) if modules: conf = ["--config-file=%s" % (config_file)] cmd = conf + modules + extra_params res = run_pylint.main(cmd, standalone_mode=False) count_errors = run_pylint.get_count_fails(res, []) if count_errors and count_errors != expected_errors: status = 1 print( travis_helpers.red( "pylint expected errors found {0}!".format(count_errors))) else: print(travis_helpers.green("Good...!!")) exit(status)