Дженкинс Пипилин: получить команду awk, чтобы хорошо играть - PullRequest
0 голосов
/ 31 марта 2019

У меня есть сценарий для загрузки tar-файла последней версии pip-пакета с помощью URL-запроса (не pip-загрузки). Как таковой, я попытался grep для последней версии, глядя на сырой HTML. Так что для необработанного кода https://pypi.org/project/astroid/#files Я делаю

awk '/release--current">/,/<div class="release"/' html | awk '/"release__version">/{flag=1;next}/<\/p>/{flag=0}flag'|awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }',

Это просто перехватывать текст между разными тэгами, пока я наконец не получу то, что хочу. Это прекрасно работает на оболочке, но когда я помещаю команду в конвейер jenkins, она ничего не возвращает. Я предполагаю, что это из-за побега:

steps {

            cleanWs()

            script {
                if ( params.PKG_VRS ) {
                  httpRequest outputFile: 'myfile', responseHandle: 'NONE', url: 'https://pypi.io/packages/source/{ first letter }/{ package name }/{ package name }-{ version }.tar.gz'
                } else {
                    httpRequest outputFile: 'HTMLFILE', responseHandle: 'NONE', url: 'https://pypi.org/project/astroid/#files'
                    LATEST_VRS = sh (
                        script: """awk '/release--current">/,/<div class="release"/' html | awk '/"release__version">/{flag=1;next}/<\/p>/{flag=0}flag'|awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }'""",
                        returnStdout: true
                    ).trim()
                    echo "${LATEST_VRS}"
                }
            }

        }

Буду признателен, если кто-нибудь поможет мне разобраться, как правильно выйти из awk в команде Jenkins sh, или если есть лучший / более простой способ сделать то, что я хочу, то есть взять последнюю версию релиза Пакет PyPi. Из того, что я могу сказать, нет ссылки на него, и даже если бы это было так, мне все равно хотелось бы узнать нюансы использования awk в Jenkins.

...