Для параметризованной сборки, понадобится плагин Active Choices
Переходим в настройки Jenkins‘а
Раздел «Управление плагинами»
Переходим к вкладке «Доступные» и в поиске указываем «Active Choices»
Устанавливаем его.
Создаем «New Item» — «Pipeline«, указываем, что это будет параметризованная сборка, и добавляем параметр «Active Choices Parameter»
Указываем, что это «Groovy Script» и вставляем туда следующее:
import com.cloudbees.plugins.credentials.Credentials; import com.cloudbees.plugins.credentials.CredentialsNameProvider; import com.cloudbees.plugins.credentials.common.StandardCredentials; import com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.ChannelExec; import jenkins.model.* sshCredentialsId = 'instance_ssh_key' sshUser = 'artem' sshInstance = '192.168.1.100' def sshCreds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(SSHUserPrivateKey.class, Jenkins.instance, null, null ).find({it.id == sshCredentialsId}); String ssh_key_data = sshCreds.getPrivateKeys() JSch jsch = new JSch(); jsch.addIdentity("id_rsa", ssh_key_data.getBytes(), null, null); Session session = jsch.getSession(sshUser, sshInstance, 22); Properties prop = new Properties(); prop.put("StrictHostKeyChecking", "no"); session.setConfig(prop); session.connect(); ChannelExec channelssh = (ChannelExec)session.openChannel("exec"); channelssh.setCommand("cat /home/artem/secret_list"); channelssh.connect(); def result = [] InputStream is=channelssh.getInputStream(); is.eachLine { result.add(it) } channelssh.disconnect(); return result
Где значение переменных, «sshCredentialsId» — Jenkins Credentials ID с типом: «SSH Username with private key»;
«sshUser» — имя пользователя для SSH подключения;
«sshInstance» — IP адрес или доменное имя удаленного инстанса;
«cat /home/artem/secret_list» — команда, результат которой мы хотим вернуть