Tindakan Github: Menyetel variabel lingkungan ke keluaran perintah yang diformat

Aug 18 2020

Saya mencoba memperbarui README saya dengan teks bantuan program baris perintah dengan Tindakan Github. Saya punya skrip, main.js yang menghasilkan output berikut:

>> 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

Sekarang, saya mencoba untuk mengatur variabel lingkungan dalam tindakan Github saya, tetapi saya kehilangan baris baru ketika saya mencetaknya. Inilah .github / workflows / main.yml saya:

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 }}

Langkah "Cetak HELP_TEXT" menghasilkan keluaran berikut (catatan kehilangan baris baru):

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

Perhatikan bahwa langkah terakhir dalam testpekerjaan ini adalah menjalankan kode yang memperbarui konten README saya; masukan yang dilihatnya sama dengan keluaran dari langkah "Cetak HELP_TEXT".

Adakah cara untuk menyimpan variabel lingkungan sedemikian rupa sehingga pemformatannya dipertahankan?

Jawaban

1 Samira Aug 18 2020 at 19:52

Memiliki masalah serupa saat mencoba menggunakan konten file sebagai badan rilis, diselesaikan dengan trik yang disediakan oleh tobiasfaust di 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 akan memastikan bahwa baris baru disimpan dengan benar, membuat variabel env dapat digunakan sebagai parameter tindakan.