es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La credencial freeStyleJob SCM desde parámetros no está funcionando.

Estoy intentando usar un simple FreeStyleJob SCM y establecer el credentialId UUID desde el parámetro de construcción. El problema es que parece que las credenciales no están interpretando correctamente el parámetro.

scm {
    git {
        remote {
            github('${MY_REPO_HANDLE}', 'ssh')
            credentials('${MY_REPO_CREDENTIALS}')
        }
        branch('${MY_BRANCH}')
    }
}

Mi MY_REPO_CREDENTIALS es un parámetro de tipo String sencillo.

stringParam {
    name("MY_REPO_CREDENTIALS")
    defaultValue("teste-credential")
}

Log:

Advertencia: No se pudo encontrar el CredentialId "${MY_REPO_CREDENTIALS}".

ACTUALIZACIÓN

Este trabajo de Jenkins fue creado por otro trabajo de Jenkins utilizando DSL externo. Resumiendo, el Trabajo 1, cuando se activa, creará el Trabajo 2 en Jenkins. Cuando intento usar “$ (sin )”, el trabajo fallará porque este parámetro no existe en el contexto del Trabajo 1.

config.xml del trabajo:

<scm class="hudson.plugins.git.GitSCM">
<userremoteconfigs>
<hudson.plugins.git.userremoteconfig>
<url>git@github.com:${MY_REPO_HANDLE}.git</url>
<credentialsid>${MY_REPO_CREDENTIALS}</credentialsid>
</hudson.plugins.git.userremoteconfig>
</userremoteconfigs>
<branches>
<hudson.plugins.git.branchspec>
<name>${MY_BRANCH}</name>
</hudson.plugins.git.branchspec>
</branches>
<configversion>2</configversion>
<dogeneratesubmoduleconfigurations>false</dogeneratesubmoduleconfigurations>
<gittool>Default</gittool>
<browser class="hudson.plugins.git.browser.GithubWeb">
<url>https://github.com/${MY_REPO_HANDLE}/</url>
</browser>
</scm>

Espero que esta información sea útil.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para hacer referencia a un parámetro de compilación en tu script de Jenkins Job DSL, debes usar el símbolo $ seguido del nombre del parámetro entre corchetes, de esta manera: ${MY_REPO_CREDENTIALS}.

    Sin embargo, en este caso parece que el parámetro no se está interpretando correctamente. Un posible problema podría ser que estás usando comillas dobles en lugar de comillas simples al definir el parámetro de cadena:

    defaultValue("teste-credential")
    

    Debes cambiar esto para usar comillas simples en su lugar:

    defaultValue('teste-credential')
    

    Otra posible causa podría ser que el script de Jenkins Job DSL se esté creando mediante otro trabajo y el parámetro no se está pasando correctamente. En este caso, podrías intentar usar dos signos de dólar para escapar la sustitución de variables, de esta manera:

    credentials($${MY_REPO_CREDENTIALS})
    

    Esto debería evitar que el parámetro se sustituya en el momento de la creación del trabajo y permitir que se pase correctamente en tiempo de ejecución.

    Si ninguna de estas soluciones funciona, podrías intentar depurar el trabajo agregando algunas declaraciones de registro (log statements) o usando la Consola de scripts de Jenkins para ejecutar el código de manera interactiva y ver dónde se produce el problema.

Comments are closed.