Kraken CI의 22개 언어로 된 Hello Worlds

7169 단어 krakencidevopscicd
Kraken CI에 대한 새롭고 재미있는 워크플로우 예제가 있습니다. 다양한 프로그래밍 언어, 22개 언어로 프로그램을 컴파일하고 실행하는 방법Hello World을 보여줍니다.

헬로 월드 프로그램



모든 프로그래머는 Hello World 프로그램이 어떻게 생겼는지 알고 있습니다.

다음은 C 언어의 예입니다.

#include<stdio.h>

int main(){
  printf("Hello World\n");
  return 0;
}


하지만 22? 이 22개는 GitHub의 Kraken 저장소에서 볼 수 있습니다.
https://github.com/kraken-CI/hello-worlds

그래도 Hello Worlds 가 포함된 더 많은 언어가 있습니다.
가장 큰 컬렉션은 여기에서 찾을 수 있습니다.
http://helloworldcollection.de/ .

이것은 단지 예일 뿐입니다. 우리의 경우 컴파일하고 실행할 수 있습니다. 저장소를 다운로드한 후 언어 폴더를 제공하는 스크립트./run.sh를 실행할 수 있습니다. 예:

$ ./run.sh C


그러면 C 예제가 표시, 컴파일 및 실행됩니다.

Kraken의 경우 각 언어에 대해 우리를 위해 이를 수행하는 작업 흐름이 정의되어 있습니다. 그러나 먼저 이러한 언어에 대한 컴파일러 또는 런타임이 있는 시스템이 필요합니다. 구조에 도커.

Kraken 기본 언어 이미지



각 언어별로 Docker 이미지가 준비되어 있습니다. 이러한 언어의 공식 이미지를 기반으로 합니다. Kraken의 경우 kraken 사용자(루트가 아님)를 사용하여 실행되는 Kraken Agent와 같은 몇 가지 추가 기능이 있습니다.

모든 lang 이미지 목록은 에서 사용할 수 있습니다.

워크플로우



언급된 워크플로는 kraken-workflow.py 파일에서 찾을 수 있습니다.

요컨대 다음과 같이 보입니다.

def stage(ctx):
    langs = [
        ('C', 'gcc:11.3'),
        ('C++', 'gcc:11.3'),
        ('C#', 'mono:6.12'),
        # and more...
    ]

    jobs = []

    for lang_name, lang_image in langs:
        jobs.append({
            "name": "hello world %s" % lang_name,
            "steps": [{
            "tool": "git",
                "checkout": "https://github.com/Kraken-CI/hello-worlds.git",
                "branch": "main"
            }, {
                "tool": "shell",
                "cmd": "./run.sh %s" % lang_name,
                "cwd": "hello-worlds"
            }],
            "environments": [{
                "executor": "docker",
                "system": "krakenci/%s" % lang_image,
                "agents_group": "all",
                "config": "default"
            }]
        })

    return {
        "parent": "root",
        "triggers": {
            "parent": True,
        },
        "parameters": [],
        "configs": [],
        "jobs": jobs
    }


알다시피 작업 목록은 동적으로 작성됩니다. 튜플 목록의 각 항목( lang-name , docker-image )에 대해 작업은 동일한 단계로 정의되지만 언어 및 Docker 이미지 이름에 대한 값은 다양합니다. 언어 이름은 ./run.sh 단계에서 shell 스크립트로 전달됩니다. Docker 이미지 이름은 환경 섹션의 system 필드에 사용됩니다. 그런 다음 이러한 작업 목록은 전체 워크플로 정의에서 반환됩니다. 각 작업은 별도의 Docker 컨테이너에서 병렬로 실행됩니다.

작업 흐름 실행의 예는 Kraken 연구소에 있습니다.
https://lab.kraken.ci/runs/5009/jobs . branch management page에서 워크플로우 정의를 확인하십시오.

이 스크린샷은 이 워크플로의 실행을 보여줍니다.



요약



이 기사는 Kraken CI가 다양한 언어로 작성된 프로그램을 구축하는 방법을 보여줍니다. Kraken은 여러 언어로 준비된 Docker 이미지를 제공합니다. 병렬로 실행할 수 있는 작업을 동적으로 정의하는 정교한 워크플로를 쉽게 정의할 수 있습니다. 결국 Kraken UI에서 워크플로 실행 결과를 관찰하는 것이 좋습니다.

좋은 웹페이지 즐겨찾기