【发布时间】:2020-04-19 12:58:32
【问题描述】:
我正在尝试设置一个 Jenkins 管道,在其中使用 shell 脚本获取“相关”服务器名称并将其存储在变量 ($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
~
我想在这里做什么?
【问题讨论】:
-
@Cyrus 我使用 bash