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 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 __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 define_parser(self, parser): parser.add_argument( '-t', '--traceback', type=int, default=6, help= 'Number of tests (including the failed one) in the run batch (for debugging tests that cause ' 'corruption to instance state).', dest='traceback') parser.add_argument('-n', '--build-number', type=int, default=0, help='Build number, or 0 for latest', dest='build_number') parser.add_argument('type', choices=['func', 'wd'], default='func', help='webdriver or func tests') self.sample_usage( parser, 'Find out about failures on latest JBAC func/webdriver test build:', ['./jmake ci investigate [func wd]']) self.sample_usage( parser, 'Find out about failures on specific build number on JBAC:', ['./jmake ci investigate [func wd] --build-number 1234']) self.sample_usage(parser, 'Replay the failures locally (see more help):', ['./jmake ci replay --help']) MavenCallable.add_maven_switches(parser)
def define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('-nobp', '--skip_bundled_plugins', action='store_true', help='checking bundled plugins will be skipped.', dest='skip_bp')
def define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument( '-pc', '--pretty-charts', action='store_true', help='installs those pretty charts your boss likes.')
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 define_parser(self, parser): parser.add_argument( 'replay_file', type=str, metavar='replay-file', help= 'Replay file produced with jmake CI investigate, or absolute path to a custom file.' ) parser.add_argument('--build-as-func', action='store_true', help='Force run as func test', dest='force_func') parser.add_argument('--build-as-wd', action='store_true', help='Force run as wd test', dest='force_wd') parser.add_argument( '-q', '--quick', action='store_true', help='Do not compile the tests - attempt to run only', dest='quick') self.sample_usage( parser, 'Replay a test batch locally using files produced by "ci investigate" (using autocomplete):', ['./jmake ci replay [tab]']) self.sample_usage( parser, 'Replay a custom prepared batch as func (webdriver) in /tmp/mybatch:', ['./jmake ci replay --run-as-func (--run-as-wd) /tmp/mybatch']) MavenCallable.add_maven_switches(parser) parser.autocomplete_contributor = lambda: os.listdir( os.sep.join(['target', 'replays']))
def define_parser(self, parser): parser.add_argument('-bf', '--func-batch-number', type=int, default=20, help='Number of batches', dest='func_batches') MavenCallable.add_maven_switches(parser)
def define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('template', help='template you need to pick.', choices=[ 'great-success', 'morale-booster', 'five-years-from-now-plan', 'health-and-safety' ])
def define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('room', help='the room to book.') parser.add_argument('from', help='start time.') parser.add_argument('till', help='finish time. obviously it will take longer so this will add extra 20 minutes') parser.add_argument('-f', '--force', action='store_true', help='cancels existing appointments in the conf room selected.')
def define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('deploy_host', help='host to deploy the fireball to') parser.add_argument('-r', '--resolve-artifacts', help='the deploying script will attempt to build your ondemand webapp ' 'in offline mode, but you local repo might not have some artifacts, like the scala maven plugin; ' 'if you need to run this option your need to run it once - if the deployment script fails on missing artifacts.', action='store_true', dest='resolve_artifacts')
def define_parser(self, parser): parser.add_argument('job_name', nargs='+', help='Job names to run') parser.add_argument('-bf', '--func-batch-number', type=int, default=20, help='Total number of func batches', dest='func_batches') MavenCallable.add_maven_switches(parser)
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 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 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 define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('-fb', '--findbugs', action='store_true', help='include findbugs check (requires maven 3).') parser.add_argument('-vd', '--verify-deps-only', action='store_true', help='only verify dependencies, without running tests.', dest='vdep') parser.add_argument('--skip-bundled-plugins', action='store_true', help='skips unit tests from bundled plugins.', dest='skip_bp') parser.add_argument('--skip-legacy-tests', action='store_true', help='skips legacy (integration) unit tests.', dest='skip_legacy')
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 define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('room', help='the room to book.') parser.add_argument('from', help='start time.') parser.add_argument( 'till', help= 'finish time. obviously it will take longer so this will add extra 20 minutes' ) parser.add_argument( '-f', '--force', action='store_true', help='cancels existing appointments in the conf room selected.')
def define_parser(self, parser): parser.add_argument('replay_file', type=str, metavar='replay-file', help='Replay file produced with jmake CI investigate, or absolute path to a custom file.') parser.add_argument('--build-as-func', action='store_true', help='Force run as func test', dest='force_func') parser.add_argument('--build-as-wd', action='store_true', help='Force run as wd test', dest='force_wd') parser.add_argument('-q', '--quick', action='store_true', help='Do not compile the tests - attempt to run only', dest='quick') self.sample_usage(parser, 'Replay a test batch locally using files produced by "ci investigate" (using autocomplete):', ['./jmake ci replay [tab]']) self.sample_usage(parser, 'Replay a custom prepared batch as func (webdriver) in /tmp/mybatch:', ['./jmake ci replay --run-as-func (--run-as-wd) /tmp/mybatch']) MavenCallable.add_maven_switches(parser) parser.autocomplete_contributor = lambda : os.listdir(os.sep.join(['target', 'replays']))
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 __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 define_parser(self, parser): parser.add_argument('-t', '--traceback', type=int, default=6, help='Number of tests (including the failed one) in the run batch (for debugging tests that cause ' 'corruption to instance state).', dest='traceback') parser.add_argument('-n', '--build-number', type=int, default=0, help='Build number, or 0 for latest', dest='build_number') parser.add_argument('type', choices=['func', 'wd'], default='func', help='webdriver or func tests') self.sample_usage(parser, 'Find out about failures on latest JBAC func/webdriver test build:', ['./jmake ci investigate [func wd]']) self.sample_usage(parser, 'Find out about failures on specific build number on JBAC:', ['./jmake ci investigate [func wd] --build-number 1234']) self.sample_usage(parser, 'Replay the failures locally (see more help):', ['./jmake ci replay --help']) MavenCallable.add_maven_switches(parser)
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 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 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 define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument( "--skip-idea-templates", action="store_true", help="installs the code style and comment " "templates into your IDEA config directory (global).", dest="skip_idea_templates", ) parser.add_argument( "--skip-compiler", action="store_true", help="updates IDEA compiler settings.", dest="skip_compiler" ) parser.add_argument( "--skip-run-configurations", action="store_true", help="injects JIRA run configurations " "into your workspace.", dest="skip_run_configurations", ) parser.add_argument( "--skip-target-exclusions", action="store_true", help="excludes targets from ondemand and distribution projects ", dest="skip_target_exclusions", ) parser.add_argument( "--skip-jmake-module", action="store_true", help="sets up jmake development module.", dest="skip_jmake_module", ) parser.add_argument( "--skip-dev-profiles", action="store_true", help="enables development profiles in IDEA.", dest="skip_dev_profiles", ) parser.add_argument( "-f", "--force", action="store_true", help="jmake will not blindly rewrite stuff " "in your workspace, unless you really want to.", dest="force", )
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) 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): 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 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 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 __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 __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 __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 define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument( '--skip-idea-templates', action='store_true', help='installs the code style and comment ' 'templates into your IDEA config directory (global).', dest='skip_idea_templates') parser.add_argument('--skip-compiler', action='store_true', help='updates IDEA compiler settings.', dest='skip_compiler') parser.add_argument('--skip-run-configurations', action='store_true', help='injects JIRA run configurations ' 'into your workspace.', dest='skip_run_configurations') parser.add_argument( '--skip-target-exclusions', action='store_true', help='excludes targets from ondemand and distribution projects ', dest='skip_target_exclusions') parser.add_argument('--skip-jmake-module', action='store_true', help='sets up jmake development module.', dest='skip_jmake_module') parser.add_argument('--skip-dev-profiles', action='store_true', help='enables development profiles in IDEA.', dest='skip_dev_profiles') parser.add_argument('-f', '--force', action='store_true', help='jmake will not blindly rewrite stuff ' 'in your workspace, unless you really want to.', dest='force')
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 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, 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): 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.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 define_parser(self, parser): MavenCallable.add_maven_switches(parser)
def __call__(self, args, executor): maven = MavenCallable(args) maven.phase('install') maven.property('skipTests', 'true') executor.append(maven)
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 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 define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('template', help='template you need to pick.', choices=['great-success', 'morale-booster', 'five-years-from-now-plan', 'health-and-safety'])
def define_parser(self, parser): parser.add_argument('-p', '--jira-port', type=int, default=DEFAULT_HTTP_PORT, help='The tomcat port for JIRA', dest='port') parser.add_argument('-sp', '--jira-shutdown-port', default='auto', help='The tomcat shutdown port for JIRA (default is "auto" and will be scanned for, starting from %s)' % DEFAULT_SHUTDOWN_PORT, dest='sh_port') parser.add_argument('-j', '--jira-home', default=WorkspaceLayout.JIRA_HOME_DEFAULT_MARKER, help='JIRA home directory', dest='jira_home') parser.add_argument('-c', '--jira-context', default='/jira', help='JIRA web application context', dest='jira_context') parser.add_argument('-w', '--jira-webapp', default=WorkspaceLayout.JIRA_WEBAPP, help='JIRA web application directory', dest='jira_webapp_dir') parser.add_argument('-d', '--tomcat-dir', default=WorkspaceLayout.TOMCAT_DOWNLOAD, help='Directory where tomcat will be downloaded', dest='tomcat_dir') parser.add_argument('-v', '--tomcat-version', default=WorkspaceBuilder.TOMCAT7, choices=[WorkspaceBuilder.TOMCAT6, WorkspaceBuilder.TOMCAT7], help='Version of tomcat to start', dest='tomcat_version') parser.add_argument('-bp', '--bundled-plugins', action='store_true', help='If this flag is set bundled plugins will be added to jira exploded directory and used', dest='bundled_plugins') parser.add_argument('-bw', '--build-war', action='store_true', help='If this flag is set jira.war will be produced otherwise only exploded directory is assembled', dest='build_war') parser.add_argument('-ws', '--with-workspace', action='store_true', help='If this flag is set - build in workspace mode. ' 'Maven will be run in parent of jira directory. ' 'It is assumed there is some pom.xml there.', dest='with_workspace') parser.add_argument('-as', '--attach-sources', action='store_true', help='If this flag is set build will generate sources jar', dest='attach_sources') parser.add_argument('-jr', '--jrebel', action='store_true', help='If this flag is set tomcat will be started with jrebel agent', dest='jrebel') parser.add_argument('-rp', '--ref-plugin', action='store_true', help='If this flag is set reference plugins will be deployed with JIRA', dest='ref_plugins') parser.add_argument('-tp', '--third-party-licensing', action='store_true', help='If this flag is set, the LGPL list in the about page will be created', dest='third_party_licensing') parser.add_argument('-in', '--instance-name', help='this will name your instance, which means you will be able to ' 'run and maintain multiple ones on different ports', dest='instance_name', default='work') parser.add_argument('control', choices=['shutdown', 'restart', 'quickstart', ''], default='', nargs='?', help='Controls the instance:\n' + 'shutdown shuts the running instance, respects instance names.' 'restart restarts the running instance.' + 'quickstart starts the instance without building it.') parser.add_argument('--override-dev-mode', dest='override_dev_mode', action='store_true', help='JIRA will be started in dev mode by default. this overrides the dev_mode setting.') parser.add_argument('-J', dest='extra_jvm_flags', action='append', help='Pass flag directly to the tomcat JVM. ' + 'Flags are appended to the end of other JVM args, so you can (for example) ' 'override memory settings with -J-Xmx2g .') parser.add_argument('--max-perm-size', dest='max_perm_size', type=str, default='384m', help='Amount of PermGen memory for the tomcat process') parser.add_argument('--xmx', dest='xmx', type=str, default='1024m', help='Maximum memory setting.') parser.add_argument('--plugin-resources', dest='plugin_resources', type=str, default='', help='Add all resource sub-folders for the plugin to resources scanned for changes by JIRA') parser.add_argument('--disable-plugin-resources', dest='disable_plugin_resources', action='store_true', help='Do not use reloadable plugin resources (good for standalone-like testing)') parser.add_argument('--enable-mail', dest='enable_mail', action='store_true', help='Start JIRA with the mail handlers enabled even if in dev mode.') parser.add_argument('-sh', '--setup-home', dest='setup_home', action='store_true', help='Setup JIRA home directory so you can directly login as admin:admin. ' 'If current JIRA home directory is not empty this parameter has no effect') parser.add_argument('--postgres', dest='postgres', action='store_true', help='Sets up JIRA with local postgresql db. See ./jmake postgres --help.') parser.add_argument('--mysql', dest='mysql', action='store_true', help='Sets up JIRA with local mysql db. See ./jmake mysql --help.') parser.add_argument('--ssl', dest='ssl', action='store_true', help='Sets up JIRA with ssl. You also need a key produced with java keytool. Bother lukasz w. to ' 'add more how-to here.') self.sample_usage(parser, 'To pass more than one argument with -J use:', [ './jmake run -J-Dfoo=bar -J-Dfee=baz', './jmake run -J "-Dfoo=bar -Dfee=baz"']) self.sample_usage(parser, 'To skip the setup steps on clean jirahome using hsqldb (will not work with real db):', [ './jmake run --setup-home', './jmake debug --setup-home' ]) MavenCallable.add_maven_switches(parser)
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 define_parser(self, parser): parser.add_argument('-t', '--tests', help='Run only given webdriver tests', dest='tests') MavenCallable.add_maven_switches(parser)
def define_parser(self, parser): MavenCallable.add_maven_switches(parser) parser.add_argument('-r', '--run', action='store_true', help='runs the unpacked JIRA package.')
def run_maven(self, maven: MavenCallable): self.maven_runs.append(maven) maven.returncode = self.return_code return self.return_code
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 define_parser(self, parser): parser.add_argument('test_class', nargs='+', help='Test class to run') MavenCallable.add_maven_switches(parser)
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())