如何在Github Actions工作流程YAML中引用部署环境名称?

5

我希望在Github的Actions工作流YAML中访问部署环境名称。以下是一个示例:

jobs:
  example:
    runs-on: ubuntu-latest
    environment: "foobarbaz"
    ...

    steps:
      ...
      - name: Terraform Check Format
        id: terraform-fmt
        # what should I use here instead of "????" to get "foobarbaz"?
        run: terraform -chdir=terraform/stacks/${{ ???? }}/${{ matrix.stack }} fmt -check
3个回答

0

由于jobs上下文仅在可重用工作流中可用,因此其中一种工作选项可以使用env

name: question-74910046
# https://dev59.com/fn0QtIcB2Jgan1znidx4

on:
  workflow_dispatch:
  
env:
  env_name: production-74910046
  env_url: https://dev59.com/fn0QtIcB2Jgan1znidx4

jobs:
  test:
    runs-on: ubuntu-latest

    environment: 
      name: $env_name
      url: $env_url
    
    steps:
      - name: context information
        run: echo '${{ toJSON(env) }}'

这对我没用。来自 $env_name 的值未传递到作业环境名称。 - Pablo Castro
1
这对我没用。$env_name的值没有传递给作业环境名称。 - Pablo Castro

0

谢谢你的回答,但是当我使用 github.jobs.example.environment 时,我得到了一个空字符串。也许这是他们那边的一个 bug?根据文档,我会标记它为已解决。 - Joohwan
@Joohwan,对我来说这也是一个空字符串。我也尝试了“needs”上下文,但答案似乎不正确。根据文档,创建了一个“deployment”对象,但它只能通过GH API访问,而不能从作业内部访问。我已经转储了github、job和needs上下文,但环境不存在。 - Greg Biles
@jessehouwing - 你是真的见过这个工作,还是你相信这个基于文档链接的? - Greg Biles
我在我的测试中也无法使其正常工作。 - jessehouwing

0
你可以使用environment键来引用env,像这样:
    test:
        environment: testing
        runs-on: ubuntu-latest
        name: Test
        env:
            PORT: ${{ vars.PORT }}
        steps:
            - uses: actions/checkout@v4
            - uses: actions/setup-node@v4
              with:
                node-version: ${{ vars.NODE_VERSION }}
                cache: 'npm'
            - run: npm ci
            - run: npm test

在我的情况下,我创建了一个名为testing的环境,其中包含一个名为PORT的变量,我也想将其暴露给进程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接