실행 코드를 확인하는 스크립트가 있습니다(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
나는 0을 얻을 것으로 예상했다성공, 대신 0을 얻습니다.실패하다.
내가 뭘 잘못하고 있거나 다르게 할 수 있는 것에 대한 제안이 있으십니까?
여기에서 도움과 해결 방법을 얻은 후:
- 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
.