gpt4 book ai didi

node.js - 如何将环境变量添加到 Azure Devops 管道中

转载 作者:行者123 更新时间:2023-12-02 22:50:13 25 4
gpt4 key购买 nike

我正在为 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

我的问题是:

  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
  • 是否有任何导致更好解决方案的帖子、文章?我正在考虑使用 key 保管库,但我认为它本质上与我必须逐一导入相同。
  • 最佳答案

    管道变量会自动映射到环境变量,因此无需额外工作。只有一个异常(exception)—— secret 。您必须明确映射它们

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

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

    vars.yaml

    variables:
    variableFromTemplate: 'valueFromTemplate'

    build.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)

    enter image description here

    enter image description here

    因此,对于每个步骤,您都需要在 env 部分中定义 secret 。作为解决方法,您可以尝试使用 container jobs并在 container level 上定义环境映射.

    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

    关于node.js - 如何将环境变量添加到 Azure Devops 管道中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64020523/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com