jenkins - Jenkins:如何静态检查使用共享库的管道?
问题描述
我正在编写Jenkins 管道,但我的开发过程效率极低。对于每次修改,我必须提交并推送我的代码,并手动运行管道。一个简单的拼写错误让我重新做一遍。我的版本控制日志一团糟。
我正在尝试使用Pipeline Linter,但它失败了,因为它无法识别我正在使用的共享库。
这是我的代码的简化版本,我将尝试对其进行 lint。当我从界面运行此代码时,它可以工作:
//importing class MyClass defined in src/com/company/MyClass.groovy
import com.company.MyClass.*
//importing src/com/company/helper/Log.groovy
import com.company.helper.Log;
def call(String env) {
def mud
pipeline {
agent none
stages{
stage('Checkout') {
agent any
steps {
mud = new MyClass(script: this)
}
}
}
}
}
我使用以下命令运行管道 linter:
ssh -p 8222 jenkins declarative-linter < myPipeline.groovy
而且,虽然当我在 Jenkins 中运行管道时它工作正常,但我收到以下 lint 验证错误:
Errors encountered validating Jenkinsfile:
WorkflowScript: 2: unable to resolve class com.company.helper.Log
@ line 2, column 1.
import com.company.helper.Log;
^
WorkflowScript: 25: unable to resolve class MyClass
@ line 25, column 35.
mud = new MyClass(script: this)
如何将管道 linter 与共享库一起使用?
我也欢迎任何帮助简化我的开发过程!
解决方案
我找不到一个好的解决方案,所以我创建了一个管道作业,其中包含来自共享库的所有相关函数。
一旦我有了这个流程,我就可以在不提交任何内容的情况下使用它,直到它工作......
推荐阅读
- python - 移动矩阵的问题
- python - 在 GCP 上构建 Django 项目 Cloud-Build
- c# - 使用 GraphQL.NET 和 ASP.NET Core 2 对字段实施授权
- javascript - 如何在不使用 Javascript 中的内置函数的情况下进行过滤?
- java - 休眠:没有为实体指定标识符
- android - 当用户在 MQTT 中离线时通过 FCM 发送推送通知?
- javascript - 如何通过单击按钮生成包含对象的新变量?
- python - Flask-restful:请求返回错误值
- terraform - Terraform:识别最新/最后创建的资源?
- rest - Show Swagger validation information