Decouple pipeline name from logical reference (slug)

Currently there’s a tight coupling between the “name” of a pipeline and the “slug” of it.

The name is used mainly for end users - the title of the pipeline page, finding the right pipeline (out of hundreds / thousands of pipelines) etc. Some users might decide to change the name from time to time for their convenience.

The pipeline slug is more coupled to web URL links, and API calls.

Right now - if user decides to change the name - then we must update all of our references to the new slug.

We think it makes sense to decouple it - allow us to change the visual (searchable) name without changing the slug and vice versa.

We have been trying to look into better tracking of actions that happen through our pipelines. For unique identification of the pipeline I think we can use the pipeline ID which I think will never change no matter what we set the name or the slug to. I think in order to be able to rely on the slug on our side, we would need it to be completely unmodifiable, sadly

Hello @petarlishov-fd !

This is the best solution I could come up with ass well. By using the UUID of the pipeline, it should be static and unchanging, unlike the slug. In order to return the UUID, you can use the GraphQL API, by searching your pipelines for the appropriate one:

query GetPipelineUUID {
  organization(slug: "organization-slug") {
    pipelines(first: 500, search: "part of slug") {
      edges {
        node {
          slug
          uuid
        }
      }
    }
  }
}

Then you can use that UUID in the following to get all the information about that pipeline:

query GetPipelineInfo {
  pipeline(uuid:"pipeline-uuid") {
    slug
    uuid
  }
}

Have a great day!