Github Actions: การตั้งค่าตัวแปรสภาพแวดล้อมเป็นเอาต์พุตคำสั่งที่จัดรูปแบบ

Aug 18 2020

ฉันพยายามอัปเดต README ของฉันด้วยข้อความช่วยเหลือของโปรแกรมบรรทัดคำสั่งด้วย 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งานกำลังเรียกใช้รหัสที่อัปเดตเนื้อหาของ README ของฉัน อินพุตที่เห็นจะเหมือนกับเอาต์พุตจากขั้นตอน "พิมพ์ HELP_TEXT"

มีวิธีใดบ้างที่ฉันสามารถจัดเก็บตัวแปรสภาพแวดล้อมเพื่อให้การจัดรูปแบบคงอยู่ได้

คำตอบ

1 Samira Aug 18 2020 at 19:52

มีปัญหาที่คล้ายกันเมื่อพยายามใช้เนื้อหาไฟล์เป็นตัวเผยแพร่แก้ไขด้วยเคล็ดลับที่จัดทำโดยtobiasfaustบน 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 สามารถใช้เป็นพารามิเตอร์การดำเนินการ