若是Jenkins使用的Master-Slave多节点架构,删除Jenkins JOB后,相应JOB的slave节点的workspace不会被删除python
stackoverflow上有相关的问答:http://stackoverflow.com/questions/20532705/deleting-jenkins-jobs-through-gui-does-not-delete-their-workspaces-in-slavesapi
google groups上有相关的讨论:https://groups.google.com/forum/#!topic/jenkinsci-users/SiZ3DL-UJ-8架构
因此须要自行处理,因而用脚本实现该功能ui
具体思路是:google
相关的Python脚本以下: url
# -*- coding: utf-8 -*- import os import shutil import logging from jenkinsapi.jenkins import Jenkins logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__file__) def get_jenkins_instance(): jenkins_url = "http://jenkins.example.com" jenkins_username = "username" jenkins_password = "password" return Jenkins(jenkins_url, username=jenkins_username, password=jenkins_password) def clean_workspace(): jenkins_instance = get_jenkins_instance() jenkins_workspace_path = "/opt/JENKINS_HOME/workspace/" for dirpath, dirnames, filenames in os.walk(jenkins_workspace_path): if dirpath == jenkins_workspace_path: for dirname in dirnames: jenkins_job_name = dirname # 若是job被删除,则清理相应的workspace if not jenkins_instance.has_job(jenkins_job_name): logger.info("removing workspace dir of job:%s" % dirname) shutil.rmtree(os.path.join(dirpath, dirname)) if __name__ == "__main__": clean_workspace()