Tindakan Github: Menyetel variabel lingkungan ke keluaran perintah yang diformat
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 test
pekerjaan 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
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.