Как запустить сборку на основе пользовательского тега и перед сборкой проверить, на каком коде строить - PullRequest
0 голосов
/ 25 октября 2018

Я бы хотел запустить сборку, основанную на фиксации пользовательского тега, например "RNX", но этот тег будет определять, какую часть кода создавать.Тег соответствует определенной конфигурации в папке с несколькими папками конфигурации, но я хочу создавать только одну за один раз.

Каждая папка конфигурации содержит файл с уникальным именем тега.Каждая папка также имеет свой собственный файл Gradle.

Моя идея состоит в том, чтобы перебирать папки конфигурации и сравнивать содержимое файлов tag.txt (содержащее уникальное имя тега) и выполнять gradle, когда совпадение найдено.Это можно сделать?Мне нужен пример хотя бы чего-то похожего, если это возможно, спасибо :)

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Я делаю это путем захвата тега на ловушке после получения и проверки, начинается ли имя тега с 'STG'.если это так, я считаю это промежуточным тегом и запускаю задание CI (которое создает, тестирует, объединяет, отправляет и т.Работа (конвейер):

#!groovy
node('slave7') {
  stage {
    // strip the 'STG-' prefix from tag name 
    TAG = TAG.substring(TAG.indexOf('-')+1)

    // here u can implement your logic using groovy
    println TAG

    // or POSIX shell
    sh """
      echo ${TAG}
    """
  }
}
0 голосов
/ 26 октября 2018

Если вы используете GitLab и GitLab Plugin , вы можете использовать значение gitlabActionType и gitlabTargetBranch переменных среды.

Когда вы нажимаете тег, gitlabActionTypeзначением будет TAG_PUSH, а gitlabTargetBranch значением будет выдвинутый тег.

Итак, для построения определенного тега вы можете сделать:

if (env.gitlabActionType == 'TAG_PUSH') {
    sh "${env.gitlabTargetBranch.split('/').last()}/build.sh"
}

Или:

if (env.gitlabActionType == 'TAG_PUSH') {
    dir("${env.gitlabTargetBranch.split('/').last()}") {
        sh "./build.sh"
    }
}

Также вы можете отфильтровать, какие теги запустят сборку: Больше информации в официальном документе

0 голосов
/ 25 октября 2018

Вы можете настроить webhook, чтобы построить тег, и вы можете взять этот файл в Jenkinsfile и запустить с этим параметром "tag" все, что захотите, например

sh "/${tag}/myconfig.sh"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...