jenkins-pipeline-linter-connector
![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/yeshan333.jenkins-pipeline-linter-connector-fork?logo=appveyor&label=Visual%20Studio%20Marketplace%20Version)
This extension validates Jenkinsfile by sending them to the Jenkins Pipeline Linter of a Jenkins server. Also support to review Jenkinsfile with LLMs.
Features
Example Usage
![Example](https://github.com/yeshan333/vscode-jenkins-pipeline-linter-connector/raw/HEAD/images/example.gif)
![Example with syntax error](https://github.com/yeshan333/vscode-jenkins-pipeline-linter-connector/raw/HEAD/images/example_with_syntax_error.gif)
Extension Settings
This extension contributes the following settings:
jenkins.pipeline.linter.connector.url
: is the endpoint at which your Jenkins Server expects the POST request, containing your Jenkinsfile which you want to validate. Typically this points to <your_jenkins_server:port>/pipeline-model-converter/validate
.
jenkins.pipeline.linter.connector.crumbUrl
: has to be specified if your Jenkins Server has CRSF protection enabled. (eg: https://<your-jenkins-server>:<port>/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)
).
jenkins.pipeline.linter.connector.user
: allows you to specify your Jenkins username.
jenkins.pipeline.linter.connector.pass
: allows you to specify your Jenkins password.
jenkins.pipeline.linter.connector.token
: Jenkins user API token.
jenkins.pipeline.linter.onsave
: controls whether the Jenkinsfile is checked immediately after it is saved (default: false).
jenkins.pipeline.linter.checkextensions
: you can control what file can be checked through this configuration. (default: [".jenkinsfile", ".groovy", "Jenkinsfile"]
). It means that the file name being checked must contains one of them.
example settings
Scenario 1: Jenkins does not have API authentication enabled
{
"jenkins.pipeline.linter.connector.url": "https://jenkins.shan333.cn/pipeline-model-converter/validate",
}
Scenario 2: Jenkins has API authentication enabled. Use a password for authentication.
{
"jenkins.pipeline.linter.connector.url": "https://jenkins.shan333.cn/pipeline-model-converter/validate",
"jenkins.pipeline.linter.connector.user": "jenkins_username",
"jenkins.pipeline.linter.connector.pass": "jenkins_password"
}
Scenario 3: Jenkins has API authentication enabled. Use a API token for authentication.
{
"jenkins.pipeline.linter.connector.url": "https://jenkins.shan333.cn/pipeline-model-converter/validate",
"jenkins.pipeline.linter.connector.user": "jenkins_username",
"jenkins.pipeline.linter.connector.token": "user_api_token"
}
Scenario 4: Jenkins has API authentication enabled and CRSF protection enabled.
{
"jenkins.pipeline.linter.connector.url": "https://jenkins.shan333.cn/pipeline-model-converter/validate",
"jenkins.pipeline.linter.connector.user": "jenkins_username",
"jenkins.pipeline.linter.connector.token": "user_api_token",
"jenkins.pipeline.linter.connector.crumbUrl": "https://jenkins.shan333.cn/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)"
}
Enable review with LLM
You can also enable linter with LLMs. We use the free Cloudflare ("赛博佛祖") Workers AI REST API to get reviews of your Jenkinsfile.
![enable review with LLM](https://github.com/yeshan333/vscode-jenkins-pipeline-linter-connector/raw/HEAD/images/validate_with_llm.png)
This is an example configuration to enable this feature:
{
"jenkins.pipeline.linter.connector.llm.enable": true,
"jenkins.pipeline.linter.connector.llm.baseUrl": "https://api.cloudflare.com/client/v4/accounts/<CF_ACCOUNT_ID>/ai/v1",
"jenkins.pipeline.linter.connector.llm.modelName": "@cf/meta/llama-2-7b-chat-fp16",
"jenkins.pipeline.linter.connector.llm.apiKey": "<CF_API_TOKEN>",
}
Acknowledgements