Пример #1
0
def create_approval(project_config_file, env):
    env = create_approval_environment_variables(env)
    with open(project_config_file) as json_data_file:
        project_data = load_project_configuration(json_data_file)

        if env["artifact_sha256"] is None:
            src_commit = commit_for_commitish(repo_at(env["repo_path"]),
                                              env["target_src_commit"])
            response = get_artifacts_for_commit(env["host"], env["api_token"],
                                                project_data, src_commit)
            env["artifact_sha256"] = latest_artifact_for_commit(response)
            print(
                f"Found artifact {env['artifact_sha256']} as latest artifact for source commit {env['target_src_commit']}"
            )

        commit_list = list_commits_between(
            repo_at(env["repo_path"]),
            target_commit=env["target_src_commit"],
            base_commit=env["base_src_commit"])

        approval_json = build_approval_json(
            artifact_sha256=env["artifact_sha256"],
            description=env["description"],
            is_approved=env["is_externally_approved"],
            src_commit_list=commit_list)

        url = ApiSchema.url_for_approvals(env["host"], project_data)
        http_post_payload(url, approval_json, env["api_token"])
def create_deployment(project_file):
    # Todo: make this smoother
    set_artifact_sha_env_variable_from_file_or_image()
    payload = create_deployment_payload()

    with open(project_file) as json_data_file:
        project_data = load_project_configuration(json_data_file)
        url = ApiSchema.url_for_deployments(get_host(), project_data)
        http_post_payload(url, payload, get_api_token())
Пример #3
0
def put_pipeline(project_file, env=os.environ):
    print("Ensure Project - loading " + project_file)
    with open(project_file) as json_data_file:
        project_data = load_project_configuration(json_data_file)

        host = env.get('CDB_HOST', CDB_SERVER)
        projects_url = ApiSchema.url_for_owner_projects(host, project_data)

        api_token = env.get('CDB_API_TOKEN', 'NO_API_TOKEN_DEFINED')

        print("Put pipeline")
        create_response = http_put_payload(url=projects_url,
                                           payload=project_data,
                                           api_token=api_token)
Пример #4
0
def create_artifact(api_token, host, project_config_file,
                    sha256, filename, description, git_commit, commit_url, build_url,
                    is_compliant):
    project_data = load_project_configuration(project_config_file)

    create_artifact_payload = {
        "sha256": sha256,
        "filename": filename,
        "description": description,
        "git_commit": git_commit,
        "commit_url": commit_url,
        "build_url": build_url,
        "is_compliant": is_compliant
    }
    url = ApiSchema.url_for_artifacts(host, project_data)
    http_put_payload(url, create_artifact_payload, api_token)
def control_latest_release():
    host = get_host()
    api_token = get_api_token()
    artifact_sha = get_artifact_sha()
    project_config_file = parse_cmd_line()

    with open(project_config_file) as json_data_file:
        project_data = load_project_configuration(json_data_file)
        url = ApiSchema.url_for_release(host, project_data, "latest")
        release = http_get_json(url, api_token)

        if release["target_artifact"] != artifact_sha:
            print(f"INCOMPLIANT: latest release {release['release_number']}")
            print(f"    released sha: {release['target_artifact']} ")
            print(f"    expected sha: {artifact_sha} ")
            sys.exit(1)
        else:
            print(f"COMPLIANT: latest release {release['release_number']}")
            print(f"    released sha: {release['target_artifact']} ")
            print(f"    expected sha: {artifact_sha} ")
Пример #6
0
def create_release(project_config_file):
    env = create_release_environment_variables()
    with open(project_config_file) as json_data_file:
        project_data = load_project_configuration(json_data_file)

        if env["artifact_sha"] is None:
            src_commit = commit_for_commitish(repo_at(env["repo_path"]),
                                              env["target_src_commit"])
            response = get_artifacts_for_commit(env["host"], env["api_token"],
                                                project_data, src_commit)
            env["artifact_sha"] = latest_artifact_for_commit(response)
            print(
                f"Found artifact {env['artifact_sha']} as latest artifact for source commit {env['target_src_commit']}"
            )

        commit_list = list_commits_between(repo_at(env["repo_path"]),
                                           env["target_src_commit"],
                                           env["base_src_commit"])
        release_json = build_release_json(env["artifact_sha"],
                                          env["description"], commit_list)
        url = ApiSchema.url_for_releases(env["host"], project_data)
        http_post_payload(url, release_json, env["api_token"])