Dynamic YAML definitions

March 7, 2024

Dynamic YAML definitions

For standalone users, this feature is available from version 2.5.92

In the past, users had to choose either YAML or GUI pipeline configuration for each project, leading to restrictions and challenges for YAML enthusiasts. Now, with the new dynamic definitions, users can freely switch between both options within a single project, providing more flexibility and making it easier to manage their configurations.

With YAML mode enabled in the project, making any changes in the UI simply generated a code snippet that you then had to paste in manually.

New YAML functionality

With this update, each pipeline includes a new YAML tab that seamlessly syncs with any UI modifications you apply. Conversely, changes made within the YAML configuration are instantly reflected in the UI.

New YAML tabNew YAML tab

Every pipeline has an option to select whether to store the YAML configuration in the repository or not. This can be done by indicating the Location in the YAML tab.

When selecting the file's location, you can store it in any other repository (project) you have access to by choosing it from the dropdown menu.

By storing your YAML in the repository, you can also hard-set the branch it should be on, or choose to make it dynamic. If you want to have your configuration file on a fixed branch, Buddy will ignore the refs set in the file itself.

YAML branch choice menuYAML branch choice menu

Dynamic branch

On git push, the pipeline definition switches to the one defined in the branch, pull request (PR), or tag to which the push was made, provided that the push reference matches the pipeline's codescope definition set in YAML.

Example: When the pipeline definition's codescope is set to refs/branches/dev, the dev will switch the pipeline definition to its own once a push to dev is made.

Dynamic mode is only available when YAML is stored in the project's repository.

Autodiscovery

By enabling autodiscovery option in the Project Settings, pipeline definitions will be autodiscovered in the /.buddy/ directory.

If the YAML definition includes multiple branches, Buddy will utilize the definition specific to each branch within its respective branch's codescope.

Adding .fixed to the YAML filename (e.g., pipeline.fixed.yml) instructs Buddy to apply the initial branch's configuration across all branches listed in codescope. The "initial branch" refers to the branch where the definition was first introduced.

Security tip: Autodiscovery allows users with write access to the repository to add new pipelines even when they have no permission to manage pipelines.

Share:

Jarek Dylewski

Jarek Dylewski

Customer Support

A journalist and an SEO specialist trying to find himself in the unforgiving world of coders. Gamer, a non-fiction literature fan and obsessive carnivore. Jarek uses his talents to convert the programming lingo into a cohesive and approachable narration.