Имя рабочего пространства JenkinsFile по умолчанию слишком длинное - PullRequest
0 голосов
/ 11 мая 2018

Я сейчас настраиваю Дженкинса с битбакетом. Я создал новый проект jenkins как многоотраслевой проект.

Файл JenkinsFile размещен в репозитории git. Как заставить jenkins сгенерировать более короткое имя ветви, чем имя по умолчанию.

E:\jenkins\workspace\reposName-BrancheName-ZKIZ7BNGL6RTDKLQAQ7QR4FKZMOB3DDAVZ564BLWT2BY5ZV652VA

Как мне проехать на ZKIZ7BNGL6RTDKLQAQ7QR4FKZMOB3DDAVZ564BLWT2BY5ZV652VA

Это мой jenkinsFile

#!/usr/bin/env groovy
env.PATH = env.PATH + ";c:\\Windows\\System32"
def call(String label = null, Closure body) {
    node(label) {
        String path = pwd()
        String branchName = env.BRANCH_NAME
        if (branchName) {
            path = path.split(Pattern.quote(File.separator))
            def workspaceRoot = path[0..<-1].join(File.separator)
            def currentWs = path[-1]
            String newWorkspace = env.JOB_NAME.replace('/', '-')
            newWorkspace = newWorkspace.replace(File.separator, '-')
            newWorkspace = newWorkspace.replace('%2f', '-')
            newWorkspace = newWorkspace.replace('%2F', '-')
            if (currentWs =~ '@') {
                newWorkspace = "${newWorkspace}@${currentWs.split('@')[-1]}"
            }
            path = "${workspaceRoot}${File.separator}${newWorkspace}"
        }
        ws(path) {
            body()
        }
    }
}

pipeline 
{
} // pipeline

Есть ли способ заставить Дженкинса сгенерировать более короткое имя?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы можете изменить значение jenkins.branch.WorkspaceLocatorImpl.PATH_MAX=20 в консоли скриптов jenkins.

Изменения будут потеряны, если вы перезапустите сервер jenkins. Чтобы сделать изменения постоянными, добавьте это свойство java -Djenkins.branch.WorkspaceLocatorImpl.PATH_MAX=20

0 голосов
/ 23 мая 2018

Это не лучший способ исправить это, но он работает:)

Сначала создайте метод, чтобы получить текущее рабочее пространство, и переделайте окончательный путь следующим образом:

def GetWorkspace()
{
    node
    {
        String path = pwd()
        String branchName = env.BRANCH_NAME
        if(branchName)
        {
            path = path.split(Pattern.quote(File.separator))
            def workspaceRoot = path[0..<-1].join(File.separator)
            def currentWs = path[-1]
            // Here is where we make branch names safe for directories -
            // the most common bad character is '/' in 'feature/add_widget'
            // which gets replaced with '%2f', so JOB_NAME will be
            // ${PR}}OJECT_NAME}%2f${BRANCH_NAME}
            String newWorkspace = env.JOB_NAME.replace('/', '-')
            newWorkspace = newWorkspace.replace(File.separator, '-')
            newWorkspace = newWorkspace.replace('%2f', '-')
            newWorkspace = newWorkspace.replace('%2F', '-')
            // Add on the '@n' suffix if it was there
            if (currentWs =~ '@') 
            {
                newWorkspace = "${newWorkspace}@${currentWs.split('@')[-1]}"
            }
            path = "E:\\Jenkins\\workspace\\${File.separator}${newWorkspace}"
        }

        return path
    }
}

Затем вы должны настроить его для нашего агента, как это

pipeline {

environment {
   //Your Env Setup
  }

  agent { //Global Agent.
    node {
      label 'AgentName'
      customWorkspace GetWorkspace()
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...