実行コードを確認するスクリプトがあります(0が割り当てられています)。成功1つは次に割り当てられます失敗する)。 if-elseステートメントを使用して、実行されたコードが0か1かを確認します。
0ならテキストを割り当てたい成功変数RESULTを提供します。それ以外の場合は、テキストの割り当て失敗する変数の結果に。
注:RESULTは他の場所で使用する必要があります。
これは私のコードです。
#!/usr/bin/env bash
set -eo pipefail
RESULT="SUCCESS"
if [ "${STATUS}" != "0" ]; then
RESULT="FAILURE"
else
RESULT="SUCCESS"
fi
cat "${STATUS}"
echo
echo ${RESULT}
しかし、0を送っても1を送っても構いません。結果は常に失敗します。出力は次のとおりです。
[e2e-st] 0
[e2e-st]
[e2e-st] FAILURE
ゼロが得られると予想した成功、代わりにゼロを取得します。失敗する。
私が何を間違っているか、他に何ができるかについての提案がありますか?
ここで助けと解決策を得た後:
- name: STATUS
value: $(steps.step-run-script.exitCode.path)
script: |
#!/usr/bin/env bash
set -eo pipefail
echo "STATUS=$STATUS"
ls -l "$STATUS"
STATUSVALUE=$(cat "$STATUS")
echo ${STATUSVALUE}
if [ "$STATUSVALUE" -eq 0 ]; then
echo ok
RESULT="SUCCESS"
echo ${STATUSVALUE}
echo ${RESULT}
else
echo failed...
RESULT="FAILURE"
echo ${STATUSVALUE}
echo ${RESULT}
fi
これが私が得るものです:
[e2e-st : send-test-report-and-status-to-jira-comment] STATUS=/tekton/steps/step-run-script/exitCode
[e2e-st : send-test-report-and-status-to-jira-comment] -rw-r--r--. 1 1000 1002340000 1 Mar 10 14:03 /tekton/steps/step-run-script/exitCode
[e2e-st : send-test-report-and-status-to-jira-comment] 0
[e2e-st : send-test-report-and-status-to-jira-comment] ok
[e2e-st : send-test-report-and-status-to-jira-comment] 0
[e2e-st : send-test-report-and-status-to-jira-comment] SUCCESS
テストに失敗した別の実行:
[e2e-st : send-test-report-and-status-to-jira-comment] STATUS=/tekton/steps/step-run-script/exitCode
[e2e-st : send-test-report-and-status-to-jira-comment] -rw-r--r--. 1 1000 1002340000 1 Mar 10 14:05 /tekton/steps/step-run-script/exitCode
[e2e-st : send-test-report-and-status-to-jira-comment] 1
[e2e-st : send-test-report-and-status-to-jira-comment] failed...
[e2e-st : send-test-report-and-status-to-jira-comment] 1
[e2e-st : send-test-report-and-status-to-jira-comment] FAILURE
あなたの助けをいただきありがとうございます!すべてが期待どおりに動作します。
答え1
OpenShiftやTektonについて何も知らない状態で、「steps.step-run-script.exitCode.path」の「path」という単語がファイル名を意味するように見えますが、実際にはそうですcat $STATUS
。
同じものを入れて
echo "STATUS=$STATUS"
ls -l "$STATUS"
$STATUS
変数の値が何であるかを確認するには、スクリプトを見てファイルを見てください。
ファイルの内容は、ファイルを保持する変数に自動的にコピーされません。名前ファイル名。cat
後でスクリプトで実行するようにファイルを読み取るには、たとえば使用する必要があります。例えば
STATUSVALUE=$(cat "$STATUS")
if [ "$STATUSVALUE" -eq 0 ]; then
echo ok
else
echo failed...
fi
可能であれば、変数の名前を変更することを検討してくださいSTATUSFILE
。