Feature parity for pipeline creation between GraphQL and REST APIs

As it currently stands, if you wish to create a new pipeline programmatically you must make two calls: one to the REST API and another to the GraphQL API. The reason for this is that there is no feature parity between the two.

In previous conversations, it sounded like the intent was to push more towards using the GraphQL API (which I support). In that case, I wanted to enumerate here the request to add support to the PipelineCreateInput and PipelineUpdateInput types the following REST API options:

{
  branch_configuration: "",
  skip_queued_branch_builds: true,
  skip_queued_branch_builds_filter: "",
  cancel_running_branch_builds: true,
  cancel_running_branch_builds_filter: "",
  provider_settings: {
    trigger_mode: "",
    build_pull_requests: true,
    build_pull_request_forks: true,
    pull_request_branch_filter_enabled: false,
    skip_pull_request_builds_for_existing_commits: true,
    publish_commit_status: true,
    build_tags: false,
    repository: "",
    filter_enabled: true,
    filter_condition: "",
  }
}

If these these capabilities do exist, I have not been able to find them in the Schema as outlined on https://graphql.buildkite.com/explorer.

Much appreciated, we’ll see what we can do!

@tom :wave: I’m keen to get this sorted out for you. I spent some time today adding support for some of the fields.

This is now live:

query {
  pipeline(slug: "mars-investigations/the-bus-mystery") {
    # skip_queued_branch_builds
    skipIntermediateBuilds

    # skip_queued_branch_builds_filter
    skipIntermediateBuildsBranchFilter

    # cancel_running_branch_builds
    cancelIntermediateBuilds

    # cancel_running_branch_builds_filter
    cancelIntermediateBuildsBranchFilter
  }
}

And PipelineCreate/UpdateInput has gained those fields for use in mutations. I renamed them to align with what they’re called in the UI here:

Some of the other provider settings are a little more complex (since GraphQL types system is more strict than the REST API).

What are the minimum ones you need added so you can drop usage of the REST API entirely?

Unfortunately we use all of the provider settings I mentioned in my first message.