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

问题描述

我正在尝试使用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”步骤的输出相同。

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

解决方法

尝试将文件内容用作发布主体时遇到类似的问题,已通过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变量可用作操作参数。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...