小编Yas*_*ash的帖子

如何在另一个jenkins管道B中调用jenkins管道A.

我有两个Jenkins管道,比方说管道-A和管道-B.我想在管道B中调用管道-A.我怎样才能做到这一点?

(管道-A是管道-B的子集.管道-A负责做一些可以在管道-B中重复使用的例行程序)

我在我的机器上安装了Jenkins 2.41.

jenkins jenkins-pipeline jenkins-2

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

我怎么知道jenkins管道的哪个阶段失败了

在我的Jenkins管道中,我通常使用post声明性函数向我发送电子邮件,导致管道失败.

post函数的简单语法如下:

post {
    failure {
        mail to: 'team@example.com',
             subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
             body: "Something is wrong with ${env.BUILD_URL}"
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的电子邮件中,我还想提一下管道失败的哪个阶段(假设管道有5到6个阶段).我怎样才能做到这一点?任何帮助深表感谢.

上述要求的扩展将是向用户提供(失败的阶段)的实际错误日志,也作为失败通知电子邮件的一部分.

想法是,当用户收到来自jenkins的失败通知时,他应该知道管道的哪个阶段与错误日志一起失败.

提前致谢.

jenkins jenkins-plugins jenkins-cli jenkins-pipeline

13
推荐指数
1
解决办法
5294
查看次数

如何将发布时间通知发送到Jenkins管道中的多个接收方

我正在设置一个Jenkins管道,我想将帖子构建通知发送给多个接收器.我无法找到如何设置"CC",有人可以帮助.

我的管道的一个例子如下:

pipeline {
    agent any
    stages {
        stage('No-op') {
            steps {
                sh 'ls'
            }
        }
    }
    post {
        failure {
        mail to: 'team@example.com',
             subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
             body: "Something is wrong with ${env.BUILD_URL}"
    }
}
Run Code Online (Sandbox Code Playgroud)

}

以上示例对我来说工作正常,但我想修改以下行以向多人发送通知(最好在CC中):

mail to: 'team@example.com',
Run Code Online (Sandbox Code Playgroud)

我正在使用Jenkins ver.2.41

jenkins jenkins-pipeline

5
推荐指数
3
解决办法
5162
查看次数

如何获取管道中特定阶段的状态

我们如何获取 Jenkins 管道中前一阶段的状态。例如:我的示例管道如下:

pipeline {
    agent
    {
        node {
                label 'master'
                customWorkspace "${env.JobPath}"
              }
    }

    stages 
    {
        stage('Start') {
            steps {
                sh 'ls'
            }
        }

        stage ('set_env') {
            steps {
                // script to set environment.
            }
        }

        stage ('Build') {
            steps {
                // script to build.
            }
        }

        stage ('Send_mail') {
            steps {
                // script to send mail.
            }
        }

        stage('End') {
            steps {
                sh 'ls'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何获取管道中特定阶段的状态。例如:我想根据“构建”阶段是成功还是失败来做出某些决定。

是否有任何跟踪每个阶段状态的环境变量,或者有一个 Jenkins REST API 可以帮助我实现这一目标。

谢谢!

jenkins jenkins-cli jenkins-pipeline

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

如何在Perl脚本中调用函数(在shell脚本中定义)

我有两个脚本,即shell_script.shperl_script.pl.

shell_script.sh :它具有函数定义,当从Perl脚本调用时,它将以批处理模式在Linux上执行某些命令.

perl_script.pl :它具有要实现的代码和逻辑,用于调用等.

的内容shell_script.sh文件是为下:

bash-4.2$ cat shell_script.sh

的内容perl_script.pl文件是为下:

#!/bin/bash

# Function Definitions
func_1 ()
{
  echo "function definition"
}

func_2 ()
{
  echo "function definition"
}
Run Code Online (Sandbox Code Playgroud)

我如何调用perl脚本中的函数func_1()(在其中定义shell_script.sh)perl_script.pl

unix linux shell perl external

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

如何在Jenkins Lockable Resource插件中获取锁定资源的名称

我正在使用 Jenkins Lockable Resources 插件来决定将哪个服务器用于声明性管道中的各种构建操作。我已经设置了我的可锁定资源,如下表所示:

Resource Name       Labels

Win_Res_1           Windows
Win_Res_2           Windows
Win_Res_3           Windows
Lx_Res_1            Linux
Lx_Res_2            Linux
Lx_Res_3            Linux
Run Code Online (Sandbox Code Playgroud)

我想锁定一个label,然后获取相应的锁定的名称resource

我正在编写以下代码,但无法获得所需的值 r

int num_resources = 1;
def label = "Windows"; /* I have hardcoded it here for simplicity. In actual code, I will get ${lable} from my code and its value can be either Windows or Linux. */

lock(label: "${label}", quantity: num_resources)
{
    def r = org.jenkins.plugins.lockableresources.LockableResourcesManager; /* I know this is incomplete but unable …
Run Code Online (Sandbox Code Playgroud)

groovy locking jenkins-plugins jenkins-groovy jenkins-pipeline

4
推荐指数
1
解决办法
2349
查看次数

如何并行运行 perl 脚本

如何每次都使用不同的输入参数并行运行 perl 脚本:

插图:

perl example.pl param1 param2
perl example.pl param3 param4
Run Code Online (Sandbox Code Playgroud)

我想example.pl用不同的输入运行 perl 脚本2 次或更多次paramsX。每次它都应该并行运行。

示例算法如下:

my $params='1,2,3,4,5';   
my @all_params = split(/\;/, $params);
foreach my $entry (@all_param)
    {
      perl example.pl $entry
    }
Run Code Online (Sandbox Code Playgroud)

我想为每个循环并行运行 perl 脚本。

parallel-processing perl

3
推荐指数
2
解决办法
3303
查看次数

将Jenkins管道中的交互式输入读取到变量

在Jenkins管道中,我想向用户提供一个选项,以便在运行时提供交互式输入。我想了解如何读取groovy脚本中的用户输入。请求帮助我们提供示例代码:

我指的是以下文档:https : //jenkins.io/doc/pipeline/steps/pipeline-input-step/

编辑1:

经过一些试验后,我已经开始工作了:

 pipeline {
    agent any

    stages {

        stage("Interactive_Input") {
            steps {
                script {
                def userInput = input(
                 id: 'userInput', message: 'Enter path of test reports:?', 
                 parameters: [
                 [$class: 'TextParameterDefinition', defaultValue: 'None', description: 'Path of config file', name: 'Config'],
                 [$class: 'TextParameterDefinition', defaultValue: 'None', description: 'Test Info file', name: 'Test']
                ])
                echo ("IQA Sheet Path: "+userInput['Config'])
                echo ("Test Info file path: "+userInput['Test'])

                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,我能够回显(打印)用户输入参数:

echo ("IQA Sheet Path: "+userInput['Config'])
echo ("Test Info …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-pipeline jenkins-2

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

如何从提交消息中获取提交哈希 (ID)

我想知道特定提交消息的提交 ID(哈希值)。通常,提交消息是唯一的,因此不应该存在使用同一消息进行多次提交的情况。

以下命令提供了有关提交的完整详细信息,但我只对提交 ID(哈希)感兴趣。我怎么知道呢?

输入:

git log --grep="....commit message that you want to search..."
Run Code Online (Sandbox Code Playgroud)

输出:

commit a5s6d7f8g9cde4100ce92c87c3cff83e8112345de
Author: Authors Name <name@domain.com>
Date:   Tue Feb 2 09:22:29 2048 +0000

    commit-message: This is the message that i search to get commit hash
Run Code Online (Sandbox Code Playgroud)

预期输出:

a5s6d7f8g9cde4100ce92c87c3cff83e8112345de
Run Code Online (Sandbox Code Playgroud)

git github gitlab

2
推荐指数
1
解决办法
2619
查看次数