Github操作:将环境变量设置为格式化的命令输出

时间:2020-08-17 20:58:38

标签: javascript github environment-variables github-actions

我正在尝试使用Github Action使用命令行程序的帮助文本来更新自述文件。我有一个脚本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作业的最后一步正在运行更新我的自述文件内容的代码;它看到的输入与“ Print HELP_TEXT”步骤的输出相同。

是否可以通过某种方式存储环境变量以保留格式?

1 个答案:

答案 0 :(得分:1)

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

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

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