Как использовать условие «когда» для последнего измененного времени файла в синтаксисе конвейера Jenkins - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю конвейер Jenkins, я хочу, чтобы определенный этап запускался только в том случае, если конкретный файл журнала (файл журнала находится на узле сервера, на котором будут выполняться все этапы), дата последнего изменения обновляется после инициированиязадание конвейера, я понимаю, что нам нужно использовать условие «Когда», но не совсем уверен, как его реализовать.

Попытался обратиться к некоторым порталам, связанным с конвейером, но не смог найти ответ

Кто-нибудь может помочь мне через это?

Заранее спасибо!

1 Ответ

0 голосов
/ 17 ноября 2018

Получить данные о файле довольно сложно в конвейере Дженкинса при использовании песочницы Groovy, поскольку вам не разрешено делать new File(...).lastModified.Однако есть findFiles step , который в основном возвращает список обернутых File объектов с геттером для последнего измененного времени в миллисисах, поэтому мы можем использовать findFiles(glob: "...")[0].lastModified.

Возвращенный массив может быть пустым, поэтому мы должны проверить это (см. Полный пример ниже).

Текущее время начала сборки в миллисах доступно через currentBuild.currentBuild.startTimeInMillis.

Теперь, когда мыGit оба, мы можем использовать их в expression:

pipeline {

    agent any

    stages {

        stage("create file") {
            steps {
                touch "testfile.log"
            }
        }

        stage("when file") {
            when {
                expression {
                    def files = findFiles(glob: "testfile.log")
                    files && files[0].lastModified < currentBuild.startTimeInMillis
                }
            }
            steps {
                echo "i ran"
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...