Не найден исключительный файл плагина Jenkins. - PullRequest
0 голосов
/ 06 июля 2018

У меня есть скрипт для поиска всех незанятых рабов и создания текстового файла с использованием системы Jenkins Groovy. Я могу создать пустой файл и найти все неработающие рабы, где, когда я пришел, чтобы добавить в файл "idle_slaves.list", я получил java.io.FileNotFoundException исключение. Может ли кто-нибудь помочь мне в этом?

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

jenkins = jenkins.model.Jenkins

File file1 = new File(build.workspace.toString() + "/idle_slaves.list")

if(build.workspace.isRemote())
{
    channel = build.workspace.channel;
    fp = new FilePath(channel, build.workspace.toString() + "/idle_slaves.list")
} else {
    fp = new FilePath(new File(build.workspace.toString() + "/idle_slaves.list"))
}

if(fp != null)
{
    fp.write("", null); //writing to file
} 

for (node in Jenkins.instance.nodes) {
  computer = node.toComputer()
  if (computer.getChannel() == null) {
    continue
  }
if (computer.isIdle()) {
 slave = node.name.toString()
file1.append( slave )
}
}

Дженкинс 2,46

Groovy 2.0

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Вместо чтения вручную, почему бы не использовать библиотеки jenkins / hudson:

https://serverfault.com/a/889954

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

https://stackoverflow.com/a/43111789/3957754

def jenkins = Jenkins.instance
def computers = jenkins.computers

computers.each{ 
  println "${it.displayName} ${it.hostName}"
}

https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/disableSlaveNodeStartsWith.groovy

https://wiki.jenkins.io/display/JENKINS/Display+Information+About+Nodes

for (aSlave in hudson.model.Hudson.instance.slaves) {
0 голосов
/ 10 июля 2018

На самом деле сам файл еще не создан:)

File file1 = new File(build.workspace.toString() + "/idle_slaves.list")

просто создает указатель на путь, если вы хотите создать файл, затем добавьте следующую строку

file1.createNewFile() 

Также убедитесь, что у создаваемого вами файла есть права доступа, в противном случае вам будет отказано в разрешении.

Вы добавляете следующий фрагмент кода для подтверждения.

// check if the file exists
        boolean exists = file.exists();
        if(exists == true)
        {
            // printing the permissions associated with the file
            println "Executable: " + file.canExecute();
            println "Readable: " + file.canRead();
            println "Writable: "+ file.canWrite();
        }
        else
        {
            println "File not found.";
        }

Надеюсь, это поможет:)

...