GitHub Actions 中的环境变量

14
我希望将maven镜像版本作为环境变量传递,但是当我尝试访问该env.MAVEN_VERSION变量时,会出现错误。
错误-工作流无效。.github/workflows/Merge.yaml(行:13 image:)未识别的命名值:'env'。在表达式中的位置1处位于:env.MAVEN_VERSION
Yaml文件 ---
on:
  push:
    branches: [ master ]

env:
  MAVEN_VERSION: maven:3.8.6-jdk-11
  
jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: ${{ env.MAVEN_VERSION }}
    steps:
    - name: Env Variable
      run: echo ${{ env.MAVEN_VERSION }}
3个回答

15

env不可用的情况下,可以使用之前作业的输出。 考虑下面的示例

on:
  push:
    branches: [ master ]

env:
  MAVEN_VERSION: maven:3.8.6-jdk-11
  
jobs:
  prepare-image:
    runs-on: ubuntu-latest
    outputs:
      image: ${{ env.MAVEN_VERSION }}

  build:
    runs-on: ubuntu-latest
    needs: [prepare-image]
    container:
      image: ${{ needs.prepare-image.outputs.image }}
    steps:
    - name: Echo output
      run: echo ${{ needs.prepare-image.outputs.image }}

1
这个答案里有错别字吗?它应该是 ${{ needs.prepare-image.outputs.image }} 吗? - Sam Finnigan
5
我不得不在“prepare-image”作业中添加一个占位符步骤。在以下作业中,“steps”未定义步骤,也未在“uses”中调用工作流程:prepare-image - vincentlee
为使此示例运行,您需要添加一个名为 prepare-image 的作业步骤。Translated text: 为使此示例运行,您需要添加一个名为 prepare-image 的作业步骤。 - jigyasu nayyar

2

在执行作业之前,您必须设置环境变量:

name: Deploy to Github pages
'on':
  push:
    branches:
      - main

env:
  MAVEN_VERSION: maven:3.8.6-jdk-11
  API_KEY: ${{secrets.API_KEY}}
  ...

jobs:
  deploy:
...

如果您想从Github actions中添加秘密信息,请前往Github上的以下路径并设置您的秘密信息:

Github > 您的项目 > 设置 > 秘密信息和变量 > actions

Go to the actions

前往操作并点击新建存储库机密以设置环境变量。

Click on New repository secret


-4
当我尝试访问那个时...
这不是错误告诉你的内容。错误信息“Unrecognized named-value: 'env'”告诉你GitHub在第13行无法识别你编写的YAML。这是语法错误。
在GitHub工作流中,您可以在“jobs..env”或“jobs..steps[*].env”中使用“env”。有关详细信息,请参见此处
这个YAML应该可以工作:
on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: ${{ env.MAVEN_VERSION }}
    steps:
      - name: Env Variable
        env:
          MAVEN_VERSION: maven:3.8.6-jdk-11
        run: echo ${{ env.MAVEN_VERSION }}

此外,请注意,当您仅指定容器镜像时,可以省略image关键字

1
您分享的 YAML 文件仍然无法工作,仍然会出现相同的错误。 - Mayur Kadam
尝试访问容器中工作流级别的env对象时: image: ${{ env.MAVEN_VERSION }} - Mayur Kadam
好的,那么将env:MAVEN_VERSION:移动到runs-on:下面。保持env:runs-on:在同一级别。 - jackdbd
仍然收到相同的错误。 - Mayur Kadam

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