Githubアクションでコマンドラインの出力をテストする
11514 ワード
文脈
オープンソースプロジェクト管理者としてRitchie CLI , 私は最近、いくつかのコマンドライン出力が予想通りに動作しているかどうかテストする必要がありました.
何が起こったの
私は様々なオペレーティングシステム(Windows、Linux、MacOS)でCLIコマンドをテストしなければなりませんでした.
プロジェクトはゴングで開発されたので、簡単に各OSのバイナリを作成し、それを実行することができます.しかし、私はいくつかのコマンドを使用しなければならなかった
<command-line> &> output.txt
出力ファイルを取得し、.txt
リポジトリのファイルがコマンド出力が予想されたものかどうかチェックする.私が直面した問題のいくつか
☞ エラーが発生したことをテストできませんでした.
|| true
上記のコマンドの最後に(失敗を無視する).☞ コマンドラインはOS ( DOS/UNIX )によって異なるかもしれません.
☞ 動的な出力をチェックするのは難しかった(それぞれの実行のために、例えば、すべての時間を進化させるデータかバージョン値).
私はこれらの特定の問題を解決するためにこのアクションを作成しました.
何がこのアクションですか?
この動作は、ユーザーがコマンドライン出力(成功またはエラー)をリポジトリにあるファイルコンテンツと比較したり、特定の式を含むかどうかを確認できます.
したがって、コマンドラインを画面上で返すことができるか、または作成するほとんどすべてをチェックするために使用できます.
☞ を指定すると、
cat
コマンド.☞ ファイル全体の内容
☞ ファイルがAを通して特定のディレクトリの中に位置するならば
ls
ファイル作成後のコマンド☞ ...
また、それはすべてのOSサポートランナーと互換性があります.私は最初にWindowsでそれをテストするためにDOS/UNIXの違いのために問題がありました、しかし、私はbashを使用している操作を実行している複合作用を使うことができましたstrip-ansi npm cli lib ) この問題をバイパスする.
動作の仕方

このようにして、コマンドライン出力を3つの異なる方法でチェックできました.
☞ を返します.
☞ 出力がassertファイルから特定の行を含む場合
☞ を返します
Github UI上の「アクション」タブに表示されるのは、次のようになります.

出力が予想されていない場合、アクションはまた、
diff
の両方のファイル/式の間.マイワークフロー
その行為をするAssert Command Line Output そして、あなたはそれを使用している異なった例(各々のための成功とエラーテストで)を見つけるでしょう.
The action.yml file can be found here .
1️⃣ Assert file content
コマンド出力を
assert.txt
ファイル内容 steps:
- uses: actions/[email protected]
- uses: GuillaumeFalourd/[email protected]
with:
command_line: ls -lha
assert_file_path: path/to/assert.txt
expected_result: PASSED
コマンド出力が
assert.txt
ファイル内容 steps:
- uses: actions/[email protected]
- uses: GuillaumeFalourd/[email protected]
with:
command_line: ls -lha
assert_file_path: path/to/assert.txt
expected_result: FAILED
2️⃣ Assert specific file line
コマンド出力ライン3を期待する
assert.txt
行3のファイルの内容 steps:
- uses: actions/[email protected]
- uses: GuillaumeFalourd/[email protected]
with:
command_line: ls -lha
assert_file_path: path/to/assert.txt
expected_result: PASSED
specific_line: 3
コマンド出力ライン3を期待するのは、
assert.txt
行3のファイルの内容 steps:
- uses: actions/[email protected]
- uses: GuillaumeFalourd/[email protected]
with:
command_line: ls -lha
assert_file_path: path/to/assert.txt
expected_result: FAILED
specific_line: 3
3️⃣ Assert specific expression
コマンド出力に特定の式を含める
steps:
- uses: actions/[email protected]
- uses: GuillaumeFalourd/assert-command-li[email protected]
with:
command_line: ls -lha
contains: runner
expected_result: PASSED
コマンド出力が特定の式を含まないと予想する
steps:
- uses: actions/[email protected]
- uses: GuillaumeFalourd/[email protected]
with:
command_line: ls -lha
contains: error
expected_result: FAILED
提出カテゴリ
Githubアクション、または定期的なチェックのCI/CDパイプライン内で使用されるコマンドからいくつかの特定の出力をチェックするための展開(DIY展開)だけでなく、保守者(管理者は休止しなければならない)に、この動作は役に立つかもしれません.
YAMLファイルまたはコードへのリンク
cat
or ls -lha
デモコマンド☞ MACOS
☞ WINDOWS
追加情報
☞ あなたは、次のリポジトリに貢献することができますContributing.md file
☞ このアクションはApache License 2.0
結論
私はすべてがまだ完璧ではないと信じています、この行動は最初のバージョン以来大いに進化しました、そして、私はあなたの何人かがそれが役に立つとわかることを望みます、そして、それをよりよくするために貢献したいです.読書ありがとう🚀
Reference
この問題について(Githubアクションでコマンドラインの出力をテストする), 我々は、より多くの情報をここで見つけました https://dev.to/guifalourd/test-command-line-outputs-with-github-actions-476dテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol