【问题标题】:Github Actions: Setting environment variable to formatted command outputGithub Actions:将环境变量设置为格式化的命令输出
【发布时间】:2020-12-07 01:04:29
【问题描述】:

我正在尝试使用带有 Github 操作的命令行程序的帮助文本来更新我的 README。我有一个脚本 main.js,它产生以下输出:

>> node main.js -h
Generate README from template

Main options

  -i, --input-file-name string
  -o, --output-file-name string
  -k, --keys string[]
  -v, --values string[]
  -h, --help

现在,我尝试在我的 Github 操作中设置一个环境变量,但是当我打印出来时我丢失了换行符。这是我的 .github/workflows/main.yml:

name: Test Action

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v2
    - name: Setup Node
      uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - name: Get Help Text
      run: |
        echo ::set-env name=HELP_TEXT::$(node main.js -h)
    - name: Print HELP_TEXT
      run: |
        echo "$HELP_TEXT"
    - name: Regenerate README.md
      uses: ./
      with:
        key: help
        value: ${{ env.HELP_TEXT }}

“打印 HELP_TEXT”步骤产生以下输出(注意换行符丢失):

Generate README from template Main options -i, --input-file-name string -o, --output-file-name string -k, --keys string[] -v, --values string[] -h, --help

请注意,test 作业的最后一步是运行更新我的 README 内容的代码;它看到的输入与“打印 HELP_TEXT”步骤的输出相同。

有什么方法可以存储环境变量以保留格式吗?

【问题讨论】:

  • 如果你把命令替换双引号 "$(node main.js -h)" 怎么办?不引用它会使其受到分词的影响,即用空格替换换行符。
  • 我试过这个,但它最终没有将命令的结果存储在HELP_TEXT变量中。

标签: javascript github environment-variables github-actions


【解决方案1】:

尝试使用文件内容作为发布主体时遇到类似问题,已通过trick provided by tobiasfaust on GitHub 解决:

- run:   |
         body=$(cat NEWS.md)
         body="${body//'%'/'%25'}"
         body="${body//$'\n'/'%0A'}"
         body="${body//$'\r'/'%0D'}"
         echo "MOD_RELEASE_BODY=$body" >> $GITHUB_ENV
  shell: bash

Bash magick 将确保正确存储换行符,使 env 变量可用作操作参数。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 2023-03-17
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
相关资源
最近更新 更多