GitHub Actions의 set-output에 복수행의 표준 출력을 대입하는 경우는 개행 코드를 이스케이프 해 줄 필요가 있다

4361 단어 GitHubActions

결론



set-output에 복수행의 표준 출력을 대입하는 경우는 개행 코드를 이스케이프 해 두는 것
hoge="${hoge//$'\n'/\\n}"
echo "::set-output name=hoge::$hoge"

set-output이란?



GitHub Actions에서는 set-output 명령을 이용하여 출력 파라미터에 값을 대입할 수 있습니다.echo "::set-output name=NAME::VALUE" 에서 NAMEVALUE 를 대입할 수 있습니다.
이용할 때는 ${{ steps.ID.outputs.NAME }} 로 이용합니다. id 값을 지정해야 하므로 대입 시 반드시 id 를 설정하십시오.
예를 들면 다음과 같이 사용합니다.
steps:
  - id: test_id
    name: test_name
    run: echo "::set-output name=test::hoge"

  - run: echo "${{ steps.test_id.outputs.test }}"

이렇게 하면 ${{ steps.test_id.outputs.test }} 에는 hoge 가 대입됩니다.

어떤 시간에 사용합니까?



나중 단계에 값을 전달하고 싶을 때 등에 사용합니다. 예를 들어 A 단계에서 명령 실행을 수행하고 B 단계에서 A 단계에서 실행한 명령의 표준 출력을 slack에 통지할 때와 같이 사용하고 싶습니다.

복수행의 표준 출력이라면 1행째 밖에 대입되지 않는다


steps:
  - id: test_id
    name: test_name
    run: |
      user_list=$(cat /etc/passwd)
      echo $user_list
      echo "::set-output name=std_out::$user_list"

  - run: echo "${{ steps.test_id.outputs.std_out }}"

위의 매니페스트는 OS 사용자 목록을 출력합니다. 다중 사용자가 있기 때문에 출력 매개 변수에는 여러 줄의 표준 출력이 할당되어야하지만 실제로는 첫 번째 줄 만 할당됩니다.





줄 바꿈 코드 이스케이프



출력 파라미터에 대입하기 전에 개행 코드를 이스케이프 하는 것으로 복수행을 출력 파라미터에 대입할 수가 있습니다.
steps:
  - id: test_id
    name: test_name
    run: |
      user_list=$(cat /etc/passwd)
      # エスケープ処理
      user_list="${user_list//$'\n'/\\n}"
      echo $user_list
      echo "::set-output name=std_out::$user_list"

  - run: echo "${{ steps.test_id.outputs.std_out }}"



이쪽은 GitHub의 서포트 케이스에 오르고 있습니다만, 이스케이프 처리를 넣어라가 공식 회답이 되고 있습니다. . 일일이 이스케이프 처리를 넣는 것은 번거롭고, 사용하기 어렵다고 생각하므로, 수정해 주었으면 좋겠네요.
htps : // 기주 b. 이런 식으로 ty / t / se t - t t t t t?

좋은 웹페이지 즐겨찾기