方針
Github Actionsでテスト結果を別ブランチに保存するには以下の機能が必要です。
- Github Actions flowで、別々のブランチからプルしてくる。
- テスト結果を生成する
- テスト結果をブランチにコミット、プッシュする。
Github Actions flowで、複数のブランチをプルする方法
リファレンスに記述してあるように、2つのブランチからチェックアウトします。
一つはプルリクのブランチ、もう一つは'ref'で'doc'ブランチを指定します。'doc'ブランチは今回出力用のブランチです。
また、それぞれ別々のディレクトリを'path'で指定します。それぞれのパスごとにブランチのファイルが配置されます。
permissionsのcontentsをwriteに指定してください。指定しないと権限エラーが発生します。
test:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v2
with:
path: build
- name: Checkout doc
uses: actions/checkout@v2
with:
ref: doc
path: doc
テスト結果を生成する
Unitテストなどのレポート機能でHTMLなどを生成してください。Javaやnewmanなど必要な合わせて、それぞれ実行して生成してください。
- name: newman run
if: contains(github.event_name, 'pull_request')
run: |
newman run "./build/e2e/apitest.postman_collection.json" -e "./build/e2e/check-env.postman_environment.json" -r htmlextra --reporter-htmlextra-export --reporter-htmlextra-export ./doc/test_output/
プルリクとは別のブランチにコミットとプッシュする。
Git の config でコミットするために、ユーザ名とEmailを指定します。存在しないユーザ、メール、特に何を指定しても問題ありません。Gitのコミット履歴現れるだけです。
working-directoryでコミットするリポジトリのディレクトリを指定します。
- name: doc git setting
run: |
git config --local user.email "githubaction@action.action"
git config --local user.name "githubaction"
working-directory: ./doc/test_output
コミットするときはテストの失敗のときもコミットしたいため、if: always()を指定します。
他のアクションの実行で更新されているかもしれないのでgit pullしておきます。
テスト結果でファイルを新しく生成しする場合は、git addが必要です。
git commitでコミットします。メッセージに、プルリクの参照を作成しています。プルリクのタイムラインにコミットが出てきて、参照しやすくしています。
最後にプッシュしてください。
- name: Commit files
if: always() && contains(github.event_name, 'pull_request')
run: |
git pull
git add .
git commit -m "add action #"$(echo $GITHUB_REF | sed -e 's/[^0-9]//g') -a
git push origin doc
working-directory: ./doc/test_output
最後に
Github Actionsでテスト結果をどこに出力するのがベストか?
とりあえず、開発ブランチとは別のドキュメント用のブランチに出力することで、外部から確認できるようになります。
github Pageで公開する事でウェブから確認できます。
また、ローカルでプルすることで、簡単に確認できます。
しかしながら、まだ課題として、テスト結果一回分では見れるけど、傾向など長期的な傾向が見ることはできない。そこら辺の良いツールないかね?