【问题标题】:Teamcity perform GIT CheckoutTeamcity 执行 GIT Checkout
【发布时间】:2017-03-22 20:55:20
【问题描述】:

目前正在执行构建的团队城市代理没有安装“git”,它的 linux 机器。我不能在那里安装 git。

teamcity 中是否有本地方法可以在构建步骤中支持以下内容:

git checkout -b %dynamicversion%

【问题讨论】:

  • TeamCity 确实支持 git。文档 here 和 here 可能会有所帮助。
  • 你想达到什么目的?根据teamcity中的参数在代理上创建新分支?在代理 AFAIK 上没有本地方法。顺便说一句,有办法绕过没有 git,也许你可以在代理上使用 JGit。 (我认为 TeamCity 服务器使用它)或者创建一个代理端插件。

标签: git build teamcity


【解决方案1】:

在 VCS Root 设置中,您可以设置分支规范。 分支规范将允许您运行特定的分支(即:+:feature/*)

然后您的项目顶部会出现一个组合框,用于选择您的项目。

如果要构建的分支依赖于代码中的某些内容,您可以使用 API 进行多项配置、依赖项和触发。

构建 1

在 <default> 上构建,您可以在其中运行分支。 teamcity 上的 API 调用,它将调用 Build 2,并将参数 branch 设置为指定值:

# RunSpecificBranch.ps1
# PowerShell: Run Build Configuration on a specific branch
Param(
     [Parameter(Mandatory=$true)][string]$branchName,
     [Parameter(Mandatory=$true)][string]$BuildToRun
)
Begin
{
    $TCUrl = "http://<teamcityURL>/httpAuth/app/rest/buildQueue"
    Execute-HTTPPostCommand $TCUrl "<build branchName=""$branchName""><buildType id=""$buildToRun""/></build>"
}

并在您的构建步骤中执行此脚本,例如:RunSpecificBranch.ps1 -branchName: feature/ME/AwesomeFeature -buildToRun: Project_SubProject_SpecificBuildOnBranch。

在运行构建配置Project_SubProject_SpecificBuildOnBranch之前,将由服务器完成分支的签出

构建 2

指定在如下指定的多个分支上运行,您将在此处执行您需要的自定义逻辑。

【讨论】:

  • 谢谢,但要求是从 pom 文件中剥离一个版本,并从当前执行的构建中执行 git checkout 作为构建步骤。
【解决方案2】:

回答您的问题。你需要确保 git 包安装在 linux 盒子中,为了做到这一点,你可以做以下事情。

我猜你在 Team city 代理中使用轨道来运行 linux。

如果您使用 makefile 或脚本,您可以添加一个调用 prepare-dev 或“anymeaningfull_name”的目标,您可以尝试安装 git 包作为先决条件。

git checkout -b %dynamicversion%

据我所知,您想签出具有 buildversion 标签的最新分支。

您可以创建 ts.native.ini 文件添加依赖包,

suite: precise
mirror: http://xx.archive.ubuntu.com/ubuntu
components: main restricted universe
packages: mtools devscripts gcc make git libgnutls28-dev libboost-test-dev sudo e2fsprogs
prepare: make prepare-dev
preparefiles: Makefile

完成此操作后,您可以添加目标。您可以在脚本中使用它。

#!/bin/sh

set -e

if [ "$(whoami)" != "root" ]; then
    echo "Please run as root"
    exit 1
fi
git clean -xfd
trap "$TRACKS -u" EXIT

_mkdebs()
{
    export TRACKS_INIFILE=ts.trusty(native).ini 
    $TRACKS -b -- make mkdebs CCACHE_DIR=$CCACHE_DIR
}

您可以在 teamcity 代理中添加 ts.native.ini 跟踪文件,以便它安装所需的所有先决条件。

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多