Nexus.groovy#

Jenkins библиотека с общими и часто используемыми функциями для работы с Nexus.

Подключение библиотеки к Step/Pipeline осуществляется с помощью конструкции: import ru.sbrf.devops.Nexus

Важно: для использования библиотеки требуется предварительная инициализация DevCommon.groovy (описанного в подразделе «Библиотеки методов» раздела «Дополнительная документация» текущего документа).

Допустимо два варианта инициализации библиотеки:

  1. Обращение с объявлением config: def nexus = new Nexus(this, config, dev)

    Пример вызова метода:

    dockerImageTag = nexus.getNextImageVersionNew(config.dockerRegistryCred, fullDockerImageName)

  2. Обращение без объявления config: def nexus = new Nexus(this, dev)

    Пример вызова метода (в данном случае требуется заполнять все параметры вызываемых методов библиотеки):

    dockerImageTag = nexus.getNextImageVersionNew(dockerRegistryCred, fullDockerImageName, registryImageTagPrefix,dockerRegistryRepo ,dockerRegistryURL, dockerRegistryCI, dockerRegistryProject , additionalEnvsWithTuning, additionalEnvsWithoutTuning, closure, needVault, workspace, credentialTypes, configurationBlock)

Методы с входными параметрами

Описание

def getMavenMetadataNexus3(auth, nexusUrl, nexusGroupId, nexusSegment, repositoryName, customHeader, needVault = config.needVault, workspace = config.workspace)

/**
* Функция получения maven-metadata.xml для Nexus3
* @param auth - credentials
* @param nexusUrl - Ссылка на Nexus
* @param nexusGroupId - Группа для Nexus
* @param nexusSegment - Артефакт для Nexus
* @param repositoryName - имя nexus репозитория
* @param customHeader - персональный заголовок
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return содержимое maven-metadata.xml
*/

def publishDistrNexus3(String archivePath, String auth, String nexusUrl, String nexusGroupId, String nexusSegment, String nexusReleaseName, String repositoryName, String formatDistrib = "tar.gz", boolean needVault = config.needVault, String workspace = config.workspace)

/**
* Функция публикации в Nexus с помощью rest API в Nexus3 репозиторий
* @param archivePath - путь до дистрибутива
* @param auth - credentials
* @param nexusUrl - Ссылка на Nexus
* @param nexusGroupId - Группа для Nexus
* @param nexusSegment - Артефакт для Nexus
* @param nexusReleaseName - Имя для публикации
* @param repositoryName - имя nexus репозитория
* @param formatDistrib - формат дистрибутива
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return данные для записи в pom файл
*/

def publishDistrNexus2(archivePath, auth, nexusUrl, nexusGroupId, nexusSegment, nexusReleaseName, jiraTicketKey, repositoryName, String formatDistrib = "tar.gz", needVault = config.needVault, workspace = config.workspace)

/**
* Функция публикации в Nexus с помощью pom.xml в Nexus2 репозиторий
* @param archivePath - путь до дистрибутива
* @param auth - credentials
* @param nexusUrl - Ссылка на Nexus
* @param nexusGroupId - Группа для Nexus
* @param nexusSegment - Артефакт для Nexus
* @param nexusReleaseName - Имя для публикации (если не указано определится само)
* @param jiraTicketKey - Номер задачи
* @param repositoryName - имя nexus репозитория
* @param formatDistrib - формат дистрибутива
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return данные для записи в pom файл
*/

def publishDistrNexus2WithPom(filePath, auth, pomPath, nexusUrl, repositoryName, formatDistrib, cParam = "-F c=distrib", needVault = config.needVault, workspace = config.workspace)

/**
* Функция публикации в Nexus с помощью уже существующего pom.xml в Nexus2 репозиторий
* @param filePath - путь до дистрибутива
* @param auth - credentials
* @param pomPath - путь до дистрибутива
* @param nexusUrl - Ссылка на Nexus
* @param repositoryName - Ссылка на Nexus
* @param formatDistrib - формат дистрибутива
* @param cParam - c-параметр
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return данные для записи в pom файл
*/

def publishDistrNexus3WithPom(String filePath, String auth, String pomPath, String nexusUrl, String repositoryName, String formatDistrib, boolean needVault, String workspace)

/**
* Функция публикации в Nexus с помощью уже существующего pom.xml в Nexus3 репозиторий
* @param filePath - путь до дистрибутива
* @param auth - credentials
* @param pomPath - путь до дистрибутива
* @param nexusUrl - Ссылка на Nexus
* @param repositoryName - Ссылка на Nexus
* @param formatDistrib - формат дистрибутива
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return данные для записи в pom файл
*/

String formNexusLink(String nexusUrl, String nexusGroupId, String nexusSegment, String nexusReleaseName, String repositoryName, String formatDistrib)

/**
* Функция формирования ссылки на дистрибутив
* @param nexusUrl - Ссылка на Nexus
* @param nexusGroupId - Группа для Nexus
* @param nexusSegment - Артефакт для Nexus
* @param nexusReleaseName - Имя релиза
* @param repositoryName - Имя nexus репозитория
* @param formatDistrib - Расширение дистрибутива
* @return ссылка на дистрибутив
*/

def getNextImageVersionNew(String auth, String image, String registryImageTagPrefix, String dockerRegistryRepo, String dockerRegistryRepoPrefixName, String dockerRegistryURL, String dockerRegistryCI, String dockerRegistryProject, LinkedHashMap dockerRestApi, boolean needVault, String workspace)

/**
* Функция определения версии публикуемого образа
* @param auth - credentials
* @param image - имя образа
* @param registryImageTagPrefix - префикс версии образа
* @param dockerRegistryRepo - репозиторий docker registry
* @param dockerRegistryRepoPrefixName - репозиторий в имени на образ
* @param dockerRegistryURL - ссылка на registry
* @param dockerRegistryCI - CI registry
* @param dockerRegistryProject - проект registry
* @oaram dockerRestApi - Api registry
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return имя образа
*/

def getImageTagByLink(String auth, String image, boolean needNexus, LinkedHashMap configurationBlock, String dockerRegistryURL, String dockerRegistryRepo, LinkedHashMap dockerRestApi, boolean needVault, String workspace)

/**
* Функция определения версии публикуемого образа по ссылке на образ
* @param auth - credentials
* @param image - ссылка на образ с sha256
* @param needNexus - флаг необходимости взятия credentials из отдельного хранилища под Nexus
* @param configurationBlock - блок с путем до хранилища с credentials Nexus
* @param dockerRegistryURL - ссылка на docker registry
* @param dockerRegistryRepo - репозиторий в dockerRegistry
* @param dockerRestApi - Api registry
* @param needVault - требуется хранилище
* @param workspace - рабочая область (директория)
* @return
*/

def getImageTag(String auth, String image, String contentDigest, boolean needNexus, LinkedHashMap configurationBlock, String dockerRegistryURL, String dockerRegistryCI, String dockerRegistryProject, String dockerRegistryRepo, String dockerRegistryRepoPrefixName, LinkedHashMap dockerRestApi, boolean needVault, String workspace)

/**
* Функция получения тега по contentDigest по составным частям
* @param auth - credentials
* @param image - имя образа
* @param contentDigest - хэш-сумма формата sha256:{хэш-сумма}
* @param needNexus - флаг необходимости взятия credentials из отдельного хранилища под Nexus
* @param configurationBlock - блок с путем до хранилища с credentials Nexus
* @param dockerRegistryURL - ссылка на registry
* @param dockerRegistryCI - CI registry
* @param dockerRegistryProject - проект registry
* @param dockerRegistryRepo - репозиторий в dockerRegistry
* @param dockerRegistryRepoPrefixName - репозиторий в dockerRegistry в полном имени образа относительно ссылки на docker registry
* @param dockerRestApi - Api registry
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return тег образа
*/

def getImageHash(String auth, String dockerImageName, String tag, String dockerRegistryURL, String dockerRegistryRepoPrefixName, String dockerRegistryCI, String dockerRegistryProject, LinkedHashMap dockerRestApi, boolean needVault, String workspace)

/**
* Метод получения contentDigest по тегу образа по составным частям
* @param auth - credentials
* @param dockerImageName - имя образа
* @param tag - тег образа
* @param dockerRegistryURL - ссылка на registry
* @param dockerRegistryRepoPrefixName - репозиторий в dockerRegistry в полном имени образа относительно ссылки на docker registry
* @param dockerRegistryCI - CI registry
* @param dockerRegistryProject - проект registry
* @param dockerRestApi - Api registry
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return contentDigest - хэш-сумма манифеста образа
*/

def getImageHashByLink(String auth, String dockerImageName, String tag, String dockerRegistryURL, LinkedHashMap dockerRestApi, boolean needVault, String workspace)

/**
* Метод получения contentDigest по тегу образа по ссылке
* @param auth - credentials
* @param dockerImageName - имя образа
* @param tag - тег образа
* @param dockerRegistryURL - ссылка на registry
* @param dockerRestApi - Api registry
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return contentDigest - хэш-сумма манифеста образа
*/

def downloadNexusDistrib(nexusLink, fileName = "", nexusUrl = config.nexusUrl, customHeader = config.customHeader, nexusCredentialsId = config.nexusCredentialsId, nexusReleaseRepo = "", nexusGroupId = "", nexusSegment = "", DistribName = "", DistribNameSuffix = "", needVault = config.needVault, workspace = config.workspace)

/**
* Скачивание дистрибутива по ссылке
* @param nexusLink - ссылка на дистрибутив
* @param fileName - имя файла
* @param nexusUrl - Ссылка на Nexus
* @param customHeader - персональный заголовок
* @param nexusCredentialsId - credentials
* @param nexusReleaseRepo - имя репозитория
* @param nexusGroupId - Группа для Nexus
* @param nexusSegment - Артефакт для Nexus
* @param DistribName - имя дистрибутива
* @param DistribNameSuffix - суффикс дистрибутива
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
* @return имя архива в workspace
*/

def checkImageExist(String auth, String imageName, String dockerRegistryRepo, String dockerRegistryRepoPrefixName, String dockerRegistryURL, String dockerRegistryCI, String dockerRegistryProject, LinkedHashMap dockerRestApi, boolean needVault, String workspace)

/**
* Метод проверки существования образа
* @param auth - данные для авторизации
* @param imageName - имя образа
* @param dockerRegistryRepo - репозиторий docker registry
* @param dockerRegistryRepoPrefixName - репозиторий docker registry в полном имени образа относительно ссылки на docker registry
* @param dockerRegistryURL - ссылка на registry
* @param dockerRegistryCI - CI registry
* @param dockerRegistryProject - проект registry
* @param dockerRestApi - Api registry
* @param needVault - требуется хранилище
* @param workspace - рабочее пространство
*/

def checkForExistence(String nexusUrl, String nexusCredentialsId, String repo, String nexusGroupId, String nexusSegment, String version)

/**
* Проверка наличия библиотеки в nexus
* @param nexusUrl - Ссылка на Nexus
* @param nexusCredentialsId - credentials
* @param repo - репозиторий Nexus
* @param nexusGroupId - репозиторий docker registry
* @param nexusSegment - часть пути до библиотеки
* @param version - версия библиотеки
* @return наличие проверяемой версии в nexus
*/

def getInfoFromNexusLink(String nexusLink, distribUrlRegex = config.distribUrlRegex)

/**
* Метод получения информации по дистрибутиву на основе ссылки на дистрибутив
* @param nexusLink - Ссылка на дистрибутив в Nexus
* @param distribUrlRegex - маска ссылки дистрибутива
* @return результат - информация по дистрибутиву
*/

def replacePlaceHolderDockerRestApi(String request, LinkedHashMap dockerRestApi, LinkedHashMap mapWithValues, String method)

/**
* Функция сборки запроса в docker registry
* @param request - начальная строка
* @param dockerRestApi - словарь с правилами сборки запроса
* @param mapWithValues - словарь со значениями для запроса
* @param method - значение, содержащее имя метода, для которого будет происходить сборка
* @return итоговая строка с запросом
*/

def createBrowseLinkToImage(String dockerImageName, String tag, String dockerRegistryRepo, String dockerRegistryRepoPrefixName, String dockerRegistryURL, String dockerRegistryCI, String dockerRegistryProject, LinkedHashMap dockerRestApi)

/**
* Функция сборки браузерной ссылки на образ
* @param dockerImageName образ
* @param tag тег образа
* @param dockerRegistryRepo репозиторий в docker registry
* @param dockerRegistryRepoPrefixName репозиторий в docker registry в полном имени образа относительно ссылки на docker registry
* @param dockerRegistryURL ссылка на docker registry
* @param dockerRegistryCI CI registry
* @param dockerRegistryProject Project registry
* @param dockerRestApi Api registry
* @return браузерная ссылка на образ
*/

def publishNexusDistr(String archivePath, String nexusUrl, String nexusCredentialsId, String repo, String nexusGroupId, String artifactId, String version, String distPackaging, String nexusReleaseRepo)

/**
* Метод публикации дистрибутива в хранилище с возможным изменением названия релиза
* @param archivePath - путь до архива дистрибутива
* @param nexusUrl - Ссылка на Nexus
* @param nexusCredentialsId - credentials
* @param repo - репозиторий в хранилище
* @param nexusGroupId - группа для Nexus
* @param artifactId - артефакт для Nexus
* @param version - название релиза
* @param distPackaging - расширение дистрибутива
* @param nexusReleaseRepo - релизный репозиторий Nexus
* @return ссылка на дистрибутив в релизном репозитории
*/

Map buildPublishImage(String imageLink, String imageName, String version, LinkedHashMap dockerInfo, String baseImageLink, String pathToDocker, String exposeDir, ArrayList buildDockerRegistryURLs, LinkedHashMap dockerRestApi, boolean needVault, String workspace)

/**
* Метод сборки и публикации образа
* @param imageLink - ссылка на образ с тегом
* @param imageName - имя образа (без КЭ)
* @param version - тег публикуемого образа
* @param dockerInfo - словарь c информацией по КЭ
* @param baseImageLink - ссылка на базовый образ
* @param pathToDocker - путь до Dockerfile (относительно текущей директории)
* @param exposeDir - директория, относительно которой будет запускаться docker build
* @param buildDockerRegistryURLs - список Registry, к котором нужно произвести login
* @param dockerRestApi - словарь нового режима построения запросов в Registry
* @param needVault - требуется хранилище
* @param workspace - полный путь до рабочей области
* @return [флаг публикации образа, json ответа registry]
*/

String getServiceRestBrowse(String dockerRegistryURL, String dockerRegistryRepo, LinkedHashMap dockerRestApi)

/**
* Функция получения браузерной REST ссылки в docker registry
* @param dockerRegistryURL - ссылка на docker registry
* @param dockerRegistryRepo - репозиторий в docker registry
* @param dockerRestApi - словарь нового режима построения запросов в Registry
* @return браузерная REST ссылка на docker registry
*/