相关疑难解决方法(0)

是否可以从管道中的sh DSL命令捕获stdout

例如:

var output=sh "echo foo";
echo "output=$output";
Run Code Online (Sandbox Code Playgroud)

我会得到:

output=0
Run Code Online (Sandbox Code Playgroud)

所以,显然我得到退出代码而不是标准输出.是否有可能将stdout捕获到管道变量中,这样我就可以得到: output=foo 作为我的结果?

jenkins jenkins-workflow jenkins-pipeline

74
推荐指数
4
解决办法
7万
查看次数

如何使用Jenkins Git插件接收本地Git分支名称?

我正在使用Jenkins Git插件(v2.0)的Branch Specifier选项在特定分支上运行构建,例如1.4.

${GIT_BRANCH}在这种情况下包含origin/1.4价值.

我怎样才能收到用于克隆的本地Git分支的名称(即只是1.4没有origin/前缀?

我尝试过Check out to specific local branch使用分支名称的附加行为1.4,但没有任何改变.

我在GitHub上看过相关的PR,但它被拒绝了(因为它只修复了一个只有origin远程的情况).

git jenkins

51
推荐指数
5
解决办法
6万
查看次数

如何在Jenkins 2.0管道作业中执行命令,然后返回stdout

有没有更好的方法在Jenkins 2.0管道中运行shell任务,然后返回stdout命令.我能让它工作的唯一方法是将命令的输出传递给文件,然后将文件读入变量.

sh('git config --get remote.origin.url > GIT_URL')
def stdout = readFile('GIT_URL').trim()
Run Code Online (Sandbox Code Playgroud)

这似乎是一种非常糟糕的返回输出的方法.我希望我可以这样做:

def stdout = sh('git config --get remote.origin.url').stdout
Run Code Online (Sandbox Code Playgroud)

要么

def exitcode = sh('git config --get remote.origin.url').exitcode
Run Code Online (Sandbox Code Playgroud)

这可能吗?

groovy jenkins jenkins-workflow jenkins-pipeline jenkins-2

20
推荐指数
2
解决办法
4万
查看次数

在jenkins管道脚本中获取gradle变量

我正在尝试使用groovy构建脚本将构建管道迁移到“ Pipeline插件”。

我的管道通常是:

  1. 测试(等级)
  2. IntegrationTest(等级)
  3. 构建(渐变)
  4. 发布(人工工厂)

我想在我的jenkins构建脚本中使用gradle变量,例如version / group等,以发布到工件中的正确文件夹。过去,人工插件会为我解决。如何做到这一点?

对于单个gradle项目,我使用如下代码:

node('master')
{
    def version = 1.0
    def gitUrl = 'some.git'
    def projectRoot = ""
    def group = "dashboard/frontend/"
    def artifactName = "dashboard_ui"
    def artifactRepo = "ext-release-local"

    stage "git"

    git branch: 'develop', poll: true, url: "${gitUrl}"

    dir(projectRoot)
    {

        sh 'chmod +x gradlew'
        stage "test"
        sh './gradlew clean test'

        stage "build"
        sh './gradlew build createPom'

        stage "artifact"
        def server = Artifactory.server('artifactory_dev01')
        def uploadSpec = """{
          "files": [
            {
              "pattern": "build/**.jar",
              "target": …
Run Code Online (Sandbox Code Playgroud)

groovy gradle jenkins jenkins-pipeline

5
推荐指数
2
解决办法
9592
查看次数

无法在Jenkins管道作业中通过DSL(常规)存储sh命令输出

我想在管道Jenkins作业中获取最后的构建输出并附加到电子邮件中(使用emailext插件)。卷毛工作正常,并提供适当的构建输出,但我不能存储在变量中以附加到电子邮件中。我正在使用最新的詹金斯版本。

我可以看到有几个简单的sh命令的相关文章,但不适用于curl响应存储。

尝试过的代码:

1。

def consoleOutput = sh(returnStdout: true, script: 'curl http://' + jenkinsUser + ':' + jenkinsUserToken + '@' + jenkinsServer + ':8080/job/' + 'myJob/lastBuild/consoleText').trim()
echo consoleOutput
Run Code Online (Sandbox Code Playgroud)

2。

sh 'curl http://' + jenkinsUser + ':' + jenkinsUserToken + '@' + jenkinsServer + ':8080/job/' + "${env.JOB_NAME}" + '/lastBuild/consoleText; echo $? > status'
def consoleOutput = readFile('status').trim()
Run Code Online (Sandbox Code Playgroud)

3。

def consoleOutput = sh(script: 'curl http://' + jenkinsUser + ':' + jenkinsUserToken + '@' + jenkinsServer + ':8080/job/' + '/myJob/lastBuild/consoleText', returnStatus: true).split("\r?\n")
echo …
Run Code Online (Sandbox Code Playgroud)

bash groovy curl jenkins

3
推荐指数
1
解决办法
4064
查看次数