如何将环境变量添加到 Azure Devops 管道中

2024-03-19

我正在为 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 https://damienaicheh.github.io/azure/devops/2019/09/04/how-to-use-variables-inside-your-azure-devops-builds-en.html

我的问题是:

  1. 它是否正确?这里存储的任何变量都与构建无关,它们也不是运行命令的输入,而是源代码中需要我的所有环境变量,以便我可以在虚拟机中进行测试(例如:base_url、apiKeys 等)。
  2. 如果这是正确的,我怎样才能避免重写和重新分配管道中的所有值?我可以获取整个变量组并且源代码可以解释吗?我想避免这样
- env
  - API_KEY: $(apiKey)
  - MAPS_KEY: $(mapsKey)  
  - CLIENT_KEY: $(clientKey)  
  - CLIENT_SECRET: $(clientSecret)
  - 
  -
  - and so on... 


// looking for something like this
   -env: myVariableGroup
  1. 任何导致帖子、文章更好的解决方案吗?我正在考虑使用密钥保管库,但我认为它本质上与我必须逐一导入相同。

管道变量会自动映射到环境变量,因此不需要额外的工作。只有一个例外——秘密。您必须明确映射它们

steps:
- script: echo $MYSECRET
  env:
    MYSECRET: $(Foo)

因此,声明、组或模板中的所有值都映射到环境变量

变量.yaml

variables:
  variableFromTemplate: 'valueFromTemplate'

构建.yaml

variables:
  - group: PROD
  - name: variableFromDeclaration
    value: 'valueFromDeclaration'
  - template: vars.yaml  

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: env | sort
- script: | 
    echo $VARIABLEFROMDECLARATION
    echo $VARIABLEFROMGROUP
    echo $VARIABLEFROMTEMPLATE
- pwsh: |
    
    $url = "https://dev.azure.com/thecodemanual/$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)?api-version=5.1"
    $build = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:MY_SECRET"}
    Write-Host "Pipeline = $($build | ConvertTo-Json -Depth 100)"

    $status = $build.status
    Write-Host $status
  name: initial
  env: 
    MY_SECRET: $(System.AccessToken)

因此,对于每一步,您都需要定义秘密env部分。作为解决方法,你我尝试使用集装箱工作 https://learn.microsoft.com/en-us/azure/devops/pipelines/process/container-phases?view=azure-devops并定义环境映射.

resources:
  containers:
  - container: string  # identifier (A-Z, a-z, 0-9, and underscore)
    image: string  # container image name
    options: string  # arguments to pass to container at startup
    endpoint: string  # reference to a service connection for the private registry
    env: { string: string }  # list of environment variables to add
    ports: [ string ] # ports to expose on the container
    volumes: [ string ] # volumes to mount on the container
    mapDockerSocket: bool # whether to map in the Docker daemon socket; defaults to true
    mountReadOnly:  # volumes to mount read-only - all default to false
      externals: boolean  # components required to talk to the agent
      tasks: boolean  # tasks required by the job
      tools: boolean  # installable tools like Python and Ruby
      work: boolean # the work directory
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将环境变量添加到 Azure Devops 管道中 的相关文章

  • 如何在node.js中分离TCP套接字消息

    我正在尝试使用 TCP 套接字 并且对消息如何到达我的应用程序感到困惑 看来他们已经分手了 有人知道我怎样才能最好地将他们重新组合在一起吗 所有消息均以换行符分隔 r n var stream net createConnection po
  • 使用命令式绑定在 Cosmos DB 中添加文档

    我正在使用 Azure Functions 并且想要使用强制绑定 https learn microsoft com en us azure azure functions functions reference csharp impera
  • 如何避免在 webpack 生产构建中重复模块“bn.js”?

    我的应用程序使用了 webpack 4 不知何故 bn js包在生产构建中占用了大量资源 从图中可以看出 它占用了594 22KB 数据 有没有办法让1个文件bn js对于所有依赖于的包bn js 发生这种情况可能是因为您的依赖项都需要不同
  • 在承诺中运行同步函数

    我是 JS 和异步操作的新手 在使用express的nodeJS路由器中 我使用mongoose从mongo聚合了一些数据 该数据是每隔 15 分钟从不同站点收集的天气数据 我使用猫鼬聚合管道处理数据 以获取每小时数据并按每个站点进行分组
  • 如何使用 node.js 请求模块使用我自己的证书进行 SSL 调用?

    我正在使用 node js 和此请求模块对另一台服务器进行 HTTP 调用 https github com mikeal request https github com mikeal request 效果很好 我现在需要修改此代码以使用
  • 如何从 SQL Azure V11 升级到 V12?

    我正在使用 V11 SQL Azure 在此阶段 我不想升级包含我当前所有 QA 和生产数据库的现有 SQL 服务器 从逻辑上讲 为 V12 创建新的 SQL Server 设置似乎更安全 然后以某种方式将 V11 数据库实例从我的 V11
  • 使用react_on_rails gem 创建演示项目时的节点问题

    我正在尝试遵循这个tutorial https shakacode gitbooks io react on rails content docs tutorial html使用 gem react on rails 创建一个虚拟项目 我想
  • 保留子网范围内的私有IP地址

    我有一个 Arm 模板 其中有一个带有 2 个子网的 vNet 我正在尝试使用静态专用 IP 地址将网卡部署到其中之一 它曾经是动态的 并且运行良好 现在它是静态的 我已经设置了我想要网卡拥有的IP 但是当我部署时 它说IP无效 我尝试更改
  • DeprecationWarning:当我将脚本移动到另一台服务器时,由于安全和可用性问题,Buffer() 已被弃用

    当脚本移动到其他服务器时出现错误 节点 15707 DEP0005 DeprecationWarning 由于安全和可用性问题 Buffer 已被弃用 请改用 Buffer alloc Buffer allocUnsafe 或 Buffer
  • 让Webpack不捆绑文件

    所以现在我正在使用一个原型 我们使用 webpack 用于构建 tsx 文件和复制 html 文件 和 webpack dev server 之间的组合来提供开发服务 正如您可以假设的那样 我们也使用 React 和 ReactDOM 作为
  • 如何在 NodeJS 中允许表单数据

    我最近创建了一个接受文件的 API 我正在尝试使用 Postman 测试 API 如果我使用发出帖子请求x wwww form urlencoded身体类型 一切正常 我得到了所有预期的数据 唯一的问题是它不允许发送文件 如果我使用form
  • 如何查询和过滤 Firebase 实时数据库 [重复]

    这个问题在这里已经有答案了 我想从数据库中获取所有人员 其中名字和姓氏由用户输入给出 到目前为止 这是我的代码 admin database ref persons orderByChild Firstname equalTo firstN
  • 如何使用 Passport-saml 向 TestShib IdP 提供 SP 元数据?

    我有一个node js脚本 使用护照 saml https www npmjs com package passport saml 模拟 SP 我的目标是将其连接到此TestShib IdP https idp testshib org i
  • 节点异步循环 - 如何使该代码按顺序运行?

    我知道有几个关于此的帖子 但根据我发现的那些帖子 这应该可以正常工作 我想在循环中发出 http 请求 并且不希望循环迭代 直到触发请求回调 我正在使用异步库 如下所示 const async require async const req
  • 如何运行指定 node.js 版本 8 的 eb init?

    I run eb init并部署 我得到了node js版本6 如何在执行时指定我想要node js版本8eb init命令 这是一个有趣的问题 我很想知道是否有更简单的方法 但我是这样实现的 确定最新的SolutionStack名称如所列
  • 无法使用 Jade 模板包含相对路径文件

    当我尝试将文件包含在同一文件夹中时 收到以下错误 the filename option is required to use include with relative paths 有两个文件 索引 jade 项目列表 jade cont
  • XRDP 突然无法连接到 Azure VM

    The RDP doesnt connect to the Azure Linux VM suddenly the error is Password failed error problem connecting This is the
  • 如何在 MongoDB v3.0.5 中创建用户

    我需要在 mongodb 中为我的数据库创建一个用户 但似乎我无法让它工作 我已经在我的 Windows 7 机器上安装了 mongoDb v3 0 5 根据本文 https docs mongodb org v3 0 tutorial a
  • 如何从 Visual Studio Code API 打开浏览器

    我只是在探索一种从用于开发扩展的 Visual Studio Code API 打开默认浏览器的方法 以下是我的代码 var disposable vscode commands registerCommand extension brow
  • 从 node.js 创建对 AWS ES 实例的有效签名请求

    我试图找到一个示例 说明如何连接到 Node js 中的 AWS ES 实例 然后通过一个简单的请求访问 ES 集群 我正在尝试使用elasticsearch节点包 https www npmjs com package elasticse

随机推荐