microsoft / azure-pipelines-vscode Goto Github PK
View Code? Open in Web Editor NEWVS Code extension for working with Azure Pipelines YAML files
License: MIT License
VS Code extension for working with Azure Pipelines YAML files
License: MIT License
Connections are dynamically added per account. When selecting one in YAML, show the user autocomplete with their specific connections loaded from the server.
The intelisense doesn't seem to be functioning when a file has not yet been saved
Workaround:
intelissense now works
The Docker@1 task has an incorrect enum. It's using the long name of each option, not the actual command. I suspect (without looking) that all enum generation is broken this way.
Would be nice to have the agent.*, build.*, and system.* series as suggestions in appropriate places.
To work around bugs in the language server, the schema currently allows both 'jobs' and 'steps' at the root. These should be mutually exclusive.
Caused lost intellisense at least for task name when added. Previous schema:
"templateConditionalStepInsertExpression": {
"type": "object",
"patternProperties": {
"^\${{.*}}$": {
"type": "array",
"items": {
"$ref": "#/definitions/step"
}
}
},
"minProperties": 1,
"maxProperties": 1
}
We can add uniqueItems constraints on arrays such as variables. May need to get a bit more crafty on phases, since it's an object property that has to be unique.
For common tasks, offer a quick way to insert the task and its most common inputs.
Use App Insights or some other built in mechanism to see extension install counts.
https://medium.com/@almenon214/adding-telemetry-to-your-vscode-extension-f3d52d2e573c
We need to support multiple schemas. For instance, when YAML ships in on-prem, that version will be locked, but the service will continue to iterate. We'll need to package a snapshot of each static schema into the extension. (There's only one right now, the service.)
When a workspace has no associated schema, prefer the latest. Give the user a gesture, such as a command in the command palette, to change the association. (To investigate: can we inject a menu in the bottom status bar, alongside the language ID/line endings/encoding menus?)
One of the options - likely the most common - will be a schema from the server/service. The user can specify the Azure DevOps organization (or, eventually, the Azure DevOps Server instance) to use, log into it (using Azure Account if we can), and we'll grab the schema from a known endpoint. This will include the latest core schema, all custom tasks, etc.
We should cache what we retrieve from the server. We'll need to identify a cadence for refreshing it, since it does change periodically. I propose no more often than once a day, with a gesture to go pull a fresh copy as needed.
Telemetry: it would be nice to understand the % of users who keep the default (no association), how many pick a specific static schema, and how many switch to server schema. (We don't need to collect any identifying information about which server or anything, just how many switch to that feature.)
Show required inputs, misc other details in the description, and links to more docs (where applicable).
They have already been copied in, we need to run them.
resources:
containers:
- container: ubuntu14
image: ubuntu:14.04
jobs:
- job: build_agent
pool:
vmImage: ubuntu-1604
steps:
- checkout: self
- script: './dev.sh layout'
workingDirectory: src
- script: './dev.sh package'
workingDirectory: src
- task: PublishBuildArtifacts@1
inputs:
ArtifactName: agent
PathtoPublish: _package
- job: test_agent
pool:
name: default
container: ubuntu16
See json-schema-org/json-schema-spec#180 (comment) -- this might match our semantics a little better.
There is a README line that says "Currently this library uses libsecret so you may need to install it before running npm install."
Does this mean any machine that uses code that uses their lib on linux needs this installed? If so, seems problematic.
The bulk of the schema is hand-generated, and we use yaml-schema-service / generate-yaml-from-json to insert tasks into it. Ideally the base schema would be a templatized file independent of the code, and we would use a simple token replacement to insert the task parts.
Macros are string replacements using $( )
Object expressions use the form $[ ]
Right now we activate on *, which is always.
What we want is to activate on language or onCommand:
https://code.visualstudio.com/docs/extensionAPI/activation-events#_activationeventsoncommand
We won't package it with the extension.
Cancel and timeout fields go to job?
Add parallel under strategy
When the language server checks each entry for anyOf and none match, then it chooses an arbitrary branch to use for reporting errors. This can mean that if you mess up one property name, suddenly all your previously-correct properties are reported as not matching.
Using the attached schema, the attached .yml should validate. At the root of the schema, it should match "#/definitions/jobsAtRoot" because of the jobs
keyword. It fails to match and VS Code complains that jobs
is unexpected.
If I temporarily remove both "#/definitions/jobAtRoot" and "#/definitions/phaseAtRoot", it validates. Also if I remove the resources
keyword, it validates.
Ideally we would generate the extension's schema from the server-side objects.
Configuring GitLens was working and now it seems to require configuring in the workspace instead of the extension. We would prefer to configure it in the extension so we don't have to force the user to do it.
We were looking into this because GitLens has over 8.5 million installs so it's likely our users will be using it.
There's a preset list of task identifiers. In reality, the task name can be practically anything since tasks can be created and installed by anyone, not just Microsoft.
When you add an env:
expression, those variables become available for use in scripts. We need to recognize those and allow them for autocomplete.
Even more interesting: a ##vso command can write a new output variable. That variable is available in downstream steps.
In a bash
block, we should switch to syntax highlighting Bash. Similar for the other script languages.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.