Конвейер Jenkins оставляет каталоги conan.tmpxxxxx в рабочей области

Предыстория: мы только начинаем использовать conan и хотим интегрировать его с конвейерными сборками Jenkins, которые также являются новыми для нас.

У меня есть простое задание конвейера, которое выполняет итерацию по файлу yaml, чтобы обнаружить компоненты, используемые в продукте, а затем вызывает другой конвейер, UploadRecipe, который загружает исходный код компонентов, находит рецепты и загружает их в соответствующее репо в артефакте.

Но он оставляет целую кучу каталогов conan.tmp в workspace/UploadRecipe@tmp.

$ pwd /jenkins_conan/workspace/UploadRecipe@tmp 
$ ls -1
conan.tmp1453946246097996081
conan.tmp2037444640117259875
conan.tmp3926464088111486375
conan.tmp7293377119892400567
conan.tmp868991149159211380

Конвейер не дает сбоев, но они никогда не очищаются, это также происходит в других конвейерах, связанных с conan, которые мы используем для создания больших файлов iso, которые потребляют ГБ, но пример рецепта загрузки намного проще для объяснения и показывает такое же поведение.

Что-то не так в моем скрипте конвейера?

есть ли какая-то команда, которую я должен был вызвать, чтобы убрать?

properties([parameters([string(description: 'Name/Version', name: 'name_version', defaultValue: 'base/1.0.2'),
                        string(description: 'User/Channel', name: 'user_channel', defaultValue: 'release/stable'),
                        string(description: 'SVN repository branch', name: 'svn_repo_branch', defaultValue: 'tags/CONAN_REL_1.0.2'),
                        string(description: 'SVN repository url', name: 'svn_repo_url', defaultValue: 'svn+ssh://$USER@svnserver/svncmake/base/'),
                        string(description: 'Artifactory', name: 'artifactory', defaultValue: 'my-artifactory'),
                        string(description: 'Upload repo', name: 'uploadRepo', defaultValue: 'stable-release')
                       ])])

node('buildserver') {
    withEnv(['PATH+LOCAL_BIN=/xxxxx/release/.virtualenvs/jfrog/bin']) {
        currentBuild.displayName = params.name_version + "@" + params.user_channel
        def server
        def client
        def uploadRepo
        def mysvncreds = 'creds-for-svn'
        def SVN_repo_url

        deleteDir()

        stage("Configure/Get recipe"){

            server = Artifactory.server params.artifactory
            client = Artifactory.newConanClient()

            uploadRepo = client.remote.add server: server, repo: params.uploadRepo

            dir("_comp_repo"){
                SVN_repo_url = params.svn_repo_url + params.svn_repo_branch
                checkout([$class: 'SubversionSCM', locations: [[credentialsId: mysvncreds, depthOption: 'files', ignoreExternalsOption: true, local: '.', remote: SVN_repo_url ]]])
            }
        }

        stage("Export recipe"){
            dir("_comp_repo"){
                myrecipes = ['conanfile.py', 'conanfile_policy.py', 'conanfile_rpm.py']

                for(int i = 0; i < myrecipes.size(); i++) 
                { 
                    def thisrecipe = myrecipes[i]
                    if (fileExists(thisrecipe)) {
                        mycommand = "export ./" + thisrecipe + " "  + params.user_channel
                        client.run(command: mycommand )
                    } else {
                        echo thisrecipe
                    }
                }
                client.run(command: "search" )
            }
        }

        stage("Upload recipe to Artifactory"){
            def name_version = params.name_version
            string myname = name_version.split("/")[0]
            string myversion = name_version.split("/")[1]
            String command = "upload ${myname}*/*@${params.user_channel} -r ${uploadRepo} --all --confirm --retry 3 --retry-wait 10"

            client.run(command: command)
        }
    }
}

person Alec Keeler    schedule 24.08.2018    source источник


Ответы (1)


сделать это в bash с помощью поиска и удаления

find /jenkins_conan/workspace/UploadRecipe@tmp -type f -name 'conan.tmp*' -exec rm -v {} \;

или попробуйте добавить это в свой конвейер

node('yournode') {
     ..
    stage 'removing cache files'
    def ws = pwd()
    def file = ws + '/conan.tmp*'
    sh 'rm ' + file + ' -rf' 
}
person matson kepson    schedule 24.08.2018
comment
да, это мой запасной вариант (но это каталоги, а не файлы, поэтому, я думаю, потребуется -type d), но я бы предпочел понять, почему это происходит. Хотели поднять вопрос на своей странице github, но не могли найти, где это сделать? github.com/jenkinsci/artifactory-plugin - person Alec Keeler; 24.08.2018