Skip to content
This repository was archived by the owner on Sep 2, 2025. It is now read-only.
Kyle T edited this page Aug 15, 2022 · 5 revisions

Frequently Asked Questions

What programing languages are available/supported?

At this time, Javascript and TypeScript are supported. There is an effort to get the library working with the aws/jsii library which would make it interoperable with Java, Python, C# and potentially Go.

This issue is being tracked here

What features of CircleCI config are not supported by this SDK?

The CircleCI Config SDK is nearly feature complete with the CircleCI Config Schema. Conditionals from CircleCI 2.1 Config such as the when step are not yet fully implemented. These features are mostly relevant to the Visual Config Editor, if you are writing your config with Javascript, you should use programatic logic rather than YAML conditionals.

If you discover a component is missing or broken, please open an issue.

Can existing CircleCI config files be parsed?

Yes! Config parsing has been delegated to an external library called the CircleCI-Config-Parser, it is utilized in the Visual Config Editor

Why does my output config look different from a regular CircleCI config?

The CircleCI Config SDK makes a few assumptions that lead to generated output that might look slightly different than you are used to.

The config SDK currently takes a "compilation" philosophy where the generated config is seen as the ephemeral compiled code, not the source. So the appearance of the compiled code is seen as less of a priority as long as the output is accurate and valid. It is possible the generated output could go through a secondary formatting step to resolve some of these differences in the future.

Below are some of the differences you may notice.

  1. Empty objects in the config.

For standardization purposes, the Config SDK assumes all config keys are objects with the potential parameters. This means some commands which can be strings when they have no parameters according to CircleCI YAML schema, are still treated as empty objects.

This leads to a checkout command for instance that looks like this:

- checkout: {}

as opposed to the typical:

- checkout
  1. YAML Anchors.

You may notice that replicated portions of your output config file contain YAML anchors which reduce the repeated code with YAML references. This functionality is the default behavior enabled by the current YAML library used. This has no affect on your code and only increases the efficiency by reducing file size.

Clone this wiki locally