GitHub Actions で直接 ${{ toJSON(hoge) }} する際に「半角スペース + #記号」が含まれていると syntax error になる

結論

どういうことかというと、以下のような場合です。

      - name: First step
        id: my_variables
        run: |
          echo "::set-output name=hoge::FOO #12345"
      - name: Second step
        run: |
          echo "${{ toJSON(steps.my_variables) }}"

このステップを含んだ Action を実行すると次のようなエラーになります。

... line 6: syntax error near unexpected token `}'

どうすればいいか

公式ドキュメントにもあるように、一度環境変数に格納するとよいです。先ほどの YAML を書き直してみます。

      - name: First step
        id: my_variables
        run: |
          echo "::set-output name=hoge::FOO #12345"
      - name: Second step
        env:
          STEPS_CONTEXT: ${{ toJson(steps.my_variables) }}
        run: |
          echo "${STEPS_CONTEXT}"

このように書き直して実行すると正しく実行されます。

背景

とある変数に uname -a の結果を代入したところ、この現象に遭遇しました。そのときの uname -a の出力は以下の通りで、今回の現象の条件を見事に満たしていました。

Linux docker-desktop 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

やや関連記事

qiita.com

Powered by はてなブログ