将sh输出赋给声明性管道上的变量 [英] Assigning sh output to variable on declarative pipeline

查看:6
本文介绍了将sh输出赋给声明性管道上的变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将sh输出赋给具有声明性管道的变量?

def arch_prefix() { 
    script {  
        return sh(script : 'uname -m', returnStdout: true).trim()
    }
}
// end - Auxiliary fuctions

pipeline {
    agent none

    environment {
        DOCKER_IMAGE = 'test'
        ARCHITECTURE = arch_prefix()
        DOCKER_IMG = "${DOCKER_IMAGE}-${ARCHITECTURE}"
    }
    stages {
        stage('Build') {
            parallel {
                stage('arch1') {
                    agent { label 'agent_a' }
                    steps {
                        echo "${DOCKER_IMG}"
                    }
            stage('arch2') {
                    agent { label 'agentb' }
                    steps {
                        echo "${DOCKER_IMG}"
                    }
                }
            }
        }
    }
}

推荐答案

可能您正在搜索的内容如下:

pipeline {
    agent {
        label "docker-host"
    }
    environment {
        LEADER_REPOSITORY_URL = "ssh://some.git_repository.url"
        DOCKER_REGISTRY = "some.docker_repository.url:443"
        DOCKER_IMAGE_NAME = "some-image"
    }
    stages {
        stage('Build') {
            steps {
                timestamps {
                    script {
                        LATEST_VERSION = sh( script: "git ls-remote --tags ${env.LEADER_REPOSITORY_URL} 'v${env.GIT_BRANCH}*' | fgrep -v '^{}' | cut -d'/' -f3 | sort --version-sort | tail -n1 | tr -d 'v'",
                                                        returnStdout: true)
                    }
                    sh "docker build -t ${env.DOCKER_REGISTRY}/${env.DOCKER_IMAGE_NAME}:${env.GIT_BRANCH} -t ${env.DOCKER_REGISTRY}/${env.DOCKER_IMAGE_NAME}:${LATEST_VERSION} --force-rm ."
                }
            }
        }
    }
}

这篇关于将sh输出赋给声明性管道上的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆