https://gitlab-docs.infograb.net/17.9/ee/administration/integration/kroki.html

 

GitLab 공식 기술 문서 한글판 by 인포그랩 | 인포그랩 | GitLab 기반 DevSecOps 구축,컨설팅,교육,CICD Pipe

GitLab의 Selected 파트너 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 GitLab 공식 기술 문서의 한글판을 국내 최초로 제공합니다.

gitlab-docs.infograb.net

위의 문서를 접속하면 kroki 설정을 확인할 수 있다.

 

그런데 kroki 로 작성한 diagram이 출력이 안되는 문제 발생

mermaid는 작동하나 다른 다이어그램이 출력이 안되는 상황

curl도 제대로 나오고

 

svg도 서버에서 제대로 지원함

 

 

연결 문제라고 해서 확인해보니

현재 깃랩 버전에서는 diagram proxy를 지원을 안한다

 

그전에 kroki는 마크다운 문법으로 작성한 다이어그램을 랜더링해주는 랜더링 서버이다

gitlab -> kroki -> mermaid 엔진 -> SVG/PNG 생성 -> GitLab 화면 표시 

 

gitlab과 kroki간 통신도 확인했고 curl 을 이용하여 svg, png 도 잘 생성되는 것을 확인했다.

 

diagram proxy는 gitlab이 kroki 서버에서 직접 이미지를 가져와 사용자에게 보여주는 방식이다.

이것이 지원되지 않는 경우 사용자가 직접 kroki 서버에 접근할 수 있어야 이미지를 볼 수 있다.

 

 

방화벽 설정으로 자체 kroki 서버에 접근 허용하고 확인해보니

아래와 같이 출력이 잘 되었다.

 

 

젠킨스 에러가 갑자기 발생

어제 까지 잘되던 파이프라인이 갑자기 안됨

 

server connecting...이라고 메세지 이후에 나온것이기에 연결문제로 판단

 

이후 확인해보니 ssh 접속 시 사용되는 계정의 비밀번호가 만료됨 비밀번호 갱신하여 해결

 

chage -l 계정


Last password change					: Aug 19, 2023
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 90
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 30

 위 명령어로 검색한 계정은 만료가 되지 않음을 확인했다.

 

 

docker로 gitlab을 사용중인데 용량이 꽉차서 에러가 난적이 간혹 있었다.

 

용량이 꽉 찬 원인은 여러개가 있다

1. docker

이미지 용량, 빌드 시 레이어 및 캐시

 

2. gitlab

레포지토리 용량, 백업

 

3. gitlab-runner

이미지 빌드시 캐시, 빌드 아티팩트 저장

builds 폴더, cache 폴더

 

이미지 빌드시 캐시로 레이어가 쌓이기도 한다.

 

기본적으로 container 이미지를 빌드할때 캐시나 레이어를 이용해서 빠르게 빌드할 수 있다.

다만 너무 잦은 빌드와 아주 약간의 수정사항이 생기면

가끔 레이어나 캐시가 꼬여서 원하는 이미지가 생성이 안되는 경우도 있었다. 

 

 

 

1. docker

불필요한 컨테이너나, 이미지를 정리할 수도 있다.

그런 경우가 아니라면 cache를 지우는 방법도 있다.

 

 

docker system df ( docker가 차지하는 디스크 정보 출력 )

TOTAL은 전체 갯수, ACTIVE는 현재 사용중인 항목

RECLAIMABLE은 지울 수 있는 용량이라고 보면 된다.

예를 들면 Images가 2개인데 하나만 사용중이고 총 사이즈 약 4GB에 RECALIMABLE이 약 1GB면

현재 사용중이지 않은 이미지의 용량이 약 1GB, 사용중인 이미지의 용량이 3GB라는 이야기이다.

 

그리고 아래에 보면 build Cache가 있다.

dockerfile 빌드시 명령어 마다 중간레이어가 생성되고 이것이 build Cache로 남는다고한다.

그리고 이후 이미지 빌드 시 Cache를 참조하기 때문에 빨라진다고 한다.

 

### 컨테이너 이미지 빌드 시 수정사항이 반영 안되는 경우 ###

 

빌드 속도가 빠르지만 단점도 있다.

COPY config.xml /home/test/config.xml 

이 명령어를 실행하는 중간이미지가 있다고 했을때

config.xml의 내용을 수정하고 빌드를 진행해도 이전 내용이 올라가는 경우가 있었다.

cache를 지우고 다시 빌드하거나

도커파일에 'RUN echo" 같이 영향을 안주는 명령어를 추가하면

새롭게 이미지가 빌드되어 수정사항이 반영되는 것을 볼 수 있었다.

 

그래서 빌드할때 docker build --no-cache  이런식으로 cache를 사용하거나 남기지 않게해서

빌드하는 것도 하나의 방법이다.

 

docker builder prune -f 로 삭제

docker Build Cache가 삭제된 것을 확인할 수 있다.

 

 

/ 디렉토리의 용량이 3기가 정도 줄어든 것을 확인할 수 있다.

 

2. gitlab

깃랩 레포지토리 콘텐츠와, 백업 파일로 용량이 모자란 경우가 있을 수 있다.

백업의 경우 갯수를 제한하는 스크립트를 작성해서 조절이 가능하다.

 

3. gitlab-runner

 

깃랩 러너에서 이미지 빌드 시 생성되는 파일이나 캐시가 용량을 차지하기도 한다.

 

[[runners]]
  name = "   "
  url =    "   "
  token = "   "
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "ruby:2.1"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

[[runners]]
  name = "   "
  url =    "   "
  token = "   "
  executor = "shell"
  [runners.cache]

 

깃랩 설정파일에서 확인해보면

disable_cache = false로 되어있어서 캐시를 사용하도록 되어있다.

이것을 true로 해서 cache가 쌓이지 않게 하거나

빌드에 사용되는 컨텐츠가 따로 저장되지 않게 한다

 

또는 .gitlab-ci.y

build_job:
  stage: build
  script:
    - echo "Building the project..."
    - mkdir -p artifacts
    - echo "Build output" > artifacts/output.txt
  artifacts:
    paths: []

 

위와 같이 artifacts의 경로를 설정하면, artifact가 저장되지 않는다

/home/gitlab-runner/builds 아래에 파일이 추가 되지 않았다.

'CI-CD' 카테고리의 다른 글

[NCP] JENKINS - sourceCommit 연동  (0) 2024.09.25

<target name="MakeWar">
  <war destfile="${target.dir}/test.war" webxml="${source.dir1}/WEB-INF/web.xml">
    <lib dir="${source.dir2}/WEB-INF/lib" />
    <fileset dir="${source.dir3}" />
  </war>
</target>

+ Recent posts