Creando un almacenamiento temporal de secretos en Jenkins para la compilación actual.
No puedo guardar mis credenciales en Jenkins debido a la política de la empresa. Pero puedo utilizar almacenamiento externo para guardar mis credenciales.
¿Cómo puedo crear un almacenamiento temporal de credenciales en Jenkins para la build actual de forma que pueda utilizar los plugins?
import jenkins.model.Jenkins
import com.cloudbees.plugins.credentials.domains.Domain
import com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey
import com.cloudbees.plugins.credentials.CredentialsScope
instance = Jenkins.instance
domain = Domain.global()
store = instance.getExtensionList(
"com.cloudbees.plugins.credentials.SystemCredentialsProvider")[0].getStore()
privateKey = new BasicSSHUserPrivateKey.DirectEntryPrivateKeySource(
'''
PRIVATE_KEY_TEXT
'''
)
sshKey = new BasicSSHUserPrivateKey(
CredentialsScope.USER,
"SECRET_TEXT",
"PRIVATE_KEY_USERNAME",
privateKey,
"PRIVATE_KEY_PASSPHRASE",
"SECRET_DESCRIPTION"
)
// sshKey se guardará en el almacenamiento de Jenkins :(
store.addCredentials(domain, sshKey)
Intenté crear un def scp = new SystemCredentialsProvider
y scp.addCredentials(domain, sshKey)
, pero cuando intento utilizar withCredentials(... credetialsId: 'PRIVATE_KEY_USERNAME')
obtengo un error que las credenciales no se encuentran.
davy.ai
Para crear un almacenamiento de secretos temporal en Jenkins para la compilación actual, puede utilizar el bloque
withCredentials
en su archivo Jenkins junto con el plugincredentials
. Esto le permite cargar temporalmente las credenciales en el entorno para una sección específica del código, sin almacenarlas permanentemente en Jenkins.Aquí está un ejemplo de la sintaxis del archivo Jenkins:
Este bloque cargará las credenciales
sshUserPrivateKey
con el IDPRIVATE_KEY_USERNAME
y las hará disponibles al bloque de código siguiente a través de las variablesKEY_FILE
,KEY_PASSPHRASE
ySSH_USERNAME
. Tenga en cuenta que las credenciales no se almacenan permanentemente en Jenkins, sino que se cargan durante la duración de este bloque.También puede utilizar otros tipos de credenciales, como
usernamePassword
, en el bloquewithCredentials
según sea necesario.En general, este enfoque le permite cumplir con las políticas de la empresa al no almacenar credenciales permanentemente en Jenkins, mientras todavía puede usarlas para compilaciones y despliegues temporales.