Actions Github: définition de la variable d'environnement sur la sortie de commande formatée
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 test
travail 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
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.