InfoGrab Docs

Kroki

요약

Kroki 통합을 사용하면 AsciiDoc, Markdown, reStructuredText, Textile 내에서 코드로 다이어그램을 만들 수 있습니다. Admin 영역의 Settings에서 Kroki 통합을 활성화해야 합니다.

Kroki 통합을 사용하면 AsciiDoc, Markdown, reStructuredText, Textile 내에서 코드로 다이어그램을 만들 수 있습니다.

GitLab에서 Kroki 활성화#

Admin 영역의 Settings에서 Kroki 통합을 활성화해야 합니다. 이를 위해 관리자 계정으로 로그인하고 다음 단계를 따르세요:

  1. 오른쪽 상단에서 Admin을 선택합니다.
  2. Settings > General로 이동합니다.
  3. Kroki 섹션을 확장합니다.
  4. Enable Kroki 체크박스를 선택합니다.
  5. Kroki URL을 입력합니다. 예: https://kroki.io.

브라우저가 외부 Kroki 서비스에 다이어그램 콘텐츠를 전송하지 못하도록 하려면 다이어그램 프록시를 사용하세요.

Kroki 서버#

Kroki를 활성화하면 GitLab이 다이어그램을 이미지로 표시하기 위해 Kroki 인스턴스에 다이어그램을 보냅니다. 무료 공개 클라우드 인스턴스 https://kroki.io를 사용하거나 자체 인프라에 Kroki를 설치할 수 있습니다. Kroki를 설치한 후에는 설정의 Kroki URL을 인스턴스를 가리키도록 업데이트하세요.

Note

Kroki 다이어그램은 GitLab에 저장되지 않으므로 표준 GitLab 액세스 제어 및 기타 사용자 권한 제한이 적용되지 않습니다.

Docker#

Docker를 사용하면 다음과 같이 컨테이너를 실행합니다:

docker run -d --name kroki -p 8080:8000 yuzutech/kroki

Kroki URL은 컨테이너를 실행하는 서버의 호스트명입니다.

yuzutech/kroki Docker 이미지는 대부분의 다이어그램 유형을 기본적으로 지원합니다. 전체 목록은 Kroki 설치 문서를 참조하세요.

지원되는 다이어그램 유형에는 다음이 포함됩니다:

추가 다이어그램 라이브러리를 사용하려면 Kroki 설치를 읽어 Kroki 컴패니언 컨테이너를 시작하는 방법을 알아보세요.

다이어그램 만들기#

Kroki 통합이 활성화되고 구성된 상태에서 구분된 블록을 사용하여 AsciiDoc 또는 Markdown 문서에 다이어그램을 추가할 수 있습니다:

  • Markdown

    <div class="diagram-placeholder"><div class="diagram-placeholder-header">PlantUML 다이어그램 (2줄)</div><details><summary>소스 코드 보기</summary><pre><code>Bob -&gt; Alice : hello
    Alice -&gt; Bob : hi</code></pre></details></div>
    
    
  • AsciiDoc

    [plantuml]
    ....
    Bob->Alice : hello
    Alice -> Bob : hi
    ....
    
  • reStructuredText

    .. code-block:: plantuml
    
      Bob->Alice : hello
      Alice -> Bob : hi
    
  • Textile

    bc[plantuml]. Bob->Alice : hello
    Alice -> Bob : hi
    

구분된 블록은 Kroki 인스턴스를 가리키는 소스가 있는 HTML 이미지 태그로 변환됩니다. Kroki 서버가 올바르게 구성된 경우 블록 대신 멋진 다이어그램이 렌더링됩니다:

예제 코드에서 렌더링된 PlantUML 다이어그램.

Kroki는 12개 이상의 다이어그램 라이브러리를 지원합니다. AsciiDoc에 대한 몇 가지 예시가 있습니다:

GraphViz

[graphviz]
....
digraph finite_state_machine {
  rankdir=LR;
  node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8;
  node [shape = circle];
  LR_0 -> LR_2 [ label = "SS(B)" ];
  LR_0 -> LR_1 [ label = "SS(S)" ];
  LR_1 -> LR_3 [ label = "S($end)" ];
  LR_2 -> LR_6 [ label = "SS(b)" ];
  LR_2 -> LR_5 [ label = "SS(a)" ];
  LR_2 -> LR_4 [ label = "S(A)" ];
  LR_5 -> LR_7 [ label = "S(b)" ];
  LR_5 -> LR_5 [ label = "S(a)" ];
  LR_6 -> LR_6 [ label = "S(b)" ];
  LR_6 -> LR_5 [ label = "S(a)" ];
  LR_7 -> LR_8 [ label = "S(b)" ];
  LR_7 -> LR_5 [ label = "S(a)" ];
  LR_8 -> LR_6 [ label = "S(b)" ];
  LR_8 -> LR_5 [ label = "S(a)" ];
}
....

예제 코드에서 생성된 GraphViz 다이어그램.

C4 (PlantUML 기반)

[c4plantuml]
....
@startuml
!include C4_Context.puml

title System Context diagram for Internet Banking System

Person(customer, "Banking Customer", "A customer of the bank, with personal bank accounts.")
System(banking_system, "Internet Banking System", "Allows customers to check their accounts.")

System_Ext(mail_system, "E-mail system", "The internal Microsoft Exchange e-mail system.")
System_Ext(mainframe, "Mainframe Banking System", "Stores all of the core banking information.")

Rel(customer, banking_system, "Uses")
Rel_Back(customer, mail_system, "Sends e-mails to")
Rel_Neighbor(banking_system, mail_system, "Sends e-mails", "SMTP")
Rel(banking_system, mainframe, "Uses")
@enduml
....

예제 코드에서 생성된 C4 PlantUML 다이어그램.

Nomnoml

[nomnoml]
....
[Pirate|eyeCount: Int|raid();pillage()|
  [beard]--[parrot]
  [beard]-:>[foul mouth]
]

[<abstract>Marauder]<:--[Pirate]
[Pirate]- 0..7[mischief]
[jollyness]->[Pirate]
[jollyness]->[rum]
[jollyness]->[singing]
[Pirate]-> *[rum|tastiness: Int|swig()]
[Pirate]->[singing]
[singing]<->[rum]
....

예제 코드에서 생성된 Nomnoml 다이어그램.

Kroki

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

Kroki 통합을 사용하면 AsciiDoc, Markdown, reStructuredText, Textile 내에서 코드로 다이어그램을 만들 수 있습니다. Admin 영역의 Settings에서 Kroki 통합을 활성화해야 합니다.

Kroki 통합을 사용하면 AsciiDoc, Markdown, reStructuredText, Textile 내에서 코드로 다이어그램을 만들 수 있습니다.

GitLab에서 Kroki 활성화#

Admin 영역의 Settings에서 Kroki 통합을 활성화해야 합니다. 이를 위해 관리자 계정으로 로그인하고 다음 단계를 따르세요:

  1. 오른쪽 상단에서 Admin을 선택합니다.
  2. Settings > General로 이동합니다.
  3. Kroki 섹션을 확장합니다.
  4. Enable Kroki 체크박스를 선택합니다.
  5. Kroki URL을 입력합니다. 예: https://kroki.io.

브라우저가 외부 Kroki 서비스에 다이어그램 콘텐츠를 전송하지 못하도록 하려면 다이어그램 프록시를 사용하세요.

Kroki 서버#

Kroki를 활성화하면 GitLab이 다이어그램을 이미지로 표시하기 위해 Kroki 인스턴스에 다이어그램을 보냅니다. 무료 공개 클라우드 인스턴스 https://kroki.io를 사용하거나 자체 인프라에 Kroki를 설치할 수 있습니다. Kroki를 설치한 후에는 설정의 Kroki URL을 인스턴스를 가리키도록 업데이트하세요.

Note

Kroki 다이어그램은 GitLab에 저장되지 않으므로 표준 GitLab 액세스 제어 및 기타 사용자 권한 제한이 적용되지 않습니다.

Docker#

Docker를 사용하면 다음과 같이 컨테이너를 실행합니다:

docker run -d --name kroki -p 8080:8000 yuzutech/kroki

Kroki URL은 컨테이너를 실행하는 서버의 호스트명입니다.

yuzutech/kroki Docker 이미지는 대부분의 다이어그램 유형을 기본적으로 지원합니다. 전체 목록은 Kroki 설치 문서를 참조하세요.

지원되는 다이어그램 유형에는 다음이 포함됩니다:

추가 다이어그램 라이브러리를 사용하려면 Kroki 설치를 읽어 Kroki 컴패니언 컨테이너를 시작하는 방법을 알아보세요.

다이어그램 만들기#

Kroki 통합이 활성화되고 구성된 상태에서 구분된 블록을 사용하여 AsciiDoc 또는 Markdown 문서에 다이어그램을 추가할 수 있습니다:

  • Markdown

    <div class="diagram-placeholder"><div class="diagram-placeholder-header">PlantUML 다이어그램 (2줄)</div><details><summary>소스 코드 보기</summary><pre><code>Bob -&gt; Alice : hello
    Alice -&gt; Bob : hi</code></pre></details></div>
    
    
  • AsciiDoc

    [plantuml]
    ....
    Bob->Alice : hello
    Alice -> Bob : hi
    ....
    
  • reStructuredText

    .. code-block:: plantuml
    
      Bob->Alice : hello
      Alice -> Bob : hi
    
  • Textile

    bc[plantuml]. Bob->Alice : hello
    Alice -> Bob : hi
    

구분된 블록은 Kroki 인스턴스를 가리키는 소스가 있는 HTML 이미지 태그로 변환됩니다. Kroki 서버가 올바르게 구성된 경우 블록 대신 멋진 다이어그램이 렌더링됩니다:

예제 코드에서 렌더링된 PlantUML 다이어그램.

Kroki는 12개 이상의 다이어그램 라이브러리를 지원합니다. AsciiDoc에 대한 몇 가지 예시가 있습니다:

GraphViz

[graphviz]
....
digraph finite_state_machine {
  rankdir=LR;
  node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8;
  node [shape = circle];
  LR_0 -> LR_2 [ label = "SS(B)" ];
  LR_0 -> LR_1 [ label = "SS(S)" ];
  LR_1 -> LR_3 [ label = "S($end)" ];
  LR_2 -> LR_6 [ label = "SS(b)" ];
  LR_2 -> LR_5 [ label = "SS(a)" ];
  LR_2 -> LR_4 [ label = "S(A)" ];
  LR_5 -> LR_7 [ label = "S(b)" ];
  LR_5 -> LR_5 [ label = "S(a)" ];
  LR_6 -> LR_6 [ label = "S(b)" ];
  LR_6 -> LR_5 [ label = "S(a)" ];
  LR_7 -> LR_8 [ label = "S(b)" ];
  LR_7 -> LR_5 [ label = "S(a)" ];
  LR_8 -> LR_6 [ label = "S(b)" ];
  LR_8 -> LR_5 [ label = "S(a)" ];
}
....

예제 코드에서 생성된 GraphViz 다이어그램.

C4 (PlantUML 기반)

[c4plantuml]
....
@startuml
!include C4_Context.puml

title System Context diagram for Internet Banking System

Person(customer, "Banking Customer", "A customer of the bank, with personal bank accounts.")
System(banking_system, "Internet Banking System", "Allows customers to check their accounts.")

System_Ext(mail_system, "E-mail system", "The internal Microsoft Exchange e-mail system.")
System_Ext(mainframe, "Mainframe Banking System", "Stores all of the core banking information.")

Rel(customer, banking_system, "Uses")
Rel_Back(customer, mail_system, "Sends e-mails to")
Rel_Neighbor(banking_system, mail_system, "Sends e-mails", "SMTP")
Rel(banking_system, mainframe, "Uses")
@enduml
....

예제 코드에서 생성된 C4 PlantUML 다이어그램.

Nomnoml

[nomnoml]
....
[Pirate|eyeCount: Int|raid();pillage()|
  [beard]--[parrot]
  [beard]-:>[foul mouth]
]

[<abstract>Marauder]<:--[Pirate]
[Pirate]- 0..7[mischief]
[jollyness]->[Pirate]
[jollyness]->[rum]
[jollyness]->[singing]
[Pirate]-> *[rum|tastiness: Int|swig()]
[Pirate]->[singing]
[singing]<->[rum]
....

예제 코드에서 생성된 Nomnoml 다이어그램.