【问题标题】:Rename and Replace Placeholder Task in Azure DevOps CI pipeline在 Azure DevOps CI 管道中重命名和替换占位符任务
【发布时间】:2020-10-06 11:34:06
【问题描述】:

我搜索了它,但我找不到任何开箱即用的任务,用于 AzureDevOps 的构建管道来执行以下任务;

  • 文件重命名(在我的例子中是一个 Javascript 文件)
  • 替换占位符,如下所示:#placeholder# 在重命名的 .js 文件中

是否有现成可用的东西来执行此任务?

【问题讨论】:

  • 嗨@OuterSpace,刚刚签到看看这个问题现在是否仍然阻碍你?这个问题有更新吗?
  • 您好,很遗憾我没有时间尝试,因为我参与了不同的项目。希望下周能回来。
  • 好的,如果有任何更新,请随时告诉我,谢谢。

标签: file azure-devops continuous-integration azure-pipelines azure-pipelines-yaml


【解决方案1】:

对于第一部分,您可以简单地从 powershell/script 任务和 rename-item 调用:

Rename-Item -Path "daily_file.txt" -NewName "monday_file.txt"

或mv command 和 bash 任务。

第二部分你可以使用Token replace extension

假设你有文件create-container-instance.sh

az container create -g TheCodeManual --name myapp1 --image #{Image}

在 yaml 中

- task: replacetokens@3
  inputs:
    targetFiles: 'stackoverflow/12-container-instance/create-container-instance.sh'
    encoding: 'auto'
    writeBOM: true
    actionOnMissing: 'warn'
    keepToken: false
    tokenPrefix: '#{'
    tokenSuffix: '}#'
    useLegacyPattern: false
    enableTelemetry: true

对于该标记,#{Image}# 被 Image 变量替换。

这是我的管道:

任务组有替换令牌的任务。

这里是变量声明:

并且令牌已按预期替换:

如果你想使用 powershell 替换令牌,你可以试试这个

function Replace-Tokens
{
  param(
        [string]$inputFile,
        [string]$outputFile,
        [string]$token,
        [string]$tokenValue
    )

    (Get-Content $inputFile) | foreach-object { $_ -replace $token, $tokenValue } | Set-Content $outputFile
    Write-Host "Processed: " + $inputFile
}

所有功劳归Tim Hobson

【讨论】:

  • 感谢您的回答。我会试试。是否还有一些用于替换令牌的 powershell 命令?
  • @OuterSpace 是的,这是可能的。请检查我的编辑。
  • 我尝试了替换变量任务,但即使任务没有给出错误,它也不会替换我的标记:例如 #PORTALAPPBASEURI# 仍然是 #{PORTALAPPBASEUR}I#。在任务中,我将 #{ 作为令牌开始,}# 作为令牌结束。请您指出正确的解决方案吗?
  • 请检查我的编辑和代码here
  • 感谢您提供 yaml 文件。我必须在哪里放置替换占位符的值?我尝试使用与占位符中包含的字符串同名的管道变量,但它不起作用
猜你喜欢
  • 1970-01-01
  • 2021-05-10
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 2020-08-07
  • 1970-01-01
相关资源
最近更新 更多