Githubアクション:環境変数をフォーマットされたコマンド出力に設定する
Aug 18 2020
Githubアクションを使用してコマンドラインプログラムのヘルプテキストでREADMEを更新しようとしています。次の出力を生成するスクリプトmain.jsがあります。
>> 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
ここで、Githubアクションで環境変数を設定しようとしましたが、印刷すると改行が失われます。これが私の.github /ワークフロー/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の印刷」ステップでは、次の出力が生成されます(改行が失われることに注意してください)。
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
ジョブの最後のステップは、READMEの内容を更新するコードを実行していることに注意してください。表示される入力は、「HELP_TEXTの印刷」ステップからの出力と同じです。
フォーマットが保持されるように環境変数を保存する方法はありますか?
回答
1 Samira Aug 18 2020 at 19:52
ファイルコンテンツをリリース本文として使用しようとしたときに同様の問題が発生し、GitHubのtobiasfaustによって提供されたトリックで解決されました:
- 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は、改行が適切に格納されていることを確認し、env変数をアクションパラメーターとして使用できるようにします。