如何使用GitVersion环境变量

安东·西兹科夫(Anton Sizikov)

我有一个我以前通过AppVeyor构建的项目。构建顺序如下:

  1. 安装并运行GitVersion
  2. 建立项目
  3. 使用评估的版本号创建软件包。

最后一步是通过PowerShell命令完成的:

nuget pack path/tofile.nuspec -Version (get-item env:GitVersion_InformationalVersion).Value

如您所见,该版本取自GitVersion定义的环境变量。现在,我想将构建迁移到FAKE构建脚本。

我在脚本中定义了这些依赖项。

"Clean"
  =?> ("GitVersion", Choco.IsAvailable)
  ==> "RestorePackages"
  ==> "BuildApp"
  ==> "CreatePackage"
  ==> "Default"

Git版本步骤很简单。

Target "GitVersion" (fun _ ->
    "gitversion.portable" |> Choco.Install id
    Shell.Exec("gitversion","/l console /output buildserver" ) |> ignore
)

我在日志中看到GitVersion设置了变量。

添加环境变量。name ='GitVersion_SemVer'值='1.1.1-xxx'

下一步是创建程序包。

Target "CreatePackage" (fun _ ->
    TraceEnvironmentVariables()
    let version = 
        match buildServer with 
        | AppVeyor -> environVar "GitVersion_SemVer"
        | _ ->  baseVersion + "-local"
    NuGet (fun p -> 
        {p with
            OutputPath = packagingDir
            WorkingDir = "."
            Version = version
            Publish = false }) 
            nuspecFileName
)

我正在打印所有定义的变量,然后尝试通过读取变量并将其分配给来获取版本version

不幸的是,version当我运行构建时,它保持为空。添加TraceEnvironmentVariables()方法调用后,我看不到GitVersion定义的任何变量都未显示在输出中。

正如约翰·帕尔默(John Palmer)和布丁莫里斯(dustinmoris)所说,该过程首先Shell.Execute将所有变量设置为过程级变量。

有没有一种使用Shell.Execute方法可以使流程设置全局作用域环境变量?

UPD

解决方法是,我在AppVeyor.yml配置文件中添加了额外的步骤

init:
  - git config --global core.autocrlf input
install: 
  - choco install gitversion.portable -y
before_build:
  - ps: gitversion /l console /output buildserver /b (get-item env:APPVEYOR_REPO_BRANCH).Value 

build_script:
  - cmd: build.bat BuildApp

在这种情况下,变量是在全局范围内设置的,我可以在构建脚本中获取并使用它们。

显然,PowerShell以不同的方式启动GitVersion。我想,我应该以某种方式在构建脚本中模仿它。

因此,我的问题仍然是相同的,即如何在脚本中使用GitVersion作为目标并获得版本号。

ey

您看过Fake GitVersionHelper吗?http://fsharp.github.io/FAKE/apidocs/fake-gitversionhelper.html

#r "packages/FAKE/tools/FakeLib.dll"
open Fake
open Fake.GitVersionHelper

let version = GitVersion (id)

printfn "FullSemVer %s" version.FullSemVer
printfn "NuGetVersionV2 %s" version.NuGetVersionV2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章