Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins/Git:从分支构建最新版本&x2B;从任何提交中手动生成_Git_Jenkins - Fatal编程技术网

Jenkins/Git:从分支构建最新版本&x2B;从任何提交中手动生成

Jenkins/Git:从分支构建最新版本&x2B;从任何提交中手动生成,git,jenkins,Git,Jenkins,我正在尝试为Jenkins建立一个Git项目,以便: 每当将更改推送到中央存储库时,它将从匹配模式(origin/master、origin/feature/*、origin/hotfix/*等)的分支构建 开发人员和测试人员可以为他们想要的任何修订触发构建,这些修订被指定为构建参数,即标记名、分支名或提交散列。该作业有其他参数,我们偶尔会希望使用默认值以外的内容创建构建 我有一个。通过在Git服务器上设置post接收脚本并在Jenkins中添加多个分支说明符,可以正常工作 为了也执行2,我添加

我正在尝试为Jenkins建立一个Git项目,以便:

  • 每当将更改推送到中央存储库时,它将从匹配模式(origin/master、origin/feature/*、origin/hotfix/*等)的分支构建

  • 开发人员和测试人员可以为他们想要的任何修订触发构建,这些修订被指定为构建参数,即标记名、分支名或提交散列。该作业有其他参数,我们偶尔会希望使用默认值以外的内容创建构建

  • 我有一个。通过在Git服务器上设置post接收脚本并在Jenkins中添加多个分支说明符,可以正常工作

    为了也执行2,我添加了一个额外的构建参数
    GitRef
    ,然后添加了一个额外的分支说明符
    $GitRef
    。手动启动构建之后,无论参数设置为什么,每次都将保持从同一提交/分支进行构建。如果我删除了所有其他分支说明符,那么手动构建将按预期工作。但是钩子触发的构建只能从origin/master(默认值
    $GitRef
    )构建


    在不为每个项目创造两个工作岗位的情况下,我试图实现的目标是可能的吗?如果是这样,我需要做什么才能让它工作?

    不要将
    $GitRef
    用作另一个分支说明符,只需将其用作没有默认值的字符串变量即可。然后,作为Jenkins中构建阶段的第一步,使用脚本检查该值是否已设置:

    #!/bin/bash
    if [ -n $GitRef ]
    then
      echo "Manually specified reference found. Building $GitRef"
      git checkout $GitRef
    else  
      echo "No explicit branch specified, building $GIT_BRANCH" 
    fi
    
    此时,按照普通方式运行构建(例如Maven)。构建将运行您希望编译的任何branch/tag/commit,如果它不存在,Jenkins应该通过构建失败来处理git签出。

    如果安装,您可以允许用户使用特定的提交ID、分支或标记启动参数化构建


    然后,您可以将参数的默认值设置为
    **
    ,默认情况下,Jenkins将在分支上构建最新的提交。

    您对这个主题感兴趣吗?我从未尝试过让它工作。我们现在没有手动触发构建。我看了一下插件代码,但还是没能完全理解它。据我所知,它没有在正确的位置解析宏,这就是为什么它没有按照我的要求进行操作