WedX - журнал о программировании и компьютерных науках

Валидатор URI Jenkinsfile (Groovy)

Я новичок в Groovy и Jenkins, поэтому, надеюсь, этот вопрос понятен.

У меня есть Jenkinsfile, написанный на Groovy, и я хотел бы проверить один из параметров как допустимый URI. Без написания моей собственной проверки регулярных выражений, есть ли библиотека, которую я мог бы легко вызвать во время запуска Jenkins?


Ответы:


1

Вы можете попробовать это:

    try {
        def foo = new java.net.URL("yourURI").openStream()
        if (foo.getClass() == sun.net.www.protocol.http.HttpURLConnection$HttpInputStream) {
            println 'valid'
            foo.close()
        }
    }
    catch (java.io.FileNotFoundException e) {
        println 'not valid'
        return
    }   
09.10.2019

2

К сожалению, URL.toUri не разрешено, по крайней мере, в нашей настройке. (Возможно, это можно разрешить с помощью отдельной конфигурации.) По-видимому, открытие URL-адреса (попытка подключения к хосту) возможно, но похоже, что это может вызвать другие проблемы.

Я закончил с этим:

    // Validation URLs in Jenkins script is hard (URL.toUri is banned). This regex roughly matches the subset of
    // URLs we might want to use (and some invalid but harmless URLs). You can get a rough sense what
    // this matches with a generation tool like https://www.browserling.com/tools/text-from-regex .
    def saneUrlPattern = ~/^https:\/\/[-\w]{1,32}(\.[-\w]{1,32}){0,4}(:[0-9]{1,5})?(\/|(\/[-\w]{1,32}){1,10})?(\?([-\w]{1,32}=[-\w]{0,40}(&[-\w]{1,32}=[-\w]{0,40}){1,8})?)?(#[-\w]{0,40})?$/
    if (!(params.sourceUrl =~ saneUrlPattern)) {
      return [error: "Invalid url ${params.sourceUrl}. A simple https URL is expected."]
    }

Я понимаю, что пытаться проверить URL-адреса с помощью регулярного выражения сложно. Я попытался найти баланс между строгой и достаточно правильной проверкой и регулярным выражением, которое имеет некоторую надежду на то, что его поймут, взглянув на него и убедившись в том, что оно на самом деле соответствует.

25.02.2021
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]