как удалить определенный файл в рабочей области Jenkins с помощью скрипта Jenkins groovy - PullRequest
0 голосов
/ 06 марта 2019

У меня есть конвейер Jenkins, который запускает сценарий Jenkins Groovy через SCM, этот сценарий создаст файл (если файл отсутствует) и запишет, в противном случае он обновит файл и выполнит некоторые действия, этот файл должен бытьудалено.

ниже приведен код создания, записи и обновления файла.

node(node_label){
     if (fileExists ( file_path+'/'+file_name ) ){
          def readContent = readFile file_path+'/'+file_name
          writeFile file: file_path+'/'+file_name, text: readContent+'\r\n'+data
     }else{
          writeFile file: file_path+'/'+file_name, text:data
     }
 }

после выполнения некоторых действий мне нужно удалить этот файл, я попытался удалить его, как показано ниже, ноэто не работает.

def Delfile = new File(path+'/'+file_name)
Delfile.delete()

1 Ответ

0 голосов
/ 06 марта 2019

У меня есть следующее для ручной очистки рабочей области, так как вы упомянули, что это должно также работать, проверьте ниже.

Я предполагаю, что вы, вероятно, не правильно получаете путь к файлу

//load jobs
def jobs = Jenkins.instance.getAllItems(Job.class)

//iterate over
for(job in jobs) {

//seems like they dont have workspace
  if(job instanceof hudson.model.ExternalJob){
    continue
  }


     String workspace = null

     //pipelines dont have workspace
     if(job instanceof org.jenkinsci.plugins.workflow.job.WorkflowJob){
       println ("workflow job, not cleaning")   
       continue
     }

     try{
       workspace = job.workspace
     }catch(Exception e){
         //already clean eg.
       println ("no workspace, not cleaning")   
       workspace = null
     }

     if(workspace != null){
       //creation of the workspace and modules folder
       //again not sure, but sometimes was failing due boolean ..
       if(workspace instanceof java.lang.Boolean){
        println "cant cleanup"
        continue
       }

       File folder = new File(workspace) 

       //Check if the Workspace folder really exists
       if(folder!=null && folder.exists()){ 
         //workspace cleanup

         //get files
         File[] files = null
         try{
          files=new File(workspace).listFiles().sort(){
             //println it.name  

             if(!it.isFile()){
               it.deleteDir()
             }else{
               it.delete()
             }
           }
         }catch(Exception e){
            println "cant clean: " + workspace          
         } 

       }else{
        println "workspace is not existing, not cleaning"
       }  
   }
} 

Итак, ядро ​​очистки:

  //get files
         File[] files = null
         try{
          files=new File(workspace).listFiles().sort(){
             //println it.name  

             if(!it.isFile()){
               it.deleteDir()
             }else{
               it.delete()
             }
           }
         }catch(Exception e){
            println "cant clean: " + workspace          
         } 
...