iMega's Blog This notebook

Как в jenkins использовать имя пользователя для репозитария вместо UUID

Используя JOB-DSL-plugin есть маленькая неприятность, когда используешь scm например

Используя JOB-DSL-plugin есть маленькая неприятность, когда используешь scm например

scm {
    git {
        remote {
            name('origin')
                url(repo)
                credentials(myCredential)
        }
        branch('master')
    }
}

в myCredential приходится указывать не имя, а UUID, фича ли это не знаю, но мне лично не удобно этим оперировать.

Решение оказалось довольно простым:

import jenkins.model.Jenkins;
import com.cloudbees.plugins.credentials.CredentialsProvider;
import com.cloudbees.plugins.credentials.common.StandardCredentials;
import hudson.Plugin;
import static hudson.security.ACL.SYSTEM;

Jenkins jenkins = Jenkins.getInstance();
Plugin credentialsPlugin = jenkins.getPlugin("credentials");

Это часть конфига, где указываешь имя пользователя см. список юзеров в jenkins

def userDescription = 'UserName';
def repo = '[email protected]:iMega/imega.github.io.git';

Перебираем список и забираем нужный UUID

if (credentialsPlugin != null) {
    for (CredentialsProvider credentialsProvider : jenkins.getExtensionList(CredentialsProvider.class)) {
        for (StandardCredentials credentials : credentialsProvider.getCredentials(StandardCredentials.class, jenkins, SYSTEM)) {
            if (credentials.getDescription().equals(userDescription)) {
                myCredential = credentials.getId();
            }
        }
    }
}

Пример задания:

job {
    name 'job_init'
    logRotator(-1, 4, -1, -1)
    scm {
        git {
            remote {
                name('origin')
                url(repo)
                credentials(myCredential)
            }
            branch('master')
        }
    }
}

Удачи в автоматизации!

iMega's Blog
iMega logo