Esempio n. 1
0
    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
        ]
Esempio n. 2
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())
Esempio n. 3
0
    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))
Esempio n. 4
0
    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
Esempio n. 5
0
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
Esempio n. 6
0
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))
Esempio n. 7
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])
Esempio n. 8
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'))
Esempio n. 9
0
    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))
Esempio n. 10
0
    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)
Esempio n. 11
0
    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 '')))
Esempio n. 12
0
 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))
Esempio n. 13
0
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
Esempio n. 14
0
    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
Esempio n. 15
0
        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
Esempio n. 16
0
    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))
Esempio n. 17
0
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
Esempio n. 18
0
    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 {}
Esempio n. 19
0
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
Esempio n. 20
0
    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())
Esempio n. 21
0
 def __call__(self, args, executor):
     maven = MavenCallable(args)
     maven.phase('install')
     maven.property('skipTests', 'true')
     executor.append(maven)