CircleCI-Public / circleci-yaml-language-server

The official language server for CircleCI YAML configuration files
Apache License 2.0
20 stars 18 forks source link

CircleCI YAML Language Server

CircleCI GitHub release License

This is CircleCI's YAML Language Server.

The official CircleCI extension for Visual Studio Code is available on the VS Code Marketplace. This extension was developed by the Developer Experience team of CircleCI and it includes two sets of features: the pipeline manager and the config helper.

The CircleCI config helper is based on a Language Server. It provides language support for CircleCI YAML files. Thanks to the new VS Code extension, developers and DevOps engineers have access to direct feedback about the Config file they are editing, through features such as syntax validation and highlighting, rich navigation, on-hover documentation, autocompletion and usage hints.

In our case the Language Server is an implementation of the Language Server Protocol for CircleCI YAML config files that we have open sourced in order to provide more transparency to our community regarding the way the config helper works under the hood and by providing access for our community to take the language server capabilities to the IDE of their liking.

We believe that the CircleCI community is best placed to say what features are truly important or what bugs are the most annoying. We hope that the whole community will contribute to improving this tool by pointing out or addressing issues we might have overlooked. And we hope the value of this language server will be accessible to a great number of CircleCI users regardless of the IDE they choose to use.

The Language Server is implemented in Go 1.19+ and is, at its core, a JSON-RPC server that handles different calls (specified by the LSP spec).

Summary

Features

This project provides in-file assistance to writing, editing and navigating CircleCI Configuration files. It offers:

circleci-vscode-go-to-definition

circleci-vscode-documentation-on-hover

circleci-vscode-syntax-validation

circleci-vscode-usage-warnings

circleci-vscode-autocomplete

Platforms, Deployment and Package Managers

The tool is deployed through GitHub Releases. Green builds on the main branch will publish a new GitHub release. These releases contain binaries for macOS, Linux and Windows.

This is a project in active development, and we target a release frequency of one release per week on average. However, we reserve the right of releasing more or less frequently when necessary.

Contributing

Please feel free to contribute to this project, we update our Hall of fame - CONTRIBUTORS.md with all contributors who helped us fix a bug. You can find all the contribution guidelines and useful information in CONTRIBUTING.md. Development instructions for the CircleCI YAML Language Server can be found in HACKING.md.

Architecture diagram

alt text

Language Server clients

If you which to implement a client for your editor, please take a look at ADD_A_CLIENT.md

Quick links

Social media links

twitter-link

facebook-link

linkedin-link

Help us get the word out! Share our project