标签: azure-pipelines

在 Azure DevOps 中重用 PowerShell 脚本

我有一个 PowerShell 脚本,我想在多个构建管道中重复使用该脚本。我的问题是,有没有办法可以在项目或组织范围内“存储”或“保存”我的 PowerShell 脚本,以便我可以在其他构建管道中使用它?如果是这样,怎么办?我似乎找不到办法做到这一点。不过这会非常方便。

azure-devops azure-pipelines

7
推荐指数
1
解决办法
3129
查看次数

如何在 Azure Pipelines YAML 构建定义中接收修订

我使用 Azure Pipelines (Azure DevOps) 创建了一个新版本,它运行得非常好。

通常,您可以$(Rev:.r)在构建中获取修订版本。不幸的是,似乎该变量在构建步骤中没有被替换/设置。唯一可以使用它的地方是name:YAML 文档中的属性。

现在,我将其设置在名称中,并在某些 PowerShell 中提取它,如果您可以通过环境变量获取它,则不需要这样做。

如何在新版本中获取修订版(例如)(在 YAML 文档中的属性$(Rev)之外)?name:

(构建代理在 Docker 内部本地运行 - 但这不应该影响上述内容)

yaml azure-devops azure-pipelines

7
推荐指数
1
解决办法
5263
查看次数

在 Azure Pipelines 上安装程序

所以我已经使用 Azure Pipelines 设置了一些 CI,一切都很好,除了我想添加一些内存错误检查,就像我目前在 Travis 上所做的那样。在 Travis 中,我可以写:

addons:
  apt:
    packages:
- valgrind
Run Code Online (Sandbox Code Playgroud)

它会为我安装 valgrind 。我一直无法在 Azure Pipelines 上找到等效的功能,但必须有一种方法可以做到这一点。

我已经徒劳地搜索了他们的文档,任何帮助将不胜感激。

azure azure-pipelines

7
推荐指数
1
解决办法
7164
查看次数

如何在不同的Azure DevOps团队项目中重用yaml模板?

我正在创建一个集成管道,该管道应该执行依赖项目的构建管道(作为验证构建)。所有这些项目都托管在 Azure DevOps 中各自的团队项目中。为了调用各自的管道,我想到了使用repository资源。

根据此处此处的文档,应该可以从不同存储库执行 YAML 模板。这些示例展示了如何使用repositoryGitHub 托管存储库的资源,但不太清楚如何连接到 Azure Repos 上托管的不同团队项目。当托管在同一团队项目中时,可以按照此答案中的描述来完成。

我试过这个:

resources:
  repositories:
  - repository: MyRepoAlias
    type: git
    name: MyRepo
    ref: 'refs/heads/master'

    # Adding/omitting an endpoint doesn't matter
    endpoint: 'MyRepo Service Connection'

pool:
  vmImage: 'windows-2019'

steps:
  # Calling template on the reference repository
  - template: '.\Templates\RunBuild.yml@MyRepoAlias'
Run Code Online (Sandbox Code Playgroud)

根据记录,参考存储库存在于同一 AzD 组织内。如果我将“端点”属性添加到端点也没关系。在本例中,我使用基于令牌的身份验证和完全访问 PAT 将其链接到“Azure Repos/Team Foundation Server”类型的服务连接。

问题:

  • 有人知道如何在 YAML 中从不同的团队项目引用 Azure Repos 托管的 Git 存储库吗?
  • 也许有一些替代方法可以在 AzD 中将管道链接在一起?

git azure-devops azure-pipelines

7
推荐指数
1
解决办法
6301
查看次数

Azure DevOps 构建中出现“在 .gitmodules 中找不到子模块路径的 url”错误

存储库(“网站”)有一个子模块(“模板”)。该子模块在存储库的目录中被引用。目标是使用 Azure DevOps 管道一起构建存储库和子模块。但是,Azure DevOps 构建会引发以下错误:

  • fatal: No url found for submodule path '<repo directory AKA "website">/<submodule directory AKA "template">' in .gitmodules
  • [error]Git submodule update failed with exit code: 128

根据对.gitmodule文件的调整,还会引发此错误:

  • fatal: no submodule mapping found in .gitmodules for path '<repo directory AKA "website">/<submodule directory AKA "template">'

这个问题与 Stack Overflow 上提出的其他问题类似,但不同之处在于 Azure DevOps 构建中的默认初始步骤是签出分支中的文件。因此脚本(如git rm --cached <pathtomodule>)不能首先运行。

“网站”和“模板”存储库位于同一个 Azure DevOps 项目中。

我尝试了两种方法都没有成功。两者均基于 Microsoft 文档。这是因为我不清楚同一项目的子模块是否可以在不提供显式凭据的情况下包含在存储库中。

  1. 通过用户界面:

    • “清理选项”:“所有构建目录”
    • “签出子模块”:True
    • 分支包含 .gitmodule 文件:True
  2. 通过 PowerShell 任务中的 git 命令: …

git azure azure-pipelines

7
推荐指数
1
解决办法
2万
查看次数

Azure DevOps:如何从发布管道中的 PowerShell 脚本构建 Azure 管道中检索构建工件?

我已经发布了一个构建工件,发布到 $(Build.ArtifactStagingDirectory)/drop,工件名称为“some_sidebar”,工件发布位置是 Azure Pipeline。

如果发布任务中只有 PowerShell Skript,如何在发布管道中检索该工件?

这是代码特定部分:

$path = ".\_some_sidebar\drop"
#$path = $(Build.Repository.LocalPath)
$SPFolderName = "Style Library/_some_sidebar";

# Upload template list
$status = "Uploading template list to Location: " + $SPFolderName
Write-Host $status
$te = Add-PnPFile -Path $path"\some_sidebar.js" -Folder $SPFolderName -Checkout
Set-PnPFileCheckedIn -Url $te.ServerRelativeUrl
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 Uploading template list to Location: Style Library/_some_sidebar
2020-01-16T09:51:20.5062033Z Add-PnPFile : Local file was not found.
2020-01-16T09:51:20.5062546Z At D:\_work\_temp\6d682160-e8a7-4c56-ab30-7ff8c40f2958.ps1:51 char:7
2020-01-16T09:51:20.5062832Z + $te = Add-PnPFile -Path $path"\some_sidebar.js" -Folder $SPFolderName  ...
Run Code Online (Sandbox Code Playgroud)

我假设 azure 管道中的构建工件路径是虚拟机中的某个路径...但我不知道如何在 shell 脚本内指定该路径,或者该路径是什么...?

powershell release azure artifact azure-pipelines

7
推荐指数
1
解决办法
1万
查看次数

避免在新分支上的首次构建中包含所有工作项

我们的 CI/CD 目前已建立,因此我们会在 PR 完成后不断生成安装程序。然而,这是我们的内部管道。当我们准备好发布时,我们会打开一个稳定分支(发布分支),在其中执行各种操作,例如轻按二进制文件中的开关,以便它们不再将它们呈现为内部测试二进制文件,而是常规生产二进制文件。

问题出在 WorkItem 跟踪中。发布分支上的第一个构建显示为包含自第 0 天以来包含的每个工作项,甚至将构建添加到工作项中。但我们只对标记 PR 中针对新发布分支的工作项感兴趣,而不是直到分支创建点为止的整个历史记录。

以下是我们如何拓展业务的概述。“4.9.6”仅包含 1 个 PR(2 个提交和 1 个合并提交),master 分支继续前进:

分公司概况

这是在发布分支上触发的第一个 CI 构建:

第一个 CI 构建于 4.9.6 分支

由于某种原因,它似乎只包含了最新的 50 个提交(我相信它刚刚达到上限),这也导致了一长串“链接的工作项”。然而,在“4.9.6”分支的生命周期中,唯一的 PR 中只包含 1 个工作项。

是否有可能以某种方式避免这种情况,或者只是解决该问题的一种方法?

azure-devops azure-pipelines

7
推荐指数
0
解决办法
133
查看次数

无法运行 Azure 管道“缺少任务。管道引用了名为“缓存”的任务

我正在使用 azure_pipeline.yaml 配置设置 Github 项目的分支。这似乎对社区中的其他人都适用,但是当我设置管道时,它给了我以下异常:

A task is missing. The pipeline references a task called 'Cache'. This usually indicates the task isn't installed, and you may be able to install it from the Marketplace: https://marketplace.visualstudio.com. (Task version 2, job 'compile_ci_build', step ''.)
A task is missing. The pipeline references a task called 'Cache'. This usually indicates the task isn't installed, and you may be able to install it from the Marketplace: https://marketplace.visualstudio.com. (Task version 2, job 'test_ci_build', step ''.)
A …
Run Code Online (Sandbox Code Playgroud)

azure azure-devops azure-pipelines

7
推荐指数
1
解决办法
2万
查看次数

如何同步 Github 和 Azure DevOps 存储库?

我有两个存储库,第一个位于 Azure DevOps 上,第二个位于 GitHub 上。我想更新 GitHub 存储库,以便在两个存储库上拥有相同的代码。如何在不手动复制源代码的情况下做到这一点?

github azure-devops azure-pipelines

7
推荐指数
2
解决办法
2万
查看次数

仅当某些文件发生更改时才运行 Azure Pipelines 作业

我有一个包含 Dockerfile 和其他代码的存储库。无论发生什么变化,我们都希望运行某些步骤,但只想在发生变化docker build时运行作业。**/Dockerfile

我已经查看了条件文档表达式文档,但我不清楚如何(如果可能的话)如何组合这些文档或以其他方式实现所需的结果。

我意识到在bash(例如git rev-list...git diff --name-only <previous_commit>..HEAD | grep <pattern>)中这是可能的,但这有点麻烦,并且它仍然在 Azure Pipelines 中显示作业已运行,只是短路了。理想情况下,它会(适当地)表明该作业被全部跳过。

我还意识到 Docker 部分和代码部分可以位于具有单独构建触发器的单独存储库中,但如果可能的话,希望将它们放在同一个存储库中。

git azure-pipelines azure-repos azure-pipelines-yaml

7
推荐指数
2
解决办法
1万
查看次数