name: HTTP 응답 대기 description: 지정한 호스트:포트가 HTTP 응답을 줄 때까지 대기 (서비스 기동 확인) inputs: host: required: true description: 확인할 호스트/IP port: required: true description: 확인할 포트 timeout: required: false default: "60" description: 최대 대기 시간(초) interval: required: false default: "2" description: 재시도 간격(초) path: required: false default: "/" description: 요청 경로 scheme: required: false default: "http" description: 프로토콜 (http 또는 https) runs: using: composite steps: - shell: bash env: HOST: ${{ inputs.host }} PORT: ${{ inputs.port }} TIMEOUT: ${{ inputs.timeout }} INTERVAL: ${{ inputs.interval }} REQ_PATH: ${{ inputs.path }} SCHEME: ${{ inputs.scheme }} run: | set -eu URL="${SCHEME}://${HOST}:${PORT}${REQ_PATH}" echo "응답 대기 중: ${URL} (최대 ${TIMEOUT}초)" ELAPSED=0 while [ "$ELAPSED" -lt "$TIMEOUT" ]; do # 연결만 되면(상태코드 무엇이든) 통과. 404/500이어도 서버는 살아있는 것. CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time "$INTERVAL" "$URL" || echo "000") if [ "$CODE" != "000" ]; then echo "응답 확인 (HTTP ${CODE}) — ${ELAPSED}초 경과" exit 0 fi echo " ...대기 (${ELAPSED}/${TIMEOUT}초)" sleep "$INTERVAL" ELAPSED=$((ELAPSED + INTERVAL)) done echo "${TIMEOUT}초 내에 응답하지 않음: ${URL}" exit 1