我有一个与 travis-ci 一起使用的 C++ 项目。现在,我使用 boost.build 构建它,在 travis 上,当我运行单元测试时,我通过 来完成它gdb
,以便在发生崩溃时获得回溯。
为了以gdb
非交互方式执行此操作,我在命令行上像这样调用它:
gdb -return-child-result -batch -ex "run" -ex "thread apply all bt" -ex "quit" --args ./${file}
Run Code Online (Sandbox Code Playgroud)
${file}
我的可执行文件在哪里。
这告诉它:
bt
于所有线程,它在发生崩溃时发出回溯,如果没有崩溃也不会执行任何操作。gdb
退出,并以孩子的退出代码退出。现在我想在 appveyor 上做同样的事情。
Boost 构建似乎在 appveyor VM 中完美地开箱即用,因此向他们致敬。
不过,我在努力弄清楚如何配置cdb
,控制台表弟windbg
。它似乎挂在我的构建日志中。我在网上找到的大多数示例都与检查小型转储文件有关,而不是启动进程并在运行时对其进行调试。
我目前正在这样调用cdb
(来自 appveyor powershell 脚本):
cdb -c "$$><cdb_script.txt" -o $file.fullName
Run Code Online (Sandbox Code Playgroud)
我的cdb_script.txt
样子
.sympath srv*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols;
.reload;
~* k 99;
q
Run Code Online (Sandbox Code Playgroud)
我基本上是从我用谷歌搜索的各种东西拼凑起来的,包括
我真的希望找到更好的文档或关于如何具体做到这一点的例子。
我现在得到的错误是:
Microsoft (R) …
Run Code Online (Sandbox Code Playgroud) 我试图在AppVeyor成功构建之后标记存储库.我已阅读以下资源:
但我不知道如何在AppVeyor环境变量中替换.这是我正在使用的Yaml:
on_success:
- git config --global credential.helper store
- ps: Add-Content "$env:USERPROFILE\.git-credentials" "https://$($env:access_token):x-oauth-basic@github.com`n"
- git tag -a release/$($env:APPVEYOR_BUILD_VERSION)
- git push origin release/$($env:APPVEYOR_BUILD_VERSION)
Run Code Online (Sandbox Code Playgroud)
这会导致AppVeyor构建日志中出现以下错误
git config --global credential.helper store
Add-Content "$env:USERPROFILE\.git-credentials" "https://$($env:access_token):x-oauth-basic@github.com`n"
git tag -a release/$($env:APPVEYOR_BUILD_VERSION)
fatal: 'release/$($env:APPVEYOR_BUILD_VERSION)' is not a valid tag name.
Command exited with code 128
Run Code Online (Sandbox Code Playgroud)
鉴于powershell Add-Content行应该按照示例工作,你应该如何将变量替换为git命令?
我有一个appveyor.yml
包含片段的定义
init:
- ps: $Env:LABEL = If ($Env:APPVEYOR_REPO_TAG) { "Tag" + $Env:APPVEYOR_REPO_TAG_NAME } else { "nontaglabel" }
Run Code Online (Sandbox Code Playgroud)
稍后尝试访问时%LABEL%
,在非标记提交时,它包含纯字符串“Tag”。我希望它包含字符串“nontaglabel”。
在标签提交时,它包含带有标签名称作为后缀的预期字符串 Tag。
如何将环境变量“nontaglabel”分配给非标签提交的环境变量?
我不知道如何为 AppVeyor 构建使用非 ascii 符号。
我的简单SashaAppVeyorEncoding.py
文件:
print('???? ?????????!')
Run Code Online (Sandbox Code Playgroud)
我的简单appveyor.yml
文件:
environment:
matrix:
- PYTHON: "C:\\Python36-x64"
PYTHON_VERSION: "3.6.3"
PYTHON_ARCH: "64"
PIP: "C:\\Python36-x64\\Scripts\\pip"
platform: x64
build_script:
- cmd: "%PYTHON%\\python SashaAppVeyorEncoding.py"
Run Code Online (Sandbox Code Playgroud)
我以 UTF-8 编码保存的两个文件。
如果我SashaAppVeyorEncoding.py
在终端或解释器SublimeREPL 中运行文件,我会得到:
D:\SashaPythonista>python SashaAppVeyorEncoding.py
???? ?????????!
Run Code Online (Sandbox Code Playgroud)
如果我的SashaAppVeyorEncoding.py
文件不包含西里尔符号:
print('Sasha superior!')
Run Code Online (Sandbox Code Playgroud)
AppVeyor 构建成功通过:
Build started
git clone -q --branch=master https://github.com/Kristinita/SashaPythonista.git C:\projects\sashapythonista-7l3yk
git checkout -qf 3a0393a5b9548a5debabebfc5e28d17f3000a768
%PYTHON%\python SashaAppVeyorEncoding.py
Sasha superior!
Discovering tests...OK
Build success
Run Code Online (Sandbox Code Playgroud)
需要帮助找到一种方法来部署我的应用程序的自定义应用程序设置 - 1.使用我的.funproj创建的appsettings.json(vs 2015年的工具)2.appveyor的环境变量3.任何其他技巧
我想要的是避免在门户中手动设置这些东西并让它们受源控制(更好 - 使用部署,例如 - appveyor的安全环境变量)
提前致谢!以下是我目标的门户网站设置示例 -
appveyor的环境变量设置示例 -
environment:
SolutionDir: $(APPVEYOR_BUILD_FOLDER)\
my_var1: value1
my_var2: value2
Run Code Online (Sandbox Code Playgroud)
函数应用程序中的示例用法(run.csx) -
using System;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Messaging;
public static void Run(string input, TraceWriter log)
{
log.Info($"C# manually triggered function called with input: {input}");
log.Info($"This is a custom setting: {GetEnvironmentVariable("my_var1")}");
}
public static string GetEnvironmentVariable(string name)
{
return name + ": " +
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}
Run Code Online (Sandbox Code Playgroud) 我想在windows中安装mlpack,我在github上找到了appveyor.yml脚本.而不是手动跟踪和执行每个步骤,有没有办法在我的笔记本电脑中运行此脚本?比如,类似于bat文件的东西?
我正在尝试通过AssemblyInformationalVersion对我的NuGet包进行版本控制,同时保持AssemblyVersion相同.我在.nuspec中使用tag $ version $.
但是,如果我使用appveyor构建NuGet,它会继续使用AssemblyVersion.
我的appveyor.yaml
:
version: 1.0.{build}
pull_requests:
do_not_increment_build_number: true
configuration: Release
assembly_info:
patch: true
file: '**\AssemblyInfo.*'
assembly_file_version: '{version}'
assembly_informational_version: '{version}'
before_build:
nuget restore
build:
publish_nuget: true
parallel: true
verbosity: minimal
deploy:
provider: NuGet
api_key: <SKIPPED>
Run Code Online (Sandbox Code Playgroud)
我的.nuspec
摘录
<metadata>
....
<version>$version$</version>
....
</metadata>
Run Code Online (Sandbox Code Playgroud)
此外,我不知道它是否相关,但它似乎忽略了我的 <files>
指令并把所有内容都放入lib
而不是analyzers\dotnet\cs
dotnet test GeneticSharp.Domain.UnitTests -f netcoreapp2.0 /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
vstest.console process failed to connect to testhost process after 90 seconds. This may occur due to machine slowness, please set environment variable VSTEST_CONNECTION_TIMEOUT to increase timeout.
Incrementing VSTEST_CONNECTION_TIMEOUT did not solve.
The command runs with no problem on my local Windows and Mac machines.
我在 AppVeyor 上有一个 CMake 项目,我正在尝试将 Linux 版本添加到其中。我的 Windows 构建在脚本中使用 CMake 生成器before_build
来生成使用build: project
.
我想用它build_script:
来执行我的 Linux 构建。但是,当我将构建脚本添加到矩阵时,我收到错误:
生成阶段设置为“MSBuild”模式(默认),但在根目录中找不到 Visual Studio 项目或解决方案文件。如果您不构建 Visual Studio 项目,请将构建模式切换为“脚本”并提供自定义构建命令。
我尝试将build: off
和添加build: Script
到矩阵中,但是这些选项都没有帮助。我是为 Windows 定义脚本并build_script
在两个平台上使用的唯一选择吗?
我的appveyor.yml
文件看起来像这样
version: 'build-{build}-{branch}'
image:
- Visual Studio 2017
- Ubuntu
platform:
- x64
configuration:
- Release
- Debug
environment:
APPVEYOR_YML_DISABLE_PS_LINUX: true
install:
- ps: .\install-dependency.ps1
- sh: ./install-dependency.sh
for:
-
matrix:
only:
- image: Ubuntu
before_build: …
Run Code Online (Sandbox Code Playgroud) 我正在将我们的一个项目转换为使用 Azure DevOps 而不是 AppVeyor 进行 CI。作为构建的一部分,我们使用自定义测试运行器来执行某些测试。
在 AppVeyor 中运行时,我们直接从测试运行器调用 REST API,以通知构建服务器正在运行的测试并更新其状态。这非常简单,如添加测试和更新测试文档的 REST 部分所示,并且使我们能够很好地集成到 AppVeyor 的 UI 中。
我一直在研究如何在 Azure DevOps 中做同样的事情。我找到了 REST API 的一部分,用于添加和更新测试结果。从 API 文档中尚不完全清楚这是否是我在运行管道期间使用的,或者是否适用于其他场景。我已经搜索过其他人试图做同样的事情,但到目前为止没有任何运气。大多数示例都讨论上传测试结果文件,但这似乎是发布测试结果的一种相当间接的方式,特别是因为我想在运行之前注册所有测试,然后在完成时更新其状态。
有没有人有关于在构建期间使用 Azure DevOps API 发布测试结果的任何指示或示例?
详细解决方案:
在梅林梁的回答指导下,我现在已经开始工作了。
步骤 1.首先,我创建了一个新的测试运行,这是我在构建作业(称为 )结束时Build
使用 powershell 脚本执行的:
- powershell: |
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/test/runs?api-version=5.0"
$body = @{
"name" = "IntegrationTests"
"build" = @{
"id" = $env:BUILD_BUILDID
}
"isAutomated" = $TRUE
"state" = "InProgress"
}
$json = $body | …
Run Code Online (Sandbox Code Playgroud) appveyor ×10
.net-core ×1
azure ×1
azure-devops ×1
c++ ×1
git ×1
powershell ×1
python ×1
python-3.6 ×1
python-3.x ×1
tfvc ×1
unicode ×1
windbg ×1
yaml ×1