你如何为 github 操作设置环境变量?

时间:2021-02-04 12:34:33

标签: github github-actions

我尝试了很多不同的版本,但从未设置过环境变量。

这些都行不通。在所有情况下,变量 IMAGE 都不存在。

echo "IMAGE=ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}" >> $GITHUB_ENV
echo ${IMAGE}

env:
    DEPLOYMENT_NAME: my-deployment
echo "IMAGE=ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}" >> $GITHUB_ENV
echo $IMAGE 

env:
    DEPLOYMENT_NAME: my-deployment
echo "IMAGE=ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}" >> $GITHUB_ENV
echo ${{ env.IMAGE }}

env:
    DEPLOYMENT_NAME: my-deployment

编辑

更多的实验。我试着像这样设置环境变量。

env:
  IMAGE1: ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
  IMAGE2: "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}"

这会设置变量 - 尽管我也希望能够在如上所述的作业中设置它们。但是,以不同的方式打印它们总是会导致打印变量名称 ${GITHUB_REPOSITORY}${GITHUB_SHA} 而不是它们的内容。

env:
  DEPLOYMENT_NAME: my-deployment
  IMAGE1: ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
  IMAGE2: ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
...
echo $IMAGE1
echo $IMAGE2
echo ${IMAGE1}
echo ${IMAGE2}
echo "$IMAGE1"
echo "$IMAGE2"
echo "${IMAGE1}"
echo "${IMAGE2}"

ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}
ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA}

所以尽管这是一些进步,但我仍然想知道如何在作业/运行中设置变量以及如何打印变量的内容而不是它们的名称。

1 个答案:

答案 0 :(得分:0)

通过 job.<job_id>.envjob.<job_id>.steps[*].env 设置环境变量的语法与 Bash 环境变量语法略有不同。不过,您应该能够访问 env: 声明中的 context 对象。将所有这些放在一起为整个作业设置环境变量:

jobs:
  job1: # or whatever you want to name your job
    env:
      DEPLOYMENT_NAME: my-deployment
      IMAGE1: ghcr.io/${{ github.repository }}:${{ github.sha }}
      IMAGE2: ghcr.io/${{ github.repository }}:${{ github.sha }}

另见https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenv