buildkite / feedback

Got feedback? Please let us know!
https://buildkite.com
25 stars 24 forks source link

Feature: Build Variables UI #353

Closed nadenf closed 6 years ago

nadenf commented 6 years ago

This is one of the best features of Jenkins IMHO and a large feature request.

Imagine you have a "Deploy My App" pipeline and when that pipeline is run you want the user to:

(1) Pick from a list of available app versions (this could come from Git tags or from existing Buildkite builds). So the request is that when a build is triggered a popup would appear with a dynamically populated dropdown of available app builds.

(2) Pick from a list of predetermined environments e.g. Dev, Test Stag, Prod. The user would be able to select from multiple environments (using a multiselect) and the values would be prepopulated within Pipeline Settings.

(3) Upload a file which will be made available as part of the deploy process.

lox commented 6 years ago

Thanks @baank! Lots of folks do this in Buildkite with a pipeline per deployment environment and then triggering asynchronous builds in those pipelines.

For instance, our agent releases to Experimental, Beta and Stable. You can see the different pipeline files in https://github.com/buildkite/agent/tree/master/.buildkite. We then have a series of block steps that can be used to deploy to those stages:

image

We try and keep things as simple building blocks vs imposing structures like environments or specific constructs around deployments. It means folks can fit the tool to how they do these things!

nadenf commented 6 years ago

Actually it's something different.

(1) The UI is not for specific build parameters e.g. environment or build. It's generic. So I could have a build variable e.g. "FRUIT_TYPE" and you could specify the user pick from Orange, Apple etc. The choice that the user made is then mapped back to an environment variable you can use in your build.

(2) This feature is not for the person building the pipeline. It's for the person running the pipeline. In most enterprises these are two different people e.g. engineering + testing / engineering + operations. And so having an easy/safe way for Operations to deploy to Production is really important.

This screenshot image is what Jenkins can do: https://stackoverflow.com/questions/26921171/jenkins-is-this-possible-have-more-than-one-build-button-for-a-parameter-base

lox commented 6 years ago

Ah right, apologies I misunderstood!

We support block steps with select inputs (https://buildkite.com/docs/pipelines/block-step#select-input-attributes) that you could use for this. If you had a step that dynamically uploaded a block step you could populate it with whatever you wanted. The selected value is then available to later steps as meta-data.

nadenf commented 6 years ago

Completely missed that page. I think we can safely close this :)