Github 작업 : 형식화 된 명령 출력으로 환경 변수 설정

Aug 18 2020

Github Action을 사용하여 명령 줄 프로그램의 도움말 텍스트로 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 }}

"Print 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 인쇄"단계의 출력과 동일합니다.

서식이 유지되도록 환경 변수를 저장할 수있는 방법이 있습니까?

답변

1 Samira Aug 18 2020 at 19:52

GitHub에서 tobiasfaust가 제공 한 트릭으로 해결 된 릴리스 본문으로 파일 콘텐츠를 사용하려고 할 때 비슷한 문제 가 있었습니다 .

- 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 변수를 작업 매개 변수로 사용할 수 있도록합니다.