Official Terraform Plugin

There are a few Buildkite Terraform providers out there in varying levels of maintenance:


They seem to be pretty much feature complete (at least as far as configuring pipelines), but buggy and lacking in documentation. Any chance of adopting and maintaining one of them as a formal part of the Buildkite product?

We’ve been talking about this internally, and we’d love to do it, but at the minute we don’t have the bandwidth. Would happily work with any maintainers that sprung up though!

I think one of the big hurdles for maintainers is testing. The links I listed include a bunch of acceptance tests that need to talk to a real buildkite server. Moreover, I had to fix a bug this weekend because a new field in the api wasn’t known to the provider.

Have you considered running a buildkite service (or mock service) that community members can test against?

If there were a community supported provider that was clearly ahead of the rest, it would be nice to know that api changes from y’all wouldn’t break it.

(Admittedly, I know almost nothing about Go; it seems to be the ideal would be for the provider to not break if it receives an unknown key)

(My apologies…this got a lot more stream-of-consciousness than I intended)

There is also https://github.com/COzero/terraform-provider-buildkite

Ideally, I think a terraform provider would use our GraphQL API. It’s symmetrical, so you can get back out what you put in, which will solve a lot of the problems. It should be easier to mock for testing too.

I recall someone point one out, I’ll look for it.

Of the three mentioned on this thread, the yougroupteam/terraform-buildkite project is working the best for us so far.

My concern here is that the GraphQL API tokens don’t have granular permissions at this point. Granted, from a security perspective, read_pipelines and write_pipelines are already pretty powerful permissions, but it’s still nice to have granular permissions when possible.

Agreed, although this is something that will be solved in future.

Just FYI COzero is dead, having been name changed, company changed (to EnergyLink) and finally placed into administration + liquidation.

Consider it unsupported.

Eep! Thanks for the heads up.

1 Like

I’m late joining this thread, but I wanted to add in the note for anybody else looking that the saymedia repo seems to no longer be maintained and the yougroupteam project was actually forked off of it.

This is described in the Readme for the yougroupteam repo:

Originally forked from yougroupteam/terraform-buildkite

This provider is originally forked from saymedia/terraform-buildkite . However, since there’s no maintainer from saymedia anymore we have now duplicated the repo instead to ensure contributed changes can be adopted buy the community.

See [Is anyone maintaining this repo? · Issue #25 · saymedia/terraform-buildkite · GitHub] for details.

With that noted, these are the two plugin repos that seem most likely to still be maintained:

1 Like

I see activity on this official buildkite repo now.

Is this planned sometime soon? :smile:

Hey @lymandetl!

Good spotting! Our rough plan at the moment is to work with an author of one of the existing community Terraform providers, adopt their provider (probably by forking it into our GitHub org), give it a once over for obvious defects, polish the README, and add it to the terraform registry.

No current updates on when that will be done though!

Hi folks,

We’ve officially adopted jradtilbrook’s provider and published it to the terraform registery.

We support terraform 0.13 and up, where the required_providers block became available:

terraform {
  required_providers {
    buildkite = {
      source = "buildkite/buildkite"
      version = "0.0.17"
    }
  }
}

provider "buildkite" {
  api_token = "token"
  organization = "slug" # can also be set from env: BUILDKITE_ORGANIZATION

}

The source code is on GitHub and we hope it’s the foundation we need to start supporting more resources. Contributions are welcome! :heart:

2 Likes