Github Eylemleri: Ortam değişkenini biçimlendirilmiş komut çıktısına ayarlama

Aug 18 2020

README'mi bir Github Eylemi ile bir komut satırı programının yardım metniyle güncellemeye çalışıyorum. Aşağıdaki çıktıyı üreten bir komut dosyası olan main.js var:

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

Şimdi, Github eylemimde bir ortam değişkeni ayarlamaya çalışıyorum, ancak yeni satırları yazdırdığımda kaybediyorum. İşte benim .github / iş akışlarım / 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 Yazdır" adımı aşağıdaki çıktıyı üretir (yeni satırların kaybına dikkat edin):

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İşteki son adımın BENİOKU'nun içeriğini güncelleyen kodu çalıştırdığına dikkat edin; gördüğü giriş, "HELP_TEXT Yazdır" adımının çıktısı ile aynıdır.

Biçimlendirmeyi koruyacak şekilde bir ortam değişkenini saklayabileceğim bir yol var mı?

Yanıtlar

1 Samira Aug 18 2020 at 19:52

GitHub'da tobiasfaust tarafından sağlanan hile ile çözülen sürüm gövdesi olarak dosya içeriğini kullanmaya çalışırken benzer bir sorun yaşandı :

- 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, yeni satırların düzgün bir şekilde saklanmasını sağlayarak env değişkenini eylem parametresi olarak kullanılabilir hale getirir.