def get_tasks_to_build_jira(self, args, workspace_utils=WorkspaceUtils()): #for workspace build maven must be executed from parent directory maven = MavenCallable(args) maven.phase('package') if not args.build_war: maven.property('jira.do.not.prepare.war') maven.project('jira-components/jira-webapp').option('-am') maven.property('jira.home', args.layout.jira_home()) maven.projects.extend( workspace_utils.get_workspace_projects_without_jira(args)) self.add_plugins_maven_goals(args, maven) if not args.attach_sources: maven.property('skipSources') maven.skip_tests() if args.third_party_licensing: maven.profiles.extend(['third-party-licensing']) # return builder and the bundled plugins return [ maven, lambda logger: self.stale_plugins.remember_plugins_profiles( maven.profiles) or 0 ]
def process_webdriver(args, executor, fileutils=FileUtils()): maven = MavenCallable() maven.project('jira-distribution/jira-webdriver-tests-runner').option( '-am') maven.phase('verify').profile('hallelujahClient').profile( 'distribution') maven.property('maven.test.unit.skip', 'true') if fileutils.file_exists(args.replay_file): replay_file = os.path.abspath(args.replay_file) else: replay_file = os.path.abspath( os.sep.join(['target', 'replays', args.replay_file])) maven.property('jira.user.extra.jvmargs', '"-Dhallelujah.local.test.list=%s"' % replay_file) maven.property('func.mode.plugins').property('reference.plugins') maven.property( 'system.bamboo.agent.home', os.path.abspath( os.sep.join([ 'jira-distribution', 'jira-webdriver-tests-runner', 'target' ]))) executor.append(maven.can_run_in_parallel())
def __call__(self, args, executor): if args.with_workspace: executor.append(WorkspaceValidator()) maven = MavenCallable(args) maven.phase('clean').profile('jmake') executor.append(maven) if args.jirahome: self.remove_if_present(args, executor, WorkspaceLayout.JIRA_HOME) self.remove_if_present(args, executor, WorkspaceLayout.JIRA_OD_HOME) self.remove_if_present(args, executor, WorkspaceLayout.JIRA_CLUSTERED_HOME_ROOT) self.remove_if_present(args, executor, WorkspaceLayout.JIRA_SHARED_HOME_ROOT) if args.tomcat: if self.fileutils.file_exists(WorkspaceLayout.TOMCAT_DOWNLOAD): executor.append( SystemCallable(args, 'rm -rf ' + WorkspaceLayout.TOMCAT_DOWNLOAD)) if args.deep: executor.append( SystemCallable( args, 'find {0} -type d -name target | xargs rm -rf'.format( self.fileutils.get_parent_dir_path( ) if args.with_workspace else '.'))) else: executor.append(self.generate_jira_core_sources(args))
def __third_party_licensing(self, args): licensing_maven_executable = MavenCallable(args) licensing_maven_executable.phase('verify').phases.extend( ['license:bom', 'license:download']) licensing_maven_executable.profiles.extend( ['distribution', '!build-source-distribution']) licensing_maven_executable.property('maven.test.skip', 'true') return licensing_maven_executable
def build_runner(args): maven = MavenCallable(args) maven.phase('test') maven.properties.update({ 'maven.test.unit.skip': 'true', 'maven.test.func.skip': 'true', 'maven.test.selenium.skip': 'true' }) return maven
def idea_templates(executor, args, fileutils=FileUtils()): executor.append( lambda logger: logger.info('Setting up code style templates...') or 0) executor.append( MavenCallable(args).project('jira-ide-support').profile('ide-setup'). profile('idea-templates').option('-am').phase('generate-sources')) executor.append(process_project_local_settings(args))
def test_information_about_maven_and_java_is_logged(self): utils = Mock().default_check_output( 'Maven:3.3.2\nJava home:jdk_home\n:Java version 1.2.3_123'.encode( )) maven = MavenCallable(process_utils=utils) maven.require_mvn3() maven.maven_version.command(self.logger) self.assertIn( 'mvn_cmd: "mvn3", mvn_ver: "3.3.2", java_ver: "1.2.3_123", java_home: "jdk_home"', self.logger.info.made_calls[0])
def __call__(self, args, executor): executor.append(ensure_project_was_opened) if args.mvn_clean: executor.append(exit_idea) executor.append(process_clean) if not args.skip_idea_templates: idea_templates(executor, args) if not args.skip_compiler: executor.append(process_compiler_settings(args)) if not args.skip_run_configurations: executor.append(process_run_configs(args)) if not args.skip_target_exclusions: executor.append(process_target_exclusions(args)) if not args.skip_jmake_module: executor.append(process_jmake_module(args)) if not args.skip_dev_profiles: executor.append(process_dev_profiles()) executor.append(MavenCallable().phase('install').skip_tests().project( 'jira-components/jira-api').option('-am')) executor.append(MavenCallable().phase('generate-sources').project( 'jira-components/jira-core'))
def __call__(self, args, executor): maven = MavenCallable(args) try: maven.require_mvn3() maven.project('jira-components/jira-api').option('-am').phase( 'verify').property('performApiCheck') executor.append(maven) except MavenVersionInaccessibleException as e: executor.append( maven.mvn3_inaccessible_msg_callable('api-check', e))
def process_functest(args, executor, fileutils=FileUtils()): #probably this can be improved somehow - ask Min'an. runner_dir = os.sep.join( ['jira-distribution', 'jira-func-tests-runner', 'target']) if not args.quick: maven = MavenCallable() maven.phase('package').project( 'jira-distribution/jira-func-tests-runner').option('-am') maven.profile('distribution') maven.property('maven.test.skip', 'true').property( 'jira.minify.skip', 'true').property('func.mode.plugins') maven.property('reference.plugins').property( 'jira.func.tests.runner.create').property( 'obrRepository', 'NONE') maven.property('skipSources') executor.append(maven.can_run_in_parallel()) unpack_script = os.path.abspath( os.sep.join([ 'jira-distribution', 'jira-func-tests-runner', 'src', 'main', 'dist', 'prepare-runner.sh' ])) executor.append(SystemCallable(args, unpack_script, cwd=runner_dir)) maven = MavenCallable(path=runner_dir) maven.phase('verify').profile('hallelujahClient').property( 'jira.security.disabled', 'true') if fileutils.file_exists(args.replay_file): replay_file = os.path.abspath(args.replay_file) else: replay_file = os.path.abspath( os.sep.join(['target', 'replays', args.replay_file])) maven.property('hallelujah.local.test.list', replay_file) maven.property('system.bamboo.agent.home', os.path.abspath(runner_dir)) executor.append(maven)
def __call__(self, args, executor): maven = MavenCallable(args) maven.project('jira-distribution/jira-standalone-distribution').option( '-am') maven.phase('package').profile('distribution') maven.property('maven.test.unit.skip', 'true').property( 'maven.test.func.skip', 'true').property('maven.test.selenium.skip', 'true') executor.append(maven) executor.append( SystemCallable( args, 'bin/unpackStandalone' + (' run' if args.run else '')))
def __call__(self, args, executor): maven = MavenCallable(args, process_utils=self.process_utils) try: maven.require_mvn3() maven.project('jira-components/jira-core').option('-am').phase( 'process-classes').profile('findbugs') if not args.skip_bp: maven.project( 'jira-components/jira-plugins/jira-bundled-plugins') executor.append(maven) except MavenVersionInaccessibleException as e: executor.append(maven.mvn3_inaccessible_msg_callable( 'findbugs', e))
def general_func_test_runner(args, additional_options=None): if not additional_options: additional_options = {} maven = MavenCallable(args) maven.projects = ['jira-distribution/jira-func-tests-runner'] maven.option('-am') maven.profile('distribution') maven.phase('verify') maven.properties.update(additional_options) maven.property( 'system.bamboo.agent.home', os.path.abspath( os.sep.join( ['jira-distribution', 'jira-func-tests-runner', 'target']))) return maven
def __call__(self, logger): try: MavenCallable().require_mvn3() except MavenVersionInaccessibleException: if os.getenv('JMAKE_STFU') is None: logger.warn('jmake was not able to find your Maven 3. But it tried:') logger.warn(' * M3_HOME is not set,') logger.warn(' * running mvn3 just like that did not work - if you have Maven 3 installed, you might also create a symlink on your path called "mvn3" for jmake to find.') logger.warn(' * running mvn just like that ended up in maven 2 or failed (however it is NOT recommended to put mvn 3 on your path as "mvn")') logger.warn('Download and install latest maven 3.0.x (3.0.5 or later, but not 3.1.y):') logger.warn(' * manually from http://maven.apache.org/download.cgi, then set your M3_HOME acordingly.') return Callable.success
def generate_jira_core_sources_closure(log: Logger): workspace_args = DataBean() workspace_args.with_workspace = args.with_workspace # attempt to compile jira-core in offline mode - assume jira-api is installed. jira_core_gen_src = MavenCallable(workspace_args).phase( 'generate-sources').skip_tests().project( 'jira-components/jira-core').option('-o') jira_core_gen_src(log) if jira_core_gen_src.returncode == Callable.success: return jira_core_gen_src.returncode else: # something failed: maybe jira-api was not actually installed? fix this: log.warn( 'Generate sources failed for jira-core. Will attempt to compile and install jira-api before giving up.' ) jira_api_install = MavenCallable(workspace_args).phase( 'install').skip_tests().project('jira-components/jira-api') jira_api_install(log) if jira_api_install.returncode != Callable.success: return jira_api_install.returncode jira_core_gen_src.returncode = None jira_core_gen_src(log) return jira_core_gen_src.returncode
def __call__(self, args, executor): if self.fileutils.file_exists(dependencies_tmp): executor.append(lambda logger: self.fileutils.remove(dependencies_tmp) or 0) maven = MavenCallable(args, process_utils=self.process_utils) maven.projects = ['jira-components/jira-tests-parent/jira-tests', 'jira-components/jira-tests-parent/jira-tests-unit'] if not args.skip_legacy: maven.project('jira-components/jira-tests-parent/jira-tests-legacy') maven.option('-am') maven.phase('compile' if args.vdep else 'test') maven.property('verifyDependencies').property('jira.minify.skip', 'true').property('performApiCheck').property( 'ajEnforcer') maven.property('maven.test.func.skip', 'true').property('maven.test.selenium.skip', 'true') if not args.skip_bp: report_projects = ['jira-components/jira-tests-parent', 'jira-func-tests', 'jira-components/jira-plugins'] maven.project('jira-components/jira-plugins/jira-bundled-plugins') else: report_projects = ['jira-components/jira-tests-parent', 'jira-func-tests'] maven.project('jira-func-tests') try: maven.require_mvn3().can_run_in_parallel() except MavenVersionInaccessibleException: pass self.surefire.set_roots(report_projects) executor.append(self.surefire.clean_executable()) if args.findbugs: try: executor.append(maven.phase('test').profile('findbugs').require_mvn3()) except MavenVersionInaccessibleException as e: executor.append(maven.mvn3_inaccessible_msg_callable('unit tests with findbugs', e)) else: if args.vdep: executor.append(maven.phase('compile')) else: executor.append(maven.phase('test').option('--fail-at-end')) executor.append_post(self.surefire.report_executable()) executor.append_post(DependenciesReport(args))
def ual_int_func_test_runner(args): maven = MavenCallable(args) maven.projects = [ 'jira-distribution/jira-webapp-dist', 'jira-distribution/jira-integration-tests' ] maven.option('-am') maven.profile('distribution') maven.phase('verify') maven.properties.update({ 'maven.test.unit.skip': 'true', 'jira.security.disabled': 'true', 'java.awt.headless': 'true', 'jira.minify.skip': 'true', 'func.mode.plugins': 'true' }) return maven
def get_values(self): def process_output(myself, log: Logger, line: str, num: int): if '[deprecation]' in line: self.hit( re.sub( r'(.*java:)\[\d+,\d+\] \[deprecation\]( .*)', r'\1\2', re.sub( r'\s*\[WARNING\]\s+', '', line.replace(os.getcwd() + '/', '').replace('[WARNING]', '')))) if self.log.is_trace(): self.add_to_stats(line) return self.verbose or self.log.is_trace() return line.startswith( "[INFO] Building Atlassian") or line.startswith( '[ERROR]') or self.log.is_trace() maven = MavenCallable() maven.phase('clean').phase('test-compile').profile( 'jira-metrics').profile('ondemand') maven.property('jira.exclude.bundled.plugins') maven.option('--no-plugin-updates') if self.log.is_trace(): maven.option('-X') self.log.info( 'Compiling workspace to find deprecated methods usage...') maven.process_output = types.MethodType(process_output, maven) super().pre_files_scan('irrelevant') maven_return_code = self.run_maven(maven) super().post_files_scan('irrelevant') if maven_return_code != MavenCallable.success: raise MavenExecutionException self.log.trace( json.JSONEncoder(indent=True).encode( sorted(self.deprecated_stats.items(), key=operator.itemgetter(1)))) self.log.info('Compilation finished.') return super().get_values() if maven.returncode == 0 else {}
def webdriver_test_runner(args): maven = MavenCallable(args) maven.projects = ['jira-webdriver-tests'] maven.option('-am') maven.profile('jmake-webdriver-tests') maven.phase('test') maven.properties.update({ 'failIfNoTests': 'false', 'maven.test.unit.skip': 'true', 'system.bamboo.agent.home': os.path.abspath( os.sep.join( ['jira-distribution', 'jira-webdriver-tests-runner', 'target'])) }) if args.tests is not None: maven.properties.update({'test': args.tests}) return maven
def __call__(self, args, executor): maven = MavenCallable(args) maven.project('jira-distribution/jira-webdriver-tests-runner').option( '-am') maven.phase('integration-test').profile('distribution') maven.property('maven.test.unit.skip', 'true').property( 'maven.test.func.skip', 'true').property( 'jira.security.disabled', 'true').property('dev.mode.plugins').property( 'jira.functest.single.testclass', 'com.atlassian.jira.webtest.webdriver.qunit.TestQunit' ).property('jira.minify.skip', 'true').property('func.mode.plugins').property( 'java.awt.headless', 'true') self.surefire.set_roots(maven.projects) executor.append(self.surefire.clean_executable()) executor.append(maven) # because the qunit suite contains just the runner it will always be successful, unless the tests # cannot be ran. Thus, the report has to provide exit code (while it should run in post_commands): executor.append(self.surefire.report_executable())
def __call__(self, args, executor): maven = MavenCallable(args) maven.phase('install') maven.property('skipTests', 'true') executor.append(maven)