스크립트 및 작업 로그 문제 해결
스크립트 및 작업 로그 문제 해결에 대해 설명합니다.
: 를 사용하는 스크립트에서 Syntax is incorrect # 스크립트에서 콜론( : )을 사용하면 GitLab이 다음을 출력할 수 있습니다: Syntax is incorrect script config should be a string or a nested array of strings up to 10 levels deep 예를 들어, cURL 명령의 일부로 "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" 를 사용하는 경우: pages-job: stage: deploy script: - curl --header 'PRIVATE-TOKEN: ${PRIVATE_TOKEN}' "https://gitlab.example.com/api/v4/projects" environment: production YAML 파서는 : 가 YAML 키워드를 정의한다고 생각하여 Syntax is incorrect 오류를 출력합니다. 콜론을 포함하는 명령을 사용하려면 전체 명령을 작은따옴표로 감싸야 합니다. 기존의 작은따옴표( ' )를 큰따옴표( " )로 변경해야 할 수 있습니다: pages-job: stage: deploy script: - 'curl --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" "https://gitlab.example.com/api/v4/projects"' environment: production 스크립트에서 && 를 사용할 때 작업이 실패하지 않음 # 단일 스크립트 줄에서 && 를 사용하여 두 명령을 결합하면 하나의 명령이 실패하더라도 작업이 성공으로 반환될 수 있습니다. 예를 들어: job-does-not-fail: script: - invalid-command xyz && invalid-command abc - echo $? - echo "The job should have failed already, but this is executed unexpectedly." && 연산자는 두 명령이 실패했더라도 종료 코드 0 을 반환하며 작업이 계속 실행됩니다. 어느 명령이 실패할 때 스크립트를 강제로 종료하려면 전체 줄을 괄호로 감쌉니다: job-fails: script: - (invalid-command xyz && invalid-command abc) - echo "The job failed already, and this is not executed." 폴드된 YAML 다중 줄 블록 스칼라에서 다중 줄 명령이 보존되지 않음 # 긴 명령을 분할하기 위해 - > 폴드된 YAML 다중 줄 블록 스칼라를 사용하면, 추가 들여쓰기로 인해 줄이 개별 명령으로 처리됩니다. 예를 들어: script: - > RESULT=$(curl --silent --header "Authorization: Bearer $CI_JOB_TOKEN" "${CI_API_V4_URL}/job" ) 들여쓰기로 인해 줄 바꿈이 보존되어 실패
