Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic Buildkite Pipelines with CUE #21

Closed
jpluscplusm opened this issue Nov 17, 2023 · 0 comments
Closed

Dynamic Buildkite Pipelines with CUE #21

jpluscplusm opened this issue Nov 17, 2023 · 0 comments
Assignees
Labels
content idea Suggestion for a piece of content

Comments

@jpluscplusm
Copy link
Collaborator

Buildkite is a CI SaaS with a (current) focus on bring-your-own-compute.

A recent post on their blog is titled "The power of Dynamic Pipelines", and it explains why they believe using more than static pipelines is a good thing.

However, almost all of the blog post is concerned with the "why" (dynamic pipelines are good) and the "how" (to get started with Buildkite from scratch) - the "what should dynamic pipeline generation look like?" question is left almost untouched.

CUE can help here. It's well situated at exactly the intersection of what Buildkite users need, and what Buildkite themselves are un-opinionated about.

A guide to replacing the blog's (to be very fair to the author!) uncomplicated shell script example with a CUE equivalent that improves on every conceivable axis would be a great cue-by-example guide.

@jpluscplusm jpluscplusm self-assigned this Nov 20, 2023
@jpluscplusm jpluscplusm added the content idea Suggestion for a piece of content label Nov 20, 2023
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 22, 2023
Here's a new piece of content, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

Closes cue-labs#21
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 22, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

Closes cue-labs#21
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 22, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

Closes cue-labs#21
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 22, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

Closes cue-labs#21

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 22, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

This is related to cue-labs#21 but doesn't /close/ it, as that issue tracks a
cue-by-example for Buildkite's "dynamic" pipeline mode, which this guide
doesn't address.

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 23, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

This is related to cue-labs#21 but doesn't /close/ it, as that issue tracks a
cue-by-example for Buildkite's "dynamic" pipeline mode, which this guide
doesn't address.

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 28, 2023
This change adds a guide that takes the reader through the process of
making a static & known-good Buildkite pipeline dynamic.

It uses the steps contained in a Buildkite blog post to assemble the
known-good starting point and place the reader in a state where the
guide can inform them, without having to deal with too many branching
paths and possibilities.

It uses directories and CUE package names that are compatible with the
simpler static pipeline import guide proposed in
cue-labs#23. The two guides haven't been explicitly
designed to work together, apart from those naming concerns - but
nothing else stands out as being obviously incompatible.

Closes cue-labs#21

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 28, 2023
This change adds a guide that takes the reader through the process of
making a static & known-good Buildkite pipeline dynamic.

It uses the steps contained in a Buildkite blog post to assemble the
known-good starting point and place the reader in a state where the
guide can inform them, without having to deal with too many branching
paths and possibilities.

It uses directories and CUE package names that are compatible with the
simpler static pipeline import guide proposed in
cue-labs#23. The two guides haven't been explicitly
designed to work together, apart from those naming concerns - but
nothing else stands out as being obviously incompatible.

Closes cue-labs#21

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 28, 2023
This change adds a guide that takes the reader through the process of
making a static & known-good Buildkite pipeline dynamic.

It uses the steps contained in a Buildkite blog post to assemble the
known-good starting point and place the reader in a state where the
guide can inform them, without having to deal with too many branching
paths and possibilities.

It uses directories and CUE package names that are compatible with the
simpler static pipeline import guide proposed in
cue-labs#23. The two guides haven't been explicitly
designed to work together, apart from those naming concerns - but
nothing else stands out as being obviously incompatible.

Closes cue-labs#21

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 29, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

This is related to cue-labs#21 but doesn't /close/ it, as that issue tracks a
cue-by-example for Buildkite's "dynamic" pipeline mode, which this guide
doesn't address.

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 29, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

This is related to cue-labs#21 but doesn't /close/ it, as that issue tracks a
cue-by-example for Buildkite's "dynamic" pipeline mode, which this guide
doesn't address.

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
jpluscplusm added a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 29, 2023
This change adds a guide that takes the reader through the process of
making a static & known-good Buildkite pipeline dynamic.

It uses the steps contained in a Buildkite blog post to assemble the
known-good starting point and place the reader in a state where the
guide can inform them, without having to deal with too many branching
paths and possibilities.

It uses directories and CUE package names that are compatible with the
simpler static pipeline import guide proposed in
cue-labs#23. The two guides haven't been explicitly
designed to work together, apart from those naming concerns - but
nothing else stands out as being obviously incompatible.

Closes cue-labs#21

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
myitcv pushed a commit that referenced this issue Nov 29, 2023
Here's a new cue-by-example, showing how to manage a set of Buildkite
pipeline files in CUE instead of YAML.

Because Buildkite (in its non-dynamic-pipeline mode) still needs to see
a YAML file serialised in the repo, the guide includes a CUE _tool that
turns the CUE back into YAML on demand.

It also includes a schema for the pipeline's representation, but this
schema is very trivial, and not hugely useful - it could do with
improving. I wasn't able to use the upstream schema
(https://github.com/buildkite/pipeline-schema) because of issues now
tracked as cue-lang/cue#2698 and cue-lang/cue#2699.

This is related to #21 but doesn't /close/ it, as that issue tracks a
cue-by-example for Buildkite's "dynamic" pipeline mode, which this guide
doesn't address.

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
myitcv pushed a commit to jpluscplusm-forks/cue-lang.cue-by-example that referenced this issue Nov 29, 2023
This change adds a guide that takes the reader through the process of
making a static & known-good Buildkite pipeline dynamic.

It uses the steps contained in a Buildkite blog post to assemble the
known-good starting point and place the reader in a state where the
guide can inform them, without having to deal with too many branching
paths and possibilities.

It uses directories and CUE package names that are compatible with the
simpler static pipeline import guide proposed in
cue-labs#23. The two guides haven't been explicitly
designed to work together, apart from those naming concerns - but
nothing else stands out as being obviously incompatible.

Closes cue-labs#21

Signed-off-by: Jonathan Matthews <github@hello.jonathanmatthews.com>
@myitcv myitcv closed this as completed in f13b670 Nov 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
content idea Suggestion for a piece of content
Projects
None yet
Development

No branches or pull requests

1 participant