Для параметризованной сборки, понадобится плагин 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" — команда, результат которой мы хотим вернуть