GitLab CI의 bash 스크립트에서 컬러 메시지를 얻는 방법

GitLab CI의 bash 스크립트에서 컬러 메시지를 얻는 방법
stages:
  - build

build:
  stage: Build
  image: alpine:latest
  variables:
    PY_COLORS: '1'
    LOGURU_COLORIZE: "true"
    ANSIBLE_FORCE_COLORS: '1'
  before_script:
    - yum update
  script:
    - bash ./scripts/foobar.sh
...
  • 사용자 정의 bash 스크립트를 실행하는 샘플 gitlab ci가 있습니다. 내 목표는 에코 메시지/로그의 형식을 굵게, 기울임꼴 및 색상으로 아름답게 지정하는 것입니다. 이를 위해 나는산출텍스트 서식 지정을 위한 유틸리티이지만 텍스트는 색상이나 서식 없이 렌더링됩니다.

다음은 내 샘플 bash 스크립트 조각입니다.

#!/bin/bash -x

# force tput to use the ansi terminal capabilities
export TERM=ansi

# Margin settings
top=18
bottom=18
left=1.6
right=1.6
pagesize=A4
fontsize=30px

# Text color variables
R=$(tput setaf 1)  # Red
G=$(tput setaf 2)  # Green
C=$(tput setaf 6)  # Cyan
Y=$(tput setaf 3)  # Yellow
P=$(tput setaf 5)  # Purple
RESET=$(tput sgr0) # Reset your text

# convenience functions
function bold {
    tput bold
    echo -n "$@"
}

function ul {
    tput smul
    echo -n "$@"
    tput rmul
}

server_name=$(hostname)

function one() {
    echo ""
    echo "Kernel version on $(bold)${Y}${server_name} ${RESET}is: "
    echo ""
    uname -r
    echo ""
}

function two() {
    echo ""
    echo "CPU load on ${G}${server_name}${RESET} is: "
    echo ""
    uptime
    echo ""
}

main (){
    one
    two
}

main

문제/도전

  • bash 스크립트를 로컬에서(macos) 실행하면 다음과 같이 원하는 결과를 얻습니다.

예상 출력

  • bash 스크립트가 gitlab ci에서 실행되면 형식이 표시되지 않습니다. gitlab runer의 샘플 출력 보기:
tput: terminal attributes: No such device or address
tput: terminal attributes: No such device or address
....
Kernel version on  is: 
4.14.296-222.539.amzn2.x86_64

CPU load on  is: 


추가 자료:

  • 다음과 같은 다른 스레드를 읽어보세요.이것다음 플래그를 추가해 보았지만 PY_COLORS: '1'여전히 ANSIBLE_FORCE_COLORS: '1'색상 효과가 없습니다.

관련 정보