groovy 如何在jenkisfile中使用import语句

voj3qocg  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(431)

我正在运行一个groovy脚本,它需要访问两个模块jeninks.model和hudson.model。
我试着在我的Jenkinsfile中通过import语句导入这两个,但问题仍然存在。
错误:groovy.lang。缺少属性异常:无此属性:为类构建:在groovy.lang上绑定。
有什么解决办法吗?
当我使用带有Execute System Groovy的自由式作业时,脚本运行良好。

import jenkins.model.*
import hudson.model.*

pipeline{
    agent any 
    stages{
        stage('py version'){
            steps{
                bat 'python --version'
            }
        }
        stage('get jobs'){
            get_job()
        }
    }
}

def get_job(){

    def cutOfDate = System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 2

    def filename = build.workspace.toString() + "/jobs_lists.txt"
    targetFile = new File(filename).write("")
    targetFile = new File(filename).append("<table><tr><th>Job Name</th><th>Last Build on</th><th>Keep</th><th>username</th></tr>")
    println "Cut of Date: " + cutOfDate

}
jucafojl

jucafojl1#

如果您只想访问工作区目录,则可以使用$WORKSPACE环境变量。
示例:

def get_job(){

    def cutOfDate = System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 2
    println("$WORKSPACE")
    def filename = "$WORKSPACE" + "/jobs_lists.txt"
    targetFile = new File(filename).write("")
    targetFile = new File(filename).append("<table><tr><th>Job Name</th><th>Last Build on</th><th>Keep</th><th>username</th></tr>")
    println "Cut of Date: " + cutOfDate

}

如果你想访问当前的构建上下文,使用currentBuild,它将返回一个RunWrapper。示例如下。

def changeset = currentBuild.changeSets

更新:访问管道中的作业

pipeline {
    agent any

    stages {
        stage('Test') {
            steps {
                script{
                    getJobs()
                }
            }
        }
    }
}

def getJobs() {
    Jenkins.instance.getAllItems(Job.class).each { jobitem ->
          def jobName = jobitem.name
          def jobInfo = Jenkins.instance.getItem(jobName)
          println(jobName)
    }
}

相关问题