构建 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 {
  ...
}

并且您的管道代码将具有有效语法。