Взаимодействие с Jenkins Tools#

Jenkins Tools - сторонние утилиты, которые можно применять в своих Pipelines с использованием механизмов Jenkins. За администрирование Jenkins Tools отвечают администраторы Jenkins.

Получение информации о Jenkins Tools из Jenkins#

Информацию о том, какие Tools доступны и какие параметры задавать для их подключения, можно получить в Jenkins.

  1. Открыть существующий Jenkins Job типа Pipeline и в меню слева выбрать пункт Pipeline Syntax.

    pipeline_syntax_button

    Рисунок. Выбор пункта меню "Pipeline Syntax"

  2. В секции Sample Step выбрать tool: Use a tool from a predefined Tool Installation

    choice_tool

    Рисунок. Выбор варианта "tool"

  3. Находим нужный Tool и выбираем его версию, после чего нажимаем Generate Pipeline Script

    choice_specific_tool

    Рисунок. Выбор Tool

  4. В окне ниже появится информация, которую мы будем использовать для настройки Tools в SMDL. Это name и type. Поле path по умолчанию должно быть пустым, если исполняемы бинарный файл определен в корне Tool, иначе необходимо обратиться к администраторам Jenkins за получением информации о пути, по которому расположен исполняемый бинарный файл в Tool.

    tool_information

    Рисунок. Информация для настройки Tool

Настройка взаимодействия с Jenkins Tools в SMDL#

В SMDL реализовано два варианта взаимодействия с Jenkins Tools.

  1. Взаимодействие с Jenkins Tools c использованием переменных.

    В конфигурационном файле для стенда (configDev.yml, configPsi.yml, configProm.yml и т.п.) в репозитории конфигураций SMDL.Configs определен ряд переменных для работы с Jenkins Tools. Чтобы использовать данный вариант, необходимо в конфигурационном файле определить данные переменные.

    Переменная

    Описание

    Пример заполнения

    toolIstioctlVersion

    Версия Jenkins Tool для клиента IstioCTL

    istio-1.12-linux

    toolExecutorVersion

    Версия Jenkins Tool для клиента системы оркестрации

    oc3.11.0

    toolExecutorType

    Тип Jenkins Tool для клиента системы оркестрации

    oc

    toolExecutorServerPrecheckVersion

    Версия Jenkins Tool для клиента системы оркестрации (используется для проверки конфигураций)

    oc-4.7.12

    toolSonarQubeVersion

    Версия Jenkins Tool для клиента SonarQube

    SonarQube_Scanner

    toolGoVersion

    Версия Jenkins Tool для клиента Go

    go1.18

    typeGoVersio

    Тип Jenkins Tool для клиента Go

    go

    toolGoDir

    Директория с Jenkins Tool для клиента Go

    bin

    toolHelmVersion

    Версия Jenkins Tool для клиента HELM

    helm-v3.8.0

    toolMavenVersion

    Версия Jenkins Tool для клиента Maven

    Maven 3.5.4

  2. Взаимодействие с Jenkins Tools c использованием секции tools.

    Данный вариант является целевым. Для его использования необходимо определить секцию tools в конфигурационном файле для стенда (configDev.yml, configPsi.yml, configProm.yml и т.п.) в репозитории конфигураций SMDL.Configs. При использовании данного варианта используется метод toolResolver из DevCommon.groovy (описанного в подразделе «Библиотеки методов» раздела «Дополнительная документация» документа «Руководство прикладного разработчика»).

    Jenkins Tools, которые сейчас используются в SMDL с использованием секции tools:

    • executor - Tool для клиента системы оркестрации

    • go - Tool для клиента Go

    • helm - Tool для клиента HELM

    • kubectl - Tool для клиента kubectl

    • python - Tool для клиента Python

    • precheckExecutor - Tool для клиента системы оркестрации

    • sonarQube - Tool для клиента SonarQube

    • istioctl - Tool для клиента IstioCTL

    • jdk - Tool для клиента JDK

    • jdkSonar - Tool для клиента JDK, используемого при сканировании SonarQube

    • gradle - Tool для клиента Gradle

    • maven - Tool для клиента Maven

    • yq - Tool для клиента YQ

    Для каждого Tool можно задать следующие поля:

    • name - имя (версия)

    • type - тип

    • path - путь до исполняемого бинарного файла

    Пример заполнения секции tools в конфигурационном файле:

     tools:
       executor:
         name: oc3.11.0
         type: oc
         path: oc
       go:
         name: go1.18
         type: go
       helm:
         name: helm-v3.8.0
         type: "com.cloudbees.jenkins.plugins.customtools.CustomTool"
         path: helm
       kubectl:
         name: kubectl_v1.18
         type: com.cloudbees.jenkins.plugins.customtools.CustomTool
         path: kubectl
       python:
         name: "ansible-core2.10.3"
         type: "org.jenkinsci.plugins.ansible.AnsibleInstallation"
         path: "python3.6"
       precheckExecutor:
         name: oc-4.5.0
         type: oc
         path: oc
       sonarQube:
         name: 'SonarQube_Scanner'
         type: "hudson.plugins.sonar.SonarRunnerInstallation"
         path: "sonar-scanner"
       istioctl:
         name: istio-1.12-linux
         type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool'
         path: bin/istioctl
       jdk:
         type: jdk
       jdkSonar:
         name: jdk-11.0.10_linux
         type: jdk
         path: bin/jdk
       gradle:
         type: gradle
         path: "bin/gradle"
       maven:
         name: Maven 3.5.4
         type: maven
         path: bin/mvn
       nodejs:
         name: "v10.16.3-linux-x64"
         type: nodejs
       yq:
         name: yq-4.20.2
         type: 'com.cloudbees.jenkins.plugins.customtools.CustomTool'
         path: yq_linux_amd64
    

    В примере не задан name для Tools jdk и gradle, так как выбор имени (версии) Tool может осуществляться из параметров Jenkins Job.