Example #1
0
                        username='******',
                        password=1234)
    # BR anahtarina sahip statusu To Do olan issuelari ceker
    issues = jira.search_issues(jql_str="project = BR AND status = 'To Do'")
    # BR anahtarina sahip bir proje Bitbucket da varsa bu kismi yapar
    if not bbucket.project(key="BR").get("errors"):
        # Her issue icin Bitbucketda repo olusturup Jirada da bu issueya ait statusu Done yapar
        for issue in issues:
            bbucket.create_repo(project_key="BR",
                                repository=issue.fields.customfield_10001)
            jira.transition_issue(issue=issue, transition="DONE")
    # BR anahtarina sahip bir proje Bitbucketda yoksa bu kismi yapar
    else:
        # To Do statusuna ait tüm issuelar icin yapar
        for issue in issues:
            # BR anahtarina sahip bir sonraki issue icin Bitbucketda aynı projeyi tekrar oluşturmamak adina bu kontrolu yapar
            # BR anahtarina sahip bir proje Bitbucketda yoksa bu kısmı yapar
            if bbucket.project(key="BR").get("errors"):
                bbucket.create_project(key="BR",
                                       name=issue.fields.customfield_10000)
                bbucket.create_repo(project_key="BR",
                                    repository=issue.fields.customfield_10001)
                jira.transition_issue(issue=issue, transition="DONE")
            # BR anahtarına sahip bir proje Bitbucket da varsa bu kısmı yapar
            else:
                bbucket.create_repo(project_key="BR",
                                    repository=issue.fields.customfield_10001)
                jira.transition_issue(issue=issue, transition="DONE")
except Exception as e:
    print(e)
def main():
    parser = create_parser()
    parser_namespace = parser.parse_args(sys.argv[1:])
    bitbucket_url = parser_namespace.bitbucket
    bitbucket_user = parser_namespace.user
    bitbucket_pass = parser_namespace.passwd
    project_model_path = parser_namespace.file

    project_key = ntpath.basename(project_model_path).replace('_meta.yaml', '')

    project_map = yaml_read(project_model_path)

    if project_map['READY']:
        project_map = yaml_read(project_model_path)
        if project_map['RESOURCES'] and project_map['RESOURCES']['bitbucket']:

            project_model_bitbucket = project_map['RESOURCES']['bitbucket']
            project_name = project_model_bitbucket['name']
            project_description = project_model_bitbucket['description']

            bitbucket = Bitbucket(url=bitbucket_url,
                                  username=bitbucket_user,
                                  password=bitbucket_pass)

            bb_projects = bitbucket.project_list(limit=9999)

            if next(
                (i for i in bb_projects if i['key'] == project_key.upper()),
                    None):
                print(f'INFO: BitBucket project {project_key} already exists')
            else:
                bitbucket.create_project(project_key,
                                         project_name,
                                         description=project_description)
                print(f'INFO: BitBucket project {project_key} created')

            for group in project_model_bitbucket['privileges']:

                if 'delete' in project_model_bitbucket['privileges'][group]:
                    bitbucket.project_grant_group_permissions(
                        project_key, f'rb-{project_key}-{group}',
                        'PROJECT_ADMIN')
                    print(
                        f'INFO: rb-{project_key}-{group} PROJECT_ADMIN granted'
                    )

                elif 'write' in project_model_bitbucket['privileges'][group]:
                    bitbucket.project_grant_group_permissions(
                        project_key, f'rb-{project_key}-{group}',
                        'PROJECT_WRITE')
                    print(
                        f'INFO: rb-{project_key}-{group} PROJECT_WRITE granted'
                    )

                elif 'read' in project_model_bitbucket['privileges'][group]:
                    bitbucket.project_grant_group_permissions(
                        project_key, f'rb-{project_key}-{group}',
                        'PROJECT_READ')
                    print(
                        f'INFO: rb-{project_key}-{group} PROJECT_READ granted')

    else:
        print('MAP NOT READY')