Echo Github Action 环境变量

dry*_*ick 28 github github-actions

我正在尝试深入研究 GitHub 操作,等等 .ylm 文件,并了解我想回显一些环境变量的过程,例如${{ github.repository }}或或类似或任何其他的${{ github.repository_owner }}事件秘密,并在输出中我'${{ secrets.GITHUB_TOKEN }}我得到了***

有没有办法强制输出显示实际值而不是星号?

开发者ylm

name: Dev

on:
  workflow_dispatch:
  push:
    branches:
      - dev

env:
  BUILD_TYPE: core
  DEFAULT_PYTHON: 3.8

jobs:
  any_name:
    runs-on: ubuntu-latest
    steps:
      - name: Any Name Bash Test Step
        shell: bash
        run: |
          echo "GH_REPO: $GH_REPO"
          echo "GH_REPO_O: $GH_REPO_O"
          echo "GH_T: $GH_T"
        env:
          GH_REPO: ${{ github.repository }}
          GH_REPO_O: ${{ github.repository_owner }}
          GH_T: ${{ secrets.GITHUB_TOKEN }}
Run Code Online (Sandbox Code Playgroud)

输出

Run echo "GH_REPO: $GH_REPO"
  echo "GH_REPO_O: $GH_REPO_O"
  echo "GH_T: $GH_T"
  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
  env:
    BUILD_TYPE: core
    DEFAULT_PYTHON: 3.8
    GH_REPO: ***/core
    GH_REPO_O: ***
    GH_T: ***
GH_REPO: ***/core
GH_REPO_O: ***
GH_T: ***
Run Code Online (Sandbox Code Playgroud)

cản*_*yễn 42

name: This is an example

on: [pull_request]

jobs:
  one:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context
        env:
          JOB_CONTEXT: ${{ toJson(job) }}
        run: echo "$JOB_CONTEXT"
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJson(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Dump runner context
        env:
          RUNNER_CONTEXT: ${{ toJson(runner) }}
        run: echo "$RUNNER_CONTEXT"
      - name: Dump strategy context
        env:
          STRATEGY_CONTEXT: ${{ toJson(strategy) }}
        run: echo "$STRATEGY_CONTEXT"
      - name: Dump matrix context
        env:
          MATRIX_CONTEXT: ${{ toJson(matrix) }}
        run: echo "$MATRIX_CONTEXT"

      - name: Show default environment variables
        run: |
          echo "The job_id is: $GITHUB_JOB"   # reference the default environment variables
          echo "The id of this action is: $GITHUB_ACTION"   # reference the default environment variables
          echo "The run id is: $GITHUB_RUN_ID"
          echo "The GitHub Actor's username is: $GITHUB_ACTOR"
          echo "GitHub SHA: $GITHUB_SHA"
Run Code Online (Sandbox Code Playgroud)


Gui*_*urd 17

你不能显示secrets出来echo,否则会出现巨大的安全问题(即使使用env变量作为中介)。

但是,这适用于您使用的其他变量,您的情况的问题似乎与语法有关。您应该使用 run:echo "$GITHUB_REPOSITORY"run: echo "$GITHUB_REPOSITORY_OWNER"直接在工作流程中查看它们。

注:${{ github.repository }}${{ github.repository_owner }}也有效。


提示:您可以通过工作流程中使用的 Github 上下文来识别可以通过 echo 显示的大多数变量。run: echo "$GITHUB_CONTEXT"

例子:

例子

图片参考

  • 您可以使用:`run: echo '${{ toJSON(github) }}'`来转储上下文。 (5认同)
  • 答案和提示非常有用,解决了我的问题,不仅仅是在文档链接之后,我还找到了将上下文信息打印到日志文件的示例(https://docs.github.com/en/actions/参考/context-and-expression-syntax-for-github-actions#example-printing-context-information-to-the-log-file)谁显示我猜测所有变量。谢谢! (3认同)
  • 这不再起作用了 (2认同)
  • 您是否也在步骤级别使用了“env: GITHUB_CONTEXT: ${{ toJSON(github) }}”?如果没有它,它可能无法工作(如上面共享的*drypatrick* 链接所示)。 (2认同)

Eli*_*l58 7

如果变量打印为***(主要用于秘密变量),您可以使用将结果放入文件的脚本,并将文件上传到工件,如下所示:

name: "Save secrets variables"

on: [push, pull_request]

jobs:
  one:
    runs-on: ubuntu-latest
    steps:
    - name: "Echo in file"
      env:
        SECRETS_VARS: ${{ toJson(secrets) }}
      run: echo "$SECRETS_VARS" > "secrets.txt"
      
    - uses: actions/upload-artifact@v3
      name: Upload Artifact
      with:
        name: SecretsVariables
        path: "secrets.txt"
Run Code Online (Sandbox Code Playgroud)