我有一个Azure Data Factory Pipeline. 我的触发器每 5 分钟设置一次。有时我的流水线需要超过 5 分钟才能完成它的工作。在这种情况下,触发器再次运行并创建我的管道的另一个实例,并且同一管道的两个实例在我的 ETL 中产生问题。我如何确定我的管道一次只运行一个实例?
如您所见,我的管道有多个实例正在运行
我正在将一些机密从 Azure Key Vault 导入到变量组再到 CI/CD 管道。
我能够使用 Azure Devops UI 从 KeyVault 映射 VariableGroup 中所需的机密。
在我的管道 YAML 中,我能够读取和打印那些作为 AzureKeyVault 机密的 VariableGroup 变量。
trigger:
- dev
# define the VM image
pool:
vmImage: "Ubuntu 16.04"
# define variables to use during the build
variables:
- group: SecretVarGroup # it has keyvault variable 'KV_API_KEY'
- group: PublicVarGroup # it has a variable 'API_CLIENTID'
# define the step to export key to env varaiable
steps:
- script: echo $MYSECRETAPIKEY
env:
MYSECRETAPIKEY: $(KV_API_KEY) …Run Code Online (Sandbox Code Playgroud) 我在一个分支上创建了一个 YAML 管道并从该分支对其进行了测试。我随后将其合并到 master 并删除了该分支。但是原始分支一直作为管道的默认分支出现。如何将默认值更改为“master”?
YAML 中没有任何内容来定义默认分支。这似乎是 Azure Pipelines 中的一些配置项。
我正在寻找是否可以在代理池需求中指定代理列表?在 UI azure 管道中只有两个选项等于和存在。所以,我尝试添加两个需求,但管道只需要第一个需求

yaml中同样如下,
pool:
name: AWS Pool
demands:
- Agent.Name -equals simLin02
- Agent.Name -equals ubuAgent01
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何逻辑方法可以指定 yaml 中的代理机器列表,如下所示或任何其他替代方法,我可以在其中传递代理名称列表(特定代理名称,因为并非池中的所有代理都具有所需的功能)供管道选择。
pool:
name: AWS Pool
demands:
- Agent.Name -in (simLin02, ubuAgent01)
Run Code Online (Sandbox Code Playgroud) 我正在为 Node 应用程序设置 Azure 管道,使用 Jest 来测试 API 和集成。源代码位于 Azure DevOps 中,代码部署在 Azure 门户中。当我运行测试时,它在管道中失败,因为 .env 从未在远程存储库中检查过。通过配置,环境变量在运行时位于 Azure 门户中,因此管道无法真正访问它。
为了让我的测试运行虚拟机,有哪些方法可以访问环境变量或为环境变量创建新位置?
我当前的解决方案(我不知道它是否正确)是创建一个变量组并重新定义我的所有环境变量,以便管道可以读取此处描述的变量:https : //damienaicheh.github.io/azure/devops /2019/09/04/how-to-use-variables-inside-your-azure-devops-builds-en.html
我的问题是:
- env
- API_KEY: $(apiKey)
- MAPS_KEY: $(mapsKey)
- CLIENT_KEY: $(clientKey)
- CLIENT_SECRET: $(clientSecret)
-
-
- and so on...
// looking for something like this
-env: myVariableGroup
Run Code Online (Sandbox Code Playgroud)
azure node.js azure-web-app-service azure-devops azure-pipelines
我有一个 Azure DevOps 管道,其中一个阶段依赖于另外两个阶段。如果以下两项都为真,则此阶段应有条件地运行 -
这是我正在使用的条件。但是,它不起作用,并且当我期望它运行时会跳过该阶段。检查输出变量值的语法取自文档。
condition: >-
and(
in(dependencies.Test_BVT.result, 'Skipped', 'Failed'),
eq(dependencies.Deploy_BVT_UKS_Internal.outputs['Swap_Slots.Output_Slot_Swap_Success_Variable.slotSwapped'], 'true')
)
Run Code Online (Sandbox Code Playgroud)
为了确认,我按如下方式格式化输出变量检查 -
dependencies.<stageName>.outputs['<jobName>.<taskName>.<variableName>']
Run Code Online (Sandbox Code Playgroud)
如果我只是in(dependencies.Test_BVT.result, 'Skipped', 'Failed')用作我的条件,那么如果Test_BVT跳过或失败阶段,则阶段会运行。所以这表明输出变量检查是问题所在,尽管我不能因为日志似乎不再显示如何评估条件。
令人困惑的是,相同的文档显示了以两种不同方式格式化的阶段依赖关系,因此我添加了一个任务来使用两种格式写入输出变量的值。使用的格式stageDependencies产生预期结果,证明输出变量按预期设置。但是,使用的格式dependencies不起作用。
- job: test
variables:
one: $[dependencies.Deploy_BVT_UKS_Internal.outputs['Swap_Slots.Output_Slot_Swap_Success_Variable.slotSwapped']]
two: $[stageDependencies.Deploy_BVT_UKS_Internal.Swap_Slots.outputs['Output_Slot_Swap_Success_Variable.slotSwapped']]
steps:
- script: |
echo $(one)
echo $(two)
displayName: Output SlotSwapped Value
Run Code Online (Sandbox Code Playgroud)
我确实stageDependencies在我的情况下尝试过这种格式,以防万一,但这也失败了。
我在这里遗漏了什么,或者这只是没有按照记录工作?
我在源代码中有这种方式的文件夹结构。f1 f2 f3 f4
我在我的管道中添加了 gitcopy diff 任务,它列出并复制修改到目标文件夹的文件。现在,我想要一个条件循环作为 powershell 脚本来只压缩那些修改过具有特定名称的文件的文件夹,例如,如果 f1 中的文件被修改......我想要执行特定的步骤等等......我怎么能做一个循环?编辑:我以这种方式编写了我的管道。但是它在发布步骤中失败并列出了错误。
none
pool:
vmImage: 'windows-latest'
variables:
FR1PHPPRDAPP1VFlag: false
FR1PHPPRDAPP4VFlag: false
FR1PHPPRDAPP5VFlag: false
FR1PHPPRDSRE1VFlag: false
FR1PHPPRDAPP7VFlag: false
stages:
-stage: Zipping modified folders
steps:
- powershell: |
## get the changed files
$files=$(git diff HEAD HEAD~ --name-only)
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
For ($i=0; $i -lt $temp.Length; $i++)
{
$name=$temp[$i]
echo "this is $name file"
if ($name -like 'FR1PHPPRDAPP1V/*')
{
cd $(Build.ArtifactStagingDirectory)
mkdir Output …Run Code Online (Sandbox Code Playgroud) 我试图了解 Azure 构建管道中两个 nuget restore 命令之间的区别:
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
Run Code Online (Sandbox Code Playgroud)
和
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: '$(solution)'
feedsToUse: 'select'
Run Code Online (Sandbox Code Playgroud)
我试图理解,但在微软页面上,我所看到的是可以同时使用两者 - 我真的找不到任何说明差异的内容。(我也不是很明白这个feedsToUse: 'select'说法)
而且,作为第二个问题,后者和
- task: DotNetCoreCLI@2
inputs:
command: restore
projects: '**/*.csproj'
Run Code Online (Sandbox Code Playgroud)
鉴于该解决方案包含所有 csproj(并且仅包含 csproj)?
azure azure-pipelines-build-task azure-pipelines azure-pipelines-yaml
我正在尝试使用 Azure DevOps 管道来构建 .NET 5(核心)Web 应用程序并将其部署到我的 Azure 应用程序服务。我在文档中找不到任何完整的例子来实现这一点,所以我正在关注这个:
https://github.com/shahedc/NetLearnerApp/blob/main/azure-pipelines.yml.txt
我假设问题出在我的管道中,因为当我直接从 Azure 门户中的部署中心部署时,部署工作正常。以下是我的管道的 3 个相关任务的详细信息:
azure-pipelines ×10
azure-devops ×7
azure ×6
node.js ×2
docker ×1
pipeline ×1
triggers ×1
yaml ×1