VS Code extension for working with Azure Pipelines YAML files
Перейти к файлу
Winston Liu e80969f8b2
Support untrusted workspaces
We do not perform any code execution, only parsing;
thus, we should be safe to run in any context.
2021-06-10 21:04:50 -04:00
.azure-pipelines Bump lodash from 4.17.15 to 4.17.21 in /.azure-pipelines/github-release 2021-05-07 22:05:20 +00:00
.github/workflows Fixed token, area label name 2021-05-28 13:04:18 +03:00
.vscode Fix paths 2021-01-31 19:54:35 -05:00
assets add Pipelines icon 2018-08-14 09:11:22 -04:00
examples schema bump to 174 (#343) 2020-08-18 09:55:54 -04:00
resources Added gif for configure-pipeline (#255) 2019-09-06 17:41:10 +05:30
src Webpack the server so it runs in release envs 2021-02-06 14:37:33 -05:00
syntaxes minor comment 2018-08-06 14:40:53 -04:00
tools/extract-yaml-testcases WS-2019-0032 2019-08-19 09:58:32 -04:00
.gitattributes generated extension using yo code 2018-08-01 11:00:40 -04:00
.gitignore Update commands for webpack 2021-01-29 10:42:04 -05:00
.vscodeignore Exclude sourcemaps 2021-02-12 23:23:56 -05:00
CHANGELOG.md Add changelog 2021-06-10 20:21:19 -04:00
CONTRIBUTING.md split README and CONTRIBUTING 2018-08-09 11:08:26 -04:00
LICENSE Initial commit 2018-07-31 11:39:51 -07:00
README.md [BREAKING CHANGE] Standardize configuration namespace (#376) 2021-01-21 08:49:20 -05:00
RELEASE.md simplify release instructions 2018-11-26 14:48:40 -05:00
copyStaticFiles.js Fix paths 2021-01-31 19:54:35 -05:00
language-configuration.json First pass. 2018-08-06 10:36:07 -04:00
package-lock.json Add missing package-lock.json change 2021-06-10 20:20:02 -04:00
package.json Support untrusted workspaces 2021-06-10 21:04:50 -04:00
service-schema.json Get ready for 1.182.0 (#375) 2021-01-20 13:02:05 -05:00
tsconfig.json WIP: Migrate to new @azure/arm-* packages 2021-01-25 23:36:42 -05:00
tslint.json generated extension using yo code 2018-08-01 11:00:40 -04:00
webpack.config.js Webpack the server so it runs in release envs 2021-02-06 14:37:33 -05:00

README.md

Build Status

Azure Pipelines for VS Code

Get it on the VS Code Marketplace!

This VS Code extension adds syntax highlighting and autocompletion for Azure Pipelines YAML to VS Code. It also helps you set up continuous build and deployment for Azure WebApps without leaving VS Code.

Validation

Basic YAML validation is built in to VS Code, but now you can have syntax highlighting that's aware of the Pipelines YAML schema. This means that you get red squigglies if you saytasks:where you meanttask:. IntelliSense is also schema-aware. Wherever you are in the file, press Ctrl-Space to see what options you have at that point.

By default, the extension will highlight known Azure Pipelines files in the root of your workspace. You can change the language mode at the lower right to work with one file at a time. Click the language picker, then choose "Azure Pipelines". If you have files which should always use this extension, set your user or workspace settings to match those file paths with this extension. For example:

{
    "files.associations": {
        "**/ci/*.yml": "azure-pipelines"
    }
}

Specific schema

Out of the box, the extension has a generic schema file that includes only in-box tasks. You probably have custom tasks installed in your organization. To teach the extension about those, grab a copy of your schema and tell the extension where to find it.

  1. Visit https://dev.azure.com/YOU-ORG-HERE/_apis/distributedtask/yamlschema and save the output as my-schema.json.
  2. Edit your workspace's settings.json to include this:
{
  "azure-pipelines.customSchemaFile": "./path/to/my-schema.json"
}
  1. Restart VS Code. The extension will now validate against your schema. It'll give you autocompletes for your custom tasks.

Document formatting

Since this extension defines a new file type ("azure-pipelines"), any YAML formatter you've installed no longer applies to pipelines documents. Hat tip to @mgexm and @dotnetcanuck for sharing how they restored this functionality. We'll demonstrate with the Prettier VS Code extension:

Add this to your settings.json:

"[azure-pipelines]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
},

Both format on save and the Format document command should now work!

Pipeline configuration

Configure Pipeline Demo

To set up a pipeline, choose Azure Pipelines: Configure Pipeline from the command palette (Ctrl/Cmd + Shift + P) or right-click in the file explorer. The guided workflow will generate a starter YAML file defining the build and deploy process.

You can customize the pipeline using all the features offered by Azure Pipelines..

Once the setup is completed, an automatic CI/CD trigger will fire for every code push. To set this up, the extension will ask for a GitHub PAT with repo and admin:repo_hook scope.

GitHub PAT scope

Telemetry

VS Code collects usage data and sends it to Microsoft to help improve our products and services. Read our privacy statement to learn more. If you dont wish to send usage data to Microsoft, you can set the telemetry.enableTelemetry setting to false. Learn more in our FAQ.

Troubleshooting failures

  • Selected workspace is not a Git repository: You can configure a pipeline for a Git repository backed by GitHub or Azure Repos. Initialize your workspace as a Git repo, commit your files, and add a remote to GitHub or Azure Repos. Run the following commands to configure git repository:

    git init

    git add *

    git commit -m <commit-message>

    git remote add <remote-name> <remote-url>

  • The current branch doesn't have a tracking branch, and the selected repository has no remotes: You can configure a pipeline for a Git repository backed by GitHub or Azure Repos. To add a new remote Git repository, run git remote add <remote-name> <remote-url>

  • Failed to determine Azure Repo details from remote url: If you're configuring a pipeline for a Git repository backed by Azure Repos, ensure that it has a remote pointing to a valid Azure Repos Git repo URL.

Extension Development

If you are only working on the extension (i.e. syntax highlighting, configure pipeline, and the language client):

  • Run npm install to install all necessary dependencies
  • Run npm run watch to automatically rebuild the extension whenever you make changes
  • Run the "Extension" debug configuration to launch a VS Code window using your modified version of the extension

If you are also working on the language server:

  • Follow the first two steps above
  • Clone the azure-pipelines-language-server repository alongside this repository
  • Run npm link ../azure-pipelines-language-server/language-server
  • Follow the instructions in the language server README to link the language service to the language server
  • Add the azure-pipelines-language-server folder to your VS Code workspace
  • Run the "Launch Extension & Attach to Server" debug configuration
    • Note: In order to attach to the server, the extension must be activated (in other words, make sure you are editing an Azure Pipelines file)
    • In case the attach request timeouts before the server can start, wait for it to start and then run the "Attach to Server" debug configuration

Contributing

See CONTRIBUTING.md if you want to jump in!