rcmdnk's blog

20230205_jobsummary_200_200

この前、 GitHub Actionsで行ったtestのcoverageの結果を別ブランチにpushする 方法を書きましたが、 もっと気軽にActionsのジョブ概要欄にそれを出力する方法について。

GitHub Actionsのジョブの概要

GitHub Actionsではワークフローの出力として、各ジョブからの出力をActionsのページに出せるようになっています(2022年5月位から)。

各ジョブごとに$GITHUB_STEP_SUMMARYという変数が定義され、これがジョブ概要の内容を持つファイルを示しています。

なので、stepの中で、

1
echo "This is summary!" >> $GITHUB_STEP_SUMMARY

のようにファイルに書き込んで上げるとこれがジョブ概要欄に表示されます。

ファイルなので、もし途中でクリアしたいのであれば

1
echo "" > $GITHUB_STEP_SUMMARY

のように>>ではなく>で上書きしてしまえばそこでリセットされます。

coverageの出力をジョブの概要欄に出力する

下でやったことをcoverageブランチのREADMEではなくジョブの概要欄に出すようにします。

test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
name: test

on:
  push:
    branches-ignore:
      - "coverage"
  pull_request:

jobs:
  test:
    strategy:
      matrix:
        os: [macos-12, ubuntu-latest]
        python-version: ['3.10', '3.9']
    runs-on: ${{ matrix.os }}
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v3
        with:
          persist-credentials: false
          fetch-depth: 0
      - uses: actions/setup-python@v4
        with:
          python-version: ${{matrix.python-version}}
      - name: Install poetry
        run: pip install poetry
      - name: Poetry setup
        run: poetry install
      - name: Run test
        id: pytest
        continue-on-error: true
        run: poetry run pytest --durations=0 --junitxml=pytest.xml --cov-report=term-missing:skip-covered --cov=src tests/ | tee pytest-coverage.txt
      - name: Pytest coverage comment
        if: ${{ steps.is_main.outputs.flag == '1' }}
        id: coverageComment
        uses: MishaKav/pytest-coverage-comment@main
        with:
          hide-comment: true
          pytest-coverage-path: ./pytest-coverage.txt
          junitxml-path: ./pytest.xml
      - name: Write job summary
        id: check_status
        run: |
          echo -e ${{ steps.coverageComment.outputs.summaryReport }} >> $GITHUB_STEP_SUMMARY

こんな感じ。

前回から変わったのは最後のWrite job summaryのところで、ここでcoverageのまとめを$GITHUB_STEP_SUMMARYに書き出しています。

これでこんな感じの出力になります。

20230205_jobsummary.png

例: test · rcmdnk/python-action-test@186ecf0

こちらの方が楽だし、各ジョブごとに全部載せることも簡単に出来るのですぐにやるならこっちの方が良さそうです。

ただし、このジョブページは時間が経つと消えてしまうので、履歴を持っておきたいとか残した置きたい場合には ブランチに書き込んだ方が良いかとは思います。

Sponsored Links
Sponsored Links

« GitHub Actionsで他のレポジトリのworkflowを動かす GitHub Actionsでworkflow_dispatchのinputsの値をpushイベントなどでも使う »

}