Actions Github: définition de la variable d'environnement sur la sortie de commande formatée

Aug 18 2020

J'essaye de mettre à jour mon README avec le texte d'aide d'un programme de ligne de commande avec une action Github. J'ai un script, main.js qui produit la sortie suivante:

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

Maintenant, j'essaye de définir une variable d'environnement dans mon action Github, mais je perds les nouvelles lignes lorsque je l'imprime. Voici mon .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 }}

L'étape "Imprimer HELP_TEXT" produit la sortie suivante (notez la perte de nouvelles lignes):

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

Notez que la dernière étape du testtravail consiste à exécuter le code qui met à jour le contenu de mon README; l'entrée qu'il voit est la même que la sortie de l'étape "Print HELP_TEXT".

Existe-t-il un moyen de stocker une variable d'environnement de sorte que la mise en forme soit préservée?

Réponses

1 Samira Aug 18 2020 at 19:52

J'ai eu un problème similaire en essayant d'utiliser le contenu du fichier comme corps de publication, résolu avec l' astuce fournie par tobiasfaust sur 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 s'assurera que les nouvelles lignes sont correctement stockées, rendant la variable env utilisable comme paramètre d'action.