构建 Python 脚本时 Jenkins "unable to resolve class Declarative" 错误
Jenkins "unable to resolve class Declarative" error when building Python script
我开始学习使用 Jenkins 并希望它 运行 成为我的自动 Python 脚本。我按照他们的教程创建了一个名为 Pipeline Test
.
的新项目
我还添加了我想测试的 Python 脚本的 GitHub 存储库 (https://github.com/mateasmario/spam-bot)。
如您所见,我在该存储库中创建了一个 Jenkinsfile
。因为我的脚本名为 spam-bot.py
,所以每次我在 Jenkins 中单击“立即构建”时,我都希望我的 Jenkinsfile 运行 该脚本。这是我的 Jenkinsfile 的内容:
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'python:3.10.1-alpine' } }
stages {
stage('build') {
steps {
sh 'python spam-bot.py'
}
}
}
}
问题是,每当我单击“立即构建”时,我的构建都会失败并且控制台输出以下错误:
Started by user Mario Mateas
Obtained Jenkinsfile from git https://github.com/mateasmario/spam-bot.git
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 1: unable to resolve class Declarative
@ line 1, column 26.
Jenkinsfile (Declarative Pipeline)
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:958)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:554)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:571)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:523)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:334)
at hudson.model.ResourceController.execute(ResourceController.java:99)
at hudson.model.Executor.run(Executor.java:432)
Finished: FAILURE
我在网上查找了这个错误,但没有找到任何有用的信息,所以我决定在这里问一下。
我也没有配置任何 Docker 容器。我需要配置一个吗?我查看了 Jenkins 的 Docker 文档,但没有看到任何有关将 Python 图像(如 Jenkinsfile
开头提到的图像)添加到容器。
您的 Jenkinsfile
第一行包含无效语法,这就是引发错误的原因。假设您打算将第一行作为注释,您可以将管道代码修改为:
// Jenkinsfile (Declarative Pipeline)
pipeline {
...
}
并且您的管道代码将具有有效语法。
我开始学习使用 Jenkins 并希望它 运行 成为我的自动 Python 脚本。我按照他们的教程创建了一个名为 Pipeline Test
.
我还添加了我想测试的 Python 脚本的 GitHub 存储库 (https://github.com/mateasmario/spam-bot)。
如您所见,我在该存储库中创建了一个 Jenkinsfile
。因为我的脚本名为 spam-bot.py
,所以每次我在 Jenkins 中单击“立即构建”时,我都希望我的 Jenkinsfile 运行 该脚本。这是我的 Jenkinsfile 的内容:
Jenkinsfile (Declarative Pipeline)
pipeline {
agent { docker { image 'python:3.10.1-alpine' } }
stages {
stage('build') {
steps {
sh 'python spam-bot.py'
}
}
}
}
问题是,每当我单击“立即构建”时,我的构建都会失败并且控制台输出以下错误:
Started by user Mario Mateas
Obtained Jenkinsfile from git https://github.com/mateasmario/spam-bot.git
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 1: unable to resolve class Declarative
@ line 1, column 26.
Jenkinsfile (Declarative Pipeline)
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:958)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:554)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:571)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:523)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:334)
at hudson.model.ResourceController.execute(ResourceController.java:99)
at hudson.model.Executor.run(Executor.java:432)
Finished: FAILURE
我在网上查找了这个错误,但没有找到任何有用的信息,所以我决定在这里问一下。
我也没有配置任何 Docker 容器。我需要配置一个吗?我查看了 Jenkins 的 Docker 文档,但没有看到任何有关将 Python 图像(如 Jenkinsfile
开头提到的图像)添加到容器。
您的 Jenkinsfile
第一行包含无效语法,这就是引发错误的原因。假设您打算将第一行作为注释,您可以将管道代码修改为:
// Jenkinsfile (Declarative Pipeline)
pipeline {
...
}
并且您的管道代码将具有有效语法。