我的团队使用VSTS进行Web项目的CI/CD.为了保持代码分离,我们为前端和后端使用了两个单独的存储库.
提出两个问题:
我有一个脚本使用VSTS api生成两个不同版本之间的提交日志,但是来自VSTS api的响应将注释返回为截断.对于我的目的,这是日志中最重要的部分,因此希望从api中完整地收到评论.
回复如下:
我显然可以遍历每个提交ID并通过为每个ID调用api来获取完整的注释,但是由于这个脚本将成为我们发布过程的一部分,我希望它尽可能快,所有这些额外的调用将会为脚本添加不必要的时间.
从我所看到的,在获取提交列表时无法获得完整的评论,但我希望有人可以帮我这个?
谢谢
我正在使用代码优先迁移编写.NET核心和实体框架核心应用程序.
我希望能够使用Visual Studio Team Services构建和发布定义将其部署到Azure Web App
我希望能够使用脚本将数据库迁移作为发行定义的一部分运行
dotnet ef database update
Run Code Online (Sandbox Code Playgroud)
我通过发布定义中的命令提示符操作完成了此操作
但是我总是收到消息
No executable found matching command "dotnet-ef"
Run Code Online (Sandbox Code Playgroud)
我已经尝试确保此命令与.cproj文件在同一目录中运行
我也试过跑一个
dotnet restore
Run Code Online (Sandbox Code Playgroud)
作为以前的命令提示符任务,这会产生错误
The folder 'C:\a\r1\a\Drop\s\src\xxxxx' does not contain a project to restore even though it does.
Run Code Online (Sandbox Code Playgroud)
是否有人尝试过代码优先迁移作为团队服务发布定义步骤的一部分?
我的另一个选择是将迁移作为Web应用程序本身的一部分运行,但我希望通过Release进程运行它,而不是在Application中运行它.
是否可以在无头模式下使用Chrome驱动程序在Visual Studio Team Services构建/发行版中的托管代理上运行Selenium C#测试?
我看到了矛盾的信息,表明这是目前不可能的。此用户语音提示似乎建议在托管代理上预先安装Chrome:
当前设置
作为我的测试设置(以代码形式)的一部分,我表示我希望Chrome驱动程序以无头模式运行,并且在VS的本地实例中运行时也是如此。
例:
var options = new ChromeOptions();
options.AddArgument("headless");
options.AddArgument("disable-gpu");
var driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)
当测试作为VSTS中的发行版定义的一部分运行时,将引发以下错误:
2018-02-20T13:21:10.7954002Z Error Message:
2018-02-20T13:21:10.7954156Z unknown error: cannot find Chrome binary
2018-02-20T13:21:10.7954340Z (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.14393 x86_64)
2018-02-20T13:21:10.7954487Z Stack Trace:
2018-02-20T13:21:10.7954620Z System.InvalidOperationException: unknown error: cannot find Chrome binary
2018-02-20T13:21:10.7955947Z (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.14393 x86_64)
2018-02-20T13:21:10.7956136Z at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
2018-02-20T13:21:10.7956387Z at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
2018-02-20T13:21:10.7956557Z at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
2018-02-20T13:21:10.7956729Z at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) …Run Code Online (Sandbox Code Playgroud) c# selenium google-chrome azure-devops azure-pipelines-release-pipeline
当我在VSTS上运行发布定义时,我需要更详细的日志.如何在所有版本定义或版本定义的任务上启用详细日志?
我正在尝试从几个任务中创建一个任务组,这些任务将一些应用程序部署到 Azure AppService 中等等。我的想法是使用这个 Task Group 来部署到不同的环境中(即 Dev、QA、UAT、Prod)。但是,我无法将 Azure 订阅转换为变量,该变量当前是进程参数。有解决办法吗?
我有一个Visual Studio 2017解决方案,同时具有ASP.NET Web应用程序项目(称为UI)和Azure WebJob项目(称为WebJobs)。我已经将两者都配置为从Visual Studio(右键单击,发布)中部署到Azure到同一App Service。该解决方案还配置为每当我推送到VSTS时就构建。
我想设置VSTS,以便在成功构建后也部署两个项目,但是我遇到了问题。
我的理解是,要实现这一点,我需要创建一个发布定义,该发布定义通过添加到管道中的“部署Azure应用服务”任务链接到我的构建定义。我尝试了此操作,但出现错误,因为在artifacts文件夹中找到多个.zip文件,建议我使过滤器更具体,因此我将“ Package or folder”选项从$(System.DefaultWorkingDirectory)/**/*.zip更改为$(System.DefaultWorkingDirectory)/**/UI.zip。这可以解决该错误,但现在显然只在部署我的应用程序(UI)。
我的下一步是尝试为WebJob项目创建一个单独的环境,并将其指定$(System.DefaultWorkingDirectory)/**/WebJobs.zip为Package。现在,两种环境都“成功”部署,但它破坏了我的应用程序,我很确定它已经在应用程序顶部部署了WebJob(我不知道如何确认这种信念...)。
我注意到,当您向发行版定义添加环境并选择模板时,在“ Azure App Service部署”下显示:“将应用程序部署到Azure App Services。从Windows,Linux,Containers,Function Apps或Web应用Web Jobs ”,但是在选择此模板时,“应用程序类型”下拉列表中未列出WebJob!
我在网上找到了一些有关从VSTS部署WebJob的资源,但是它们都已过时,并且所描述的选项不再与VSTS中的当前选项匹配。
大卫·埃博(David Ebbo)和陈星辰(starian chen)的以下回答都解决了我的问题。
首先,您必须右键单击Visual Studio中的Web App项目,然后选择“ 添加”>“现有项目”作为Azure WebJob,然后按照向导进行操作。接下来,您必须确保VSTS部署任务通过更新软件包或文件夹路径过滤器来确保仅找到一个要部署的.zip软件包,因此它仅找到Web应用程序的.zip软件包。就我而言$(System.DefaultWorkingDirectory)/**/UI.zip。
非常感谢@DavidEbbo和@starianchen的帮助!
azure azure-webjobs azure-web-app-service azure-devops azure-pipelines-release-pipeline
EPERM: operation not permitted, stat 'D:\MyFilePathHere在我的发布定义中提取选项之前,我经常但不经常遇到使用“提取文件”任务和清理目标文件夹的任务。它发生在多台机器上,但已通过重新部署自行解决。对将来防止这种情况的建议?
编辑:我将本地代理配置为作为网络服务运行,并且我已经让网络服务完全控制提取文件所在的文件夹。我在两台不同的机器上运行了发布定义。发布将在一个上成功,在另一个上失败。
Found: 1 files to extract:
C:\agent\_work\r2\a\App-CI\App\App.zip
Cleaning destination folder before extraction: D:\FilePathHere
Error: EPERM: operation not permitted, stat 'D:\FilePathHere'
##[error]EPERM: operation not permitted, stat 'D:\FilePathHere
##[section]Finishing: Install New UI Files
我有一个构建和管道设置来构建一个解决方案,然后.exe通过 ftp 上传将完成的文件上传到我的网站。一切正常,我已将其设置为使用其中的文件创建一个名为$Build.BuildNumber(例如 20181218.4)的新文件夹.exe,以便我可以保留已完成构建的存档。
现在我想写BuildNumber一个文本文件坐在根目录下的某个地方有一个静态的路径/ URL所以我programms的可以读取该文件,并获得最新的版本号,并下载最新的.exe。
如何使用 Azure DevOps Pipelines 自动化创建此类文本文件的过程?
azure azure-devops azure-pipelines azure-pipelines-release-pipeline
我已经按照教程将.net核心Web应用程序构建到docker映像,发布到azure容器注册表,然后我设置了我的VSTS Release模板以将容器部署到app服务.
这一切似乎都有效,我可以在容器注册表中查看我的图像,部署似乎成功 - 但是当导航到应用服务站点时,我得到的只是HTTP 503 - 服务不可用.
应用程序服务已启动,我可以通过bash在我的文件系统中看到部署 - 所以我想知道我是否遗漏了什么?
我的任何模板中都没有'startup'命令,我想知道它是否可以这样?
该网站从VS2017完美运行,包括通过docker进行调试,所以它真的只是...如何让App Service实际加载和执行图像?
谢谢!
编辑
除此之外,我还可以访问docker诊断日志,声称"图像操作系统"窗口"无法在此平台上使用".
我的基本映像是microsoft/aspnetcore:2.0映像,它在我的开发环境中的linux容器上运行得非常好......但似乎无法在Linux App Service中运行?
aspnetcore:2.0基本映像不适合Linux应用服务吗?
azure docker azure-web-app-service azure-pipelines-release-pipeline azure-container-registry
azure-pipelines-release-pipeline ×10
azure ×5
azure-devops ×5
c# ×1
docker ×1
logging ×1
selenium ×1