Я довольно новичок в Дженкинс, так что не обращаю на меня внимания :) Я пытаюсь настроить конвейер Дженкинса, где я получаю «связанное» имя сервера с помощью сценария оболочки и сохраняю его в переменной ($ SERVER), затем Я хочу использовать эту переменную на следующем этапе, чтобы войти на этот сервер и выполнить скрипт удаленно. Я придумал следующее, но не могу понять, как передать имя сервера между первой и второй функцией:
1 def SERVER
2
3 def fetch_server() {
4 sh """#!/bin/bash
5 SERVER = ${env.LOCAL_SCRIPT_PATH}/getServer.sh ${params.HOSTNAME} ${TOKEN}
6 """
7 }
8 def provisioning() {
9 sh """#!/bin/bash
10 ssh -o StrictHostKeyChecking=no username@$SERVER 'bash -s' ${env.REMOTE_SCRIPT_PATH}/script.py
11 """
12 }
13
14 pipeline {
15 agent {
16 label 'slave1'
17 } // end agent
18 environment {
19 REMOTE_SCRIPT_PATH = '/usr/local/bin/scripts'
20 LOCAL_SCRIPT_PATH = './jobs/scripts'
21 }
22 parameters {
23 string(
24 name: 'HOSTNAME',
25 defaultValue: '---',
26 description: 'Enter the hostname of server'
27 ) // end HOSTNAME parameter
28 } // end parameters
29 stages {
30 stage('Stage 1') {
31 steps {
32 withCredentials([string(credentialsId: 'some_cred', variable: 'TOKEN')]) {
33 fetch_server()
34 }
35 } // end steps
36 } // end Stage 1
37 stage('Stage 2') {
38 steps {
39 sshagent(credentials : ['username']) {
40 provisioning()
41 } // end ssh credentials
42 } // end steps
43 } // end Stage 2
44 } // end stages
45 post {
46 always {
47 cleanWs()
48 } // end always
49 } // end post step
50 } // end pipeline
~
Возможно ли то, что я пытаюсь сделать здесь?