독립형 빌드 명령을 사용하여 컨테이너 이미지 빌드(CLI)

코드가 로컬 파일이나 Git 리포지토리에 소스로 존재하는 경우 Code Engine OCI(Open Container Initiative)표준에 따라 코드를 컨테이너 이미지로 빌드할 수 있는 옵션을 제공합니다. Code Engine CLI를 사용하여 단일 명령으로 컨테이너 이미지를 빌드할 수 있습니다.

Code Engine은 저장소 소스 코드에서 앱 배치, CLI를 사용하여 로컬 소스 코드에서 앱 배치, 저장소 소스 코드에서 작업 작성 또는 CLI를 사용하여 로컬 소스 코드에서 작업 작성을 수행할 때마다 빌드 프로세스를 처리할 수 있는 유연성을 제공합니다.

그러나 컨테이너 이미지의 빌드를 더 많이 제어하려는 경우 Code Engine은 다음 옵션 중 하나를 사용하여 컨테이너 이미지를 빌드할 수 있는 유연성을 제공합니다.

  • 단일 CLI 명령 **buildrun submit**을 사용하여 하나의 빌드 실행을 실행합니다. 이 옵션의 이점은 단일 CLI 명령으로 빌드를 얻을 수 있다는 것이지만, 빌드에 대한 구성이 보존되지 않습니다.
  • 여러 빌드 실행을 실행할 수 있는 빌드 구성을 정의합니다. 빌드 구성을 사용하여 컨테이너 이미지 빌드를 참조하십시오.

빌드가 완료되면 컨테이너 이미지를 애플리케이션으로 배치하거나 이미지를 참조하는 작업을 작성할 수 있습니다.

빌드 구성을 참조하지 않고 단일 명령으로 컨테이너 이미지를 빌드하는 방법에 대해 알아보겠습니다. 이 경우 IBM Cloud® Code Engine은 Git 저장소 또는 로컬 디렉토리에서 소스 코드를 가져와서 빌드한 후 컨테이너 이미지를 레지스트리로 푸시(업로드)합니다. 공용 또는 개인용 저장소레지스트리를 선택할 수 있습니다. 사용자가 제공한 액세스 권한으로 빌드 출력에 레지스트리 암호를 사용하여 레지스트리 세부 정보를 지정하도록 선택할 수 있습니다. 또는 Code Engine이 소스에서 이미지를 빌드한 후 자동 액세스를 사용하여 IBM Cloud Container Registry에 이미지를 저장하도록 선택할 수 있습니다.

.gitignore 파일과 유사하게 작동하는 .ceignore 파일을 사용하여 소스 코드 내에서 특정 파일 패턴을 무시하도록 선택할 수 있습니다. 예를 들어, node.js 애플리케이션의 .ceignore 파일에 대한 항목에는 node_modules.npm이 포함될 수 있습니다. 무시할 더 많은 샘플 파일 패턴을 보려면 GitHub.gitignore 리포지토리를 참조하세요.

컨테이너 이미지를 빌드하기 전에 다음 사항을 고려하십시오.

  • 이미지 빌드를 시작하기 전에 계획 정보를 검토하십시오. 또한 레지스트리에 액세스할 수 있는지 확인해야 합니다. 컨테이너 레지스트리에 대한 권한 설정을 참조하십시오.

  • 동일한 컨테이너 이미지의 여러 버전을 빌드하는 경우, 이미지에 대해 태그를 지정하지 않는 한 작업을 실행하거나 애플리케이션을 배치할 때 컨테이너 이미지의 최신 버전이 다운로드되어 사용됩니다. 이미지에 대해 태그를 지정한 경우 태그 지정된 이미지가 앱 또는 작업에 사용됩니다.

  • 정의된 빌드 구성을 참조하지 않는 CLI로 제출된 빌드 실행도 콘솔에서 볼 수 있습니다. 프로젝트 페이지에서 이미지 빌드 를 클릭하여 이미지 빌드 및 빌드 실행 목록을 보십시오. CLI를 사용하여 ibmcloud ce buildrun list 명령을 사용하여 프로젝트의 모든 빌드 실행 목록을 보십시오.

  • Code Engine에는 프로젝트 내 빌드 실행에 대한 할당량이 있습니다. Code Engine 한계에 대한 자세한 정보는 Code Engine의 한계 및 할당량을 참조하십시오.

완료된 빌드 실행은 결국 자동으로 삭제됩니다. 빌드 구성을 기반으로 하지 않는 단일 CLI 명령으로 빌드 실행을 실행하는 경우 빌드 실행이 성공하면 1시간후에 이 빌드 실행이 삭제됩니다. 빌드 실행이 실패하면 이 빌드 실행은 24시간후에 삭제됩니다. CLI를 사용하여 이 빌드 실행에 대한 정보만 표시할 수 있습니다. 콘솔에서 이 빌드 실행을 볼 수 없습니다.

CLI를 사용하여 공용 저장소에서 소스를 가져오는 단일 빌드 실행

소스가 공용 저장소에 있고 단일 명령을 사용하여 컨테이너 이미지를 빌드하고 출력하려는 경우, buildrun submit 명령을 사용하여 재사용 가능한 빌드 구성을 작성하지 않고 컨테이너 이미지를 작성하십시오.

빌드 출력의 경우, 자동 액세스를 선택하고 Code Engine이 소스에서 이미지를 빌드한 후 IBM Cloud Container Registry에 이미지를 저장하도록 설정할 수 있습니다. 이 경우 레지스트리 비밀 번호나 이미지 레지스트리의 위치를 지정할 필요가 없습니다. 또는 사용자 제공 액세스를 선택하고 레지스트리 세부 정보와 레지스트리 암호를 지정하여 레지스트리에서 빌드한 이미지에 액세스할 수 있습니다.

단일 빌드를 실행하기 위한 전체 옵션 목록은 ibmcloud ce buildrun submit 명령을 참조하십시오.

CLI를 사용하여 단일 빌드 실행(공용 저장소 소스 및 레지스트리에 대한 자동 액세스 사용)

자동 액세스 시나리오에서 Code Engine은 공용 Git 저장소 소스에서 이미지를 빌드한 후 buildrun submit 명령에 빌드 옵션을 사용하여 자동 액세스를 통해 이미지를 IBM Cloud Container Registry에 업로드합니다. 이 경우 레지스트리 비밀 번호나 이미지 레지스트리의 위치를 지정할 필요가 없습니다.

Code Engine이 Container Registry에서 이러한 이미지에 자동으로 액세스하는 데 필요한 권한 설정에 대한 자세한 정보는 이미지 레지스트리의 권한 설정을 참조하십시오.

시작하기 전에

  1. 공용 Git 저장소에서 이미지를 빌드하는 빌드를 실행하고 Code Engine에서 이미지를 자동으로 저장하고 액세스하도록 설정하십시오. 예를 들어, 다음 buildrun submit 명령은 굥용 Git 저장소 https://github.com/IBM/CodeEngine의 소스에서 빌드되는 helloworld-buildrun이라는 빌드 실행을 실행합니다.

    ibmcloud ce buildrun submit --name helloworld-buildrun --source https://github.com/IBM/CodeEngine --context-dir /hello
    
    • 이 예에서 명령은 기본 dockerfile 전략 및 기본 medium 빌드 크기를 사용합니다.
    • --commit 옵션으로 저장소의 분기 이름을 지정하지 않았기 때문에 Code Engine에서는 지정된 저장소의 기본 분기를 자동으로 사용합니다. 이 Git 저장소의 경우 main입니다.
    • 이미지 레지스트리의 위치나 레지스트리 비밀 번호를 지정하지 않으면 Code Engine 빌드 출력을 자동 액세스와 함께 IBM Cloud Container Registry 푸시합니다.
    • Code Engine은 --source 옵션의 값에 따라 소스가 저장소 또는 로컬 워크스테이션에 있는지 여부를 자동으로 판별합니다.

    출력 예

    Submitting build run 'helloworld-buildrun'...
    Creating image 'private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun'...
    Run 'ibmcloud ce buildrun get -n helloworld-buildrun' to check the build run status.
    OK
    

    다음 표에는 이 예에서 buildrun submit 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce buildrun submit 명령을 참조하십시오.

    명령 설명
    옵션 설명
    --name

    빌드 실행의 이름입니다. 프로젝트 내에서 고유한 이름을 사용하십시오.

    • 이름은 소문자로 시작하고 끝나야 합니다.
    • 이름은 63자 이하여야 하며 소문자 영숫자 및 하이픈(-)을 포함할 수 있습니다.
    --source Git 저장소의 URL 또는 소스 코드가 포함되어 있는 로컬 소스의 경로입니다(예: https://github.com/IBM/CodeEngine).
    --context-dir 빌드팩 파일 또는 Dockerfile이 포함되어 있는 저장소의 디렉토리입니다. 빌드팩 파일 또는 Dockerfile이 서브디렉토리에 포함되어 있는 경우 이 값을 지정하십시오.
  2. buildrun get 명령을 사용하여 빌드 실행 상태를 확인하십시오.

    ibmcloud ce buildrun get -n helloworld-buildrun
    

    출력 예

    이미지의 생성된 이름과 자동으로 생성된 레지스트리 비밀 번호의 이름이 ce-auto-icr-private-<region> 형식인 것을 확인할 수 있습니다.

    Getting build 'helloworld-buildrun'
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T15:30:46-04:00  
    Build Type:    git
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Commit Branch:  main
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1
        Commit Author:  COMMIT_AUTHOR
    Image Digest:  sha256:ba3c445a27238040e102c083f76ad8922effcc3a7c4dc97b8472e626d87c11a2
    
    Image:              private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun
    Registry Secret:    ce-auto-icr-private-us-south
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    

CLI를 사용하여 단일 빌드 실행(공용 저장소 소스 및 레지스트리에 대한 사용자 제공 액세스 사용)

사용자 제공 액세스 시나리오에서 Code Engine은 공용 Git 저장소 소스에서 이미지를 빌드한 후 단일 빌드 명령을 사용하여 사용자가 제공하는 레지스트리 액세스를 통해 이미지를 컨테이너 레지스트리에 업로드합니다.

시작하기 전에

  1. 빌드를 실행하여 공개 Git 리포지토리에서 이미지를 빌드하고 레지스트리 비밀을 사용하여 빌드 출력의 이미지 레지스트리 위치를 지정합니다. 예를 들어, 다음 buildrun submit 명령은 공용 Git 저장소 https://github.com/IBM/CodeEngine 에서 빌드되는 helloworld-buildrun2 라는 빌드 실행을 실행하고 이 레지스트리에 액세스하기 위해 myregistry 레지스트리 시크릿을 사용하여 이미지를 us.icr.io/mynamespace/codeengine-helloworld 레지스트리에 저장합니다.

    ibmcloud ce buildrun submit --name helloworld-buildrun2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
    
    • 이 예에서 명령은 기본 dockerfile 전략 및 기본 medium 빌드 크기를 사용합니다.
    • --commit 옵션으로 저장소의 분기 이름을 지정하지 않았기 때문에 Code Engine에서는 지정된 저장소의 기본 분기를 자동으로 사용합니다. 이 Git 저장소의 경우 main입니다.
    • --strategy 옵션을 dockerfile 값으로 사용하는 경우 --dockerfile 옵션이 dockerfile의 이름으로 올바르게 설정되었는지 확인하십시오. --strategy 옵션의 기본값은 Dockerfile입니다.
    • Code Engine은 --source 옵션의 값에 따라 소스가 저장소 또는 로컬 워크스테이션에 있는지 여부를 자동으로 판별합니다.

    출력 예

    Submitting build run 'helloworld-buildrun2'...
    Creating image 'us.icr.io/mynamespace/codeengine-helloworld'...
    Run 'ibmcloud ce buildrun get -n helloworld-buildrun2' to check the build run status.
    OK
    

    다음 표에는 이 예에서 buildrun submit 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce buildrun submit 명령을 참조하십시오.

    명령 설명
    옵션 설명
    --name

    빌드 실행의 이름입니다. 프로젝트 내에서 고유한 이름을 사용하십시오. 이 값은 필수입니다.

    • 이름은 소문자로 시작하고 끝나야 합니다.
    • 이름은 63자 이하여야 하며 소문자 영숫자 및 하이픈(-)을 포함할 수 있습니다.
    --image 이미지 레지스트리의 위치입니다. 위치 형식은 REGISTRY/NAMESPACE/REPOSITORY 또는 REGISTRY/NAMESPACE/REPOSITORY:TAG여야 합니다. 여기서 TAG는 선택사항입니다. TAG를 지정하지 않으면 기본값은 latest입니다.
    --registry-secret 컨테이너 이미지를 만들 때 레지스트리에 액세스하는 데 사용되는 레지스트리 암호입니다. secret create --format registry 명령을 실행하여 레지스트리 시크릿을 작성하십시오. 레지스트리 비밀은 비공개 레지스트리로 인증하는 데 사용됩니다.
    --source Git 저장소의 URL 또는 소스 코드가 포함되어 있는 로컬 소스의 경로입니다(예: https://github.com/IBM/CodeEngine).
    --context-dir 빌드팩 파일 또는 Dockerfile이 포함되어 있는 저장소의 디렉토리입니다. 빌드팩 파일 또는 Dockerfile이 서브디렉토리에 포함되어 있는 경우 이 값을 지정하십시오.
  2. buildrun get 명령을 사용하여 빌드 실행 상태를 확인하십시오.

    ibmcloud ce buildrun get --name helloworld-buildrun2
    

    출력 예

    Getting build run 'helloworld-buildrun2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n helloworld-buildrun2' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n helloworld-buildrun2' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T15:57:43-04:00
    Build Type:    git
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Commit Branch:  main
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1
        Commit Author:  COMMIT_AUTHOR
    Image Digest:  sha256:6312ee613efa5bec7baa20c47f607e7f15473947d5675fd7384491bee8023afc
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld2
    Registry Secret:    myregistry
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    

명령 유효성 검증 실패를 수신한 경우 시크릿이 있는지 확인하십시오. 이미지에 대한 레지스트리 시크릿 (--registry-secret) 을 참조하고 시크릿이 존재하지 않는 경우 컨테이너 레지스트리 액세스 를 참조하십시오. 빌드에 대한 자세한 정보는 문제점 해결 팁을 참조하십시오.

CLI를 사용하여 개인용 저장소에서 소스를 가져오는 단일 빌드 실행

소스가 개인용 저장소에 있고 단일 명령을 사용하여 컨테이너 이미지를 빌드하고 출력하려는 경우, buildrun submit 명령을 사용하여 재사용 가능한 빌드 구성을 작성하지 않고 컨테이너 이미지를 작성하십시오.

빌드 출력의 경우, 자동 액세스를 선택하고 Code Engine이 소스에서 이미지를 빌드한 후 IBM Cloud Container Registry에 이미지를 저장하도록 설정할 수 있습니다. 이 경우 레지스트리 비밀 번호나 이미지 레지스트리의 위치를 지정할 필요가 없습니다. 또는 사용자 제공 액세스를 선택하고 레지스트리 세부 정보와 레지스트리 암호를 지정하여 레지스트리에서 빌드한 이미지에 액세스할 수 있습니다.

단일 빌드를 실행하기 위한 전체 옵션 목록은 ibmcloud ce buildrun submit 명령을 참조하십시오.

CLI를 사용하여 단일 빌드 실행(개인용 저장소 소스 및 레지스트리에 대한 자동 액세스 사용)

자동 액세스 시나리오에서 Code Engine은 개인용 저장소 소스에서 이미지를 빌드한 후 buildrun submit 명령에 빌드 옵션을 사용하여 자동 액세스를 통해 이미지를 IBM Cloud Container Registry에 업로드합니다. 이 경우 레지스트리 비밀 번호나 이미지 레지스트리의 위치를 지정할 필요가 없습니다.

Code Engine이 Container Registry에서 이러한 이미지에 자동으로 액세스하는 데 필요한 권한 설정에 대한 자세한 정보는 이미지 레지스트리의 권한 설정을 참조하십시오.

시작하기 전에

  1. 개인용 저장소에서 이미지를 빌드하는 빌드를 실행하고 Code Engine에서 이미지를 자동으로 저장하고 액세스하도록 설정하십시오. 예를 들어, 다음 buildrun submit 명령은 개인용 Git 저장소 https://github.com/myprivaterepo/builds에서 빌드되는 helloworld-buildrun-private이라는 빌드 실행을 실행합니다.

    ibmcloud ce buildrun submit --name helloworld-buildrun-private --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
    
    • 이 예제 명령은 buildpacks 전략 및 medium 빌드 크기를 사용합니다.
    • 이미지 레지스트리의 위치나 레지스트리 비밀 번호를 지정하지 않으면 Code Engine 빌드 출력을 자동 액세스와 함께 IBM Cloud Container Registry 푸시합니다.
    • 지정된 Git 리포지토리의 소스는 비공개이므로 액세스하려면 SSH 비밀번호가 필요합니다. SSH 시크릿은 Git 저장소 액세스 시크릿으로도 사용됩니다. 따라서 지정하는 --source에는 SSH 프로토콜(예: git@github.com:myprivaterepo/builds.git)을 사용해야 합니다. --source 값은 http 또는 https 형식을 사용하면 안됩니다.
    • --commit 옵션으로 저장소의 분기 이름을 지정하지 않았기 때문에 Code Engine에서는 지정된 저장소의 기본 분기를 자동으로 사용합니다.
    • Code Engine은 --source 옵션의 값에 따라 소스가 저장소 또는 로컬 워크스테이션에 있는지 여부를 자동으로 판별합니다.

    다음 표에는 이 예에서 buildrun submit 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce buildrun submit 명령을 참조하십시오.

    명령 설명
    옵션 설명
    --name

    빌드 실행의 이름입니다. 프로젝트 내에서 고유한 이름을 사용하십시오. 이 값은 필수입니다.

    • 이름은 소문자로 시작하고 끝나야 합니다.
    • 이름은 63자 이하여야 하며 소문자 영숫자 및 하이픈(-)을 포함할 수 있습니다.
    --source Git 저장소의 URL 또는 소스 코드가 포함되어 있는 로컬 소스의 경로입니다(예: git@github.com:myprivaterepo/builds.git).
    --context-dir 빌드팩 파일 또는 Dockerfile이 포함되어 있는 저장소의 디렉토리입니다. 빌드팩 파일 또는 Dockerfile이 서브디렉토리에 포함되어 있는 경우 이 값을 지정하십시오.
    --strategy 이미지를 빌드하는 데 사용할 전략입니다. 유효값은 dockerfilebuildpacks입니다.
    --git-repo-secret 컨테이너 이미지를 빌드하기 위한 소스 코드가 들어 있는 개인 저장소에 액세스하기 위한 자격 증명을 포함하는 SSH 본인확인정보의 이름입니다. secret create --ssh 명령을 실행하여 이 시크릿을 작성하십시오. SSH 시크릿은 Git 저장소 액세스 시크릿으로도 사용됩니다.
  2. buildrun get 명령을 사용하여 빌드 실행 상태를 확인하십시오.

    ibmcloud ce buildrun get --name helloworld-buildrun-private
    

    출력 예

    Getting build run 'helloworld-buildrun-private'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun-private  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-08T06:02:36-05:00  
    Build Type:    git  
    
    Summary:       Succeeded  
    Status:        Succeeded  
    Reason:        All Steps have completed executing   
    Source:          
        Commit Branch:  main  
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1  
        Commit Author:  COMMIT_AUTHOR  
    Image Digest:  sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6  
    Image:              private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-buildrun-private
    Registry Secret:    ce-auto-icr-private-us-south  
    Build Strategy:     buildpacks-v3-medium
    Timeout:            10m0s
    Source:             git@github.com:myprivaterepo/builds.git  
    Context Directory:  /hello  
    Repo Secret:        myrepossh
    

CLI를 사용하여 단일 빌드 실행(개인용 저장소 소스 및 레지스트리에 대한 사용자 제공 액세스 사용)

사용자 제공 액세스 시나리오에서 Code Engine은 사용자가 제공하는 Git 저장소 시크릿을 사용하여 개인용 저장소 소스에서 이미지를 빌드한 후 단일 빌드 명령을 사용하여 사용자가 제공하는 레지스트리 액세스를 통해 이미지를 컨테이너 레지스트리에 업로드합니다.

시작하기 전에

  1. 빌드를 실행하여 비공개 리포지토리에서 이미지를 빌드하고 레지스트리 비밀 번호로 빌드 출력의 이미지 레지스트리 위치를 지정합니다. 다음 예제 buildrun submit 명령은 개인용 Git 저장소 https://github.com/myprivaterepo/builds 에서 빌드되는 helloworld-buildrun-private2 라는 빌드 실행을 실행하고 이 레지스트리에 액세스하기 위해 myregistry 레지스트리 시크릿을 사용하여 이미지를 us.icr.io/mynamespace/codeengine-helloworld 에 저장합니다.

    ibmcloud ce buildrun submit --name helloworld-buildrun-private2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
    
    • 이 예제 명령은 buildpacks 전략 및 기본 medium 빌드 크기를 사용합니다.
    • 제공된 Git 리포지토리는 비공개이므로 액세스하려면 SSH 비밀번호가 필요합니다. SSH 시크릿은 Git 저장소 액세스 시크릿으로도 사용됩니다. 따라서 지정하는 --source에는 SSH 프로토콜(예: git@github.com:myprivaterepo/builds.git)을 사용해야 합니다. --source 값은 http 또는 https 형식을 사용하면 안됩니다.
    • --commit 옵션으로 저장소의 분기 이름을 지정하지 않았기 때문에 Code Engine에서는 지정된 저장소의 기본 분기를 자동으로 사용합니다.
    • Code Engine은 --source 옵션의 값에 따라 소스가 저장소 또는 로컬 워크스테이션에 있는지 여부를 자동으로 판별합니다.

    다음 표에는 이 예에서 buildrun submit 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce buildrun submit 명령을 참조하십시오.

    명령 설명
    옵션 설명
    --name

    빌드 실행의 이름입니다. 프로젝트 내에서 고유한 이름을 사용하십시오. 이 값은 필수입니다.

    • 이름은 소문자로 시작하고 끝나야 합니다.
    • 이름은 63자 이하여야 하며 소문자 영숫자 및 하이픈(-)을 포함할 수 있습니다.
    --image 이미지 레지스트리의 위치입니다. 위치 형식은 REGISTRY/NAMESPACE/REPOSITORY 또는 REGISTRY/NAMESPACE/REPOSITORY:TAG여야 합니다. 여기서 TAG는 선택사항입니다. TAG를 지정하지 않으면 기본값은 latest입니다.
    --registry-secret 컨테이너 이미지를 만들 때 레지스트리에 액세스하는 데 사용되는 레지스트리 암호입니다. secret create --format registry 명령을 실행하여 레지스트리 시크릿을 작성하십시오. 레지스트리 비밀은 비공개 레지스트리로 인증하는 데 사용됩니다.
    --source Git 저장소의 URL 또는 소스 코드가 포함되어 있는 로컬 소스의 경로입니다(예: git@github.com:myprivaterepo/builds.git).
    --context-dir 빌드팩 파일 또는 Dockerfile이 포함되어 있는 저장소의 디렉토리입니다. 빌드팩 파일 또는 Dockerfile이 서브디렉토리에 포함되어 있는 경우 이 값을 지정하십시오.
    --strategy 이미지를 빌드하는 데 사용할 전략입니다. 유효값은 dockerfilebuildpacks입니다.
    --git-repo-secret 컨테이너 이미지를 빌드하기 위한 소스 코드가 들어 있는 개인 저장소에 액세스하기 위한 자격 증명을 포함하는 SSH 본인확인정보의 이름입니다. secret create --ssh 명령을 실행하여 이 시크릿을 작성하십시오. SSH 시크릿은 Git 저장소 액세스 시크릿으로도 사용됩니다.
  2. buildrun get 명령을 사용하여 빌드 실행 상태를 확인하십시오.

    ibmcloud ce buildrun get --name helloworld-buildrun-private2
    

    출력 예

    Getting build run 'helloworld-buildrun-private2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private2' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private2' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun-private2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d10h
    Created:       2022-06-08T06:11:05-05:00  
    Build Type:    git  
    
    Summary:       Succeeded  
    Status:        Succeeded  
    Reason:        All Steps have completed executing  
    Source:          
        Commit Branch:  main  
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1  
        Commit Author:  COMMIT_AUTHOR  
    Image Digest:  sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6  
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld  
    Registry Secret:    myregistry  
    Build Strategy:     buildpacks-v3-medium  
    Timeout:            10m0s  
    Source:             git@github.com:myprivaterepo/builds.git  
    Context Directory:  /hello  
    Repo Secret:        myrepossh
    

로컬 디렉토리에서 소스를 가져오는 단일 빌드 실행

소스가 로컬 워크스테이션에 있고 단일 명령을 사용하여 컨테이너 이미지를 빌드하고 출력하려는 경우, buildrun submit 명령을 사용하여 재사용 가능한 빌드 구성을 작성하지 않고 컨테이너 이미지를 작성하십시오.

빌드 출력의 경우, 자동 액세스를 선택하고 Code Engine이 소스에서 이미지를 빌드한 후 IBM Cloud Container Registry에 이미지를 저장하도록 설정할 수 있습니다. 이 경우 레지스트리 비밀 번호나 이미지 레지스트리의 위치를 지정할 필요가 없습니다. 또는 사용자 제공 액세스를 선택하고 레지스트리 세부 정보와 레지스트리 암호를 지정하여 레지스트리에서 빌드한 이미지에 액세스할 수 있습니다.

로컬 디렉토리에서 코드를 가져오는 빌드를 제출하면 소스 코드가 아카이브 파일로 압축되어 IBM Cloud Container Registry 인스턴스에 업로드됩니다. 로컬 빌드의 경우 IBM Cloud Container Registry만 대상으로 지정할 수 있습니다. 소스 이미지는 빌드 이미지와 동일한 네임스페이스에 작성됩니다.

.gitignore 파일과 유사하게 작동하는 .ceignore 파일을 사용하여 소스 코드 내에서 특정 파일 패턴을 무시하도록 선택할 수 있습니다. 예를 들어, node.js 애플리케이션의 .ceignore 파일에 대한 항목에는 node_modules.npm이 포함될 수 있습니다. 무시할 더 많은 샘플 파일 패턴을 보려면 GitHub.gitignore 리포지토리를 참조하세요.

단일 빌드를 실행하기 위한 전체 옵션 목록은 ibmcloud ce buildrun submit 명령을 참조하십시오.

CLI를 사용하여 단일 빌드 실행(로컬 소스 및 레지스트리에 대한 자동 액세스 사용)

자동 액세스 시나리오에서 Code Engine은 로컬 소스에서 이미지를 빌드한 후 buildrun submit 명령에 빌드 옵션을 사용하여 자동 액세스를 통해 이미지를 IBM Cloud Container Registry에 업로드합니다.

Code Engine이 Container Registry에서 이러한 이미지에 자동으로 액세스하는 데 필요한 권한 설정에 대한 자세한 정보는 이미지 레지스트리의 권한 설정을 참조하십시오. 이 경우 레지스트리 비밀 번호나 이미지 레지스트리의 위치를 지정할 필요가 없습니다.

시작하기 전에

로컬 소스에 대해 작업하기 전에 소스가 로컬 워크스테이션의 액세스 가능한 위치에 있는지 확인하십시오.

이 예에서는 https://github.com/IBM/CodeEngine 샘플, 특히 helloworld 샘플을 사용합니다.

  1. 다음 명령을 사용하여 https://github.com/IBM/CodeEngine 샘플 소스를 로컬 워크스테이션으로 다운로드하십시오.

    git clone https://github.com/IBM/CodeEngine
    
  2. CodeEngine\helloworld 디렉토리로 변경하십시오.

  3. CodeEngine\helloworld 디렉토리에서 로컬 워크스테이션의 helloworld 소스에서 이미지를 빌드하는 빌드를 실행하고 Code Engine에서 이미지를 자동으로 저장하고 액세스하도록 설정하십시오. 이 명령은 자동으로 이미지를 빌드한 후 계정의Container Registry 네임스페이스로 푸시합니다. 기존 Container Registry 네임스페이스가 없는 경우 Code Engine에서 자동으로 작성합니다. 예를 들어, 다음 buildrun submit 명령은 로컬 소스에서 빌드되는 buildrun-local-dockerfile이라는 빌드 실행을 실행합니다.

    ibmcloud ce buildrun submit --name buildrun-local-dockerfile --source .
    

    .은 빌드 소스가 현재 작업 중인 디렉토리에 있음을 나타냅니다.

    • 이 예제 명령은 기본 dockerfile 전략 및 기본 medium 빌드 크기를 사용합니다.
    • 이미지 레지스트리의 위치나 레지스트리 비밀 번호를 지정하지 않으면 Code Engine 빌드 출력을 자동 액세스와 함께 IBM Cloud Container Registry 푸시합니다.
    • Code Engine은 --source 옵션의 값에 따라 소스가 저장소 또는 로컬 워크스테이션에 있는지 여부를 자동으로 판별합니다.

    출력 예

    Packaging files to upload from source path '.'...
    Submitting build run 'buildrun-local-dockerfile'...
    Creating image 'private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile'...
    Run 'ibmcloud ce buildrun get -n buildrun-local-dockerfile' to check the build run status.
    OK
    

    다음 표에는 이 예에서 buildrun submit 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce buildrun submit 명령을 참조하십시오.

    명령 설명
    옵션 설명
    --name

    빌드 실행의 이름입니다. 프로젝트 내에서 고유한 이름을 사용하십시오. 이 값은 필수입니다.

    • 이름은 소문자로 시작하고 끝나야 합니다.
    • 이름은 63자 이하여야 하며 소문자 영숫자 및 하이픈(-)을 포함할 수 있습니다.
    --source 소스 코드가 포함되어 있는 로컬 소스의 경로 또는 Git 저장소의 URL입니다(예: .).
  4. buildrun get 명령을 사용하여 빌드 실행 상태를 확인하십시오.

    ibmcloud ce buildrun get --name buildrun-local-dockerfile
    

    출력 예

    Getting build run 'buildrun-local-dockerfile'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile' to follow the logs of the build run.
    OK
    
    Name:          buildrun-local-dockerfile  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T16:09:34-04:00
    Build Type:    local
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Source Image Digest:  sha256:ced7abc34f018941145efb56e9a0c1fca99236653c2a05dd5b8b985928ff5f4f
    Image Digest:  sha256:6459430ff49436494aa5e3103eaac98ad90ea50df88a2e14af6314fe88f3c952
    
    Image:                   private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile
    Registry Secret:         ce-auto-icr-private-us-south
    Build Strategy:          dockerfile-medium
    Timeout:                 10m0s
    Source Image:            private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile-source
    Source Registry Secret:  ce-auto-icr-private-us-south
    Dockerfile:              Dockerfile
    

    이미지의 생성된 이름과 자동으로 생성된 레지스트리 비밀 번호의 이름이 ce-auto-icr-private-<region> 형식인 것을 확인할 수 있습니다.

CLI를 사용하여 단일 빌드 실행(로컬 소스 및 레지스트리에 대한 사용자 제공 액세스 사용)

사용자 제공 액세스 시나리오에서 Code Engine은 로컬 소스에서 이미지를 빌드한 후 buildrun submit 명령을 사용하여 사용자가 제공하는 레지스트리 액세스를 통해 컨테이너 레지스트리에 이미지를 업로드합니다.

시작하기 전에

로컬 소스에 대해 작업하기 전에 소스가 로컬 워크스테이션의 액세스 가능한 위치에 있는지 확인하십시오.

이 예에서는 https://github.com/IBM/CodeEngine 샘플, 특히 helloworld 샘플을 사용합니다.

  1. 다음 명령을 사용하여 https://github.com/IBM/CodeEngine 샘플 소스를 로컬 워크스테이션으로 다운로드하십시오.

    git clone https://github.com/IBM/CodeEngine
    
  2. CodeEngine\helloworld 디렉토리로 변경하십시오.

  3. From the CodeEngine\helloworld directory, run a build run to build an image from the helloworld source on your local workstation and specify the location of the image registry for the build output with a registry secret. 이 buildrun submit 명령은 자동으로 이미지를 빌드한 후 --image 옵션으로 지정한 레지스트리로 푸시합니다. 레지스트리에 액세스하려면 --registry-secret 옵션을 지정하십시오.

    ibmcloud ce buildrun submit --name buildrun-local-dockerfile2 --source . --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry
    

    .은 빌드 소스가 현재 작업 중인 디렉토리에 있음을 나타냅니다.

    • Code Engine은 --source 옵션의 값에 따라 소스가 저장소 또는 로컬 워크스테이션에 있는지 여부를 자동으로 판별합니다.
    • 이 예에서 명령은 기본 dockerfile 전략 및 기본 medium 빌드 크기를 사용합니다.

    다음 표에는 이 예에서 buildrun submit 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce buildrun submit 명령을 참조하십시오.

    명령 설명
    옵션 설명
    --name

    빌드 실행의 이름입니다. 프로젝트 내에서 고유한 이름을 사용하십시오. 이 값은 필수입니다.

    • 이름은 소문자로 시작하고 끝나야 합니다.
    • 이름은 63자 이하여야 하며 소문자 영숫자 및 하이픈(-)을 포함할 수 있습니다.
    --source 소스 코드가 포함되어 있는 로컬 소스의 경로 또는 Git 저장소의 URL입니다(예: .).
    --image 이미지 레지스트리의 위치입니다. 위치 형식은 REGISTRY/NAMESPACE/REPOSITORY 또는 REGISTRY/NAMESPACE/REPOSITORY:TAG여야 합니다. 여기서 TAG는 선택사항입니다. TAG를 지정하지 않으면 기본값은 latest입니다.
    --registry-secret 컨테이너 이미지를 만들 때 레지스트리에 액세스하는 데 사용되는 레지스트리 암호입니다. secret create --format registry 명령을 실행하여 레지스트리 시크릿을 작성하십시오. 레지스트리 비밀은 비공개 레지스트리로 인증하는 데 사용됩니다.
  4. buildrun get 명령을 사용하여 빌드 실행 상태를 확인하십시오.

    ibmcloud ce buildrun get --name buildrun-local-dockerfile2
    

    출력 예

    Getting build run 'buildrun-local-dockerfile2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile2' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile2' to follow the logs of the build run.
    OK
    
    Name:          buildrun-local-dockerfile2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T16:34:42-04:00
    Build Type:    local
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Source Image Digest:  sha256:00fb80a8cdc17394ccae564efceb81f48c2cbcbd76afd0fb0b74019352933a63
    Image Digest:  sha256:25bc4bedccc1b34c98ccd92368246df3e61a7cf0cf4915a32f111669b60e2fea
    
    Image:                   us.icr.io/mynamespace/codeengine-helloworld
    Registry Secret:         myregistry
    Build Strategy:          dockerfile-medium
    Timeout:                 10m0s
    Source Image:            us.icr.io/mynamespace/codeengine-helloworld-source
    Source Registry Secret:  myregistry
    Dockerfile:              Dockerfile
    

빌드를 위한 다음 단계

이제 소스에서 컨테이너 이미지를 빌드했으므로 이제 컨테이너 이미지를 사용하는 애플리케이션 또는 작업을 작성할 수 있습니다. 애플리케이션 배치작업 실행을 참조하십시오.

더 많은 코드 예를 찾고 계십니까? IBM Cloud Code Engine GitHub 저장소의 샘플을 확인하십시오.