cloud build 설정 방법 메모 쓰기

8469 단어 gcpCloudBuild
GCP에서 CI/CD를 검토하고 있어, Cloud build 붙어 조사했으므로 정리하고 싶습니다.

개요



Cloud build는 GCP가 제공하는 완전 관리형 CI/CD로, 특정 이벤트에 대해 자신의 처리를 꽂아 CI/CD를 실현합니다.
또한 github 등 기존의 리포지토리와 연계하거나 CLoud Source REpository와 같은 GCP의 리포지토리에도 연동시킬 수 있습니다.

이벤트 설정 방법



이벤트 설정 방법은 간단하고 github에서의 협력이라면



대상 리포지토리에
* 특정 브랜치에 대해 push되었을 때,
* 태그가 푸시될 때
* pull request

됩니다.

또한 상세한 설정으로


  • 빌드 설정 파일 지정
  • 빌드 구성 파일을 넣는 곳
  • 할당 변수

  • 등의 지정을 할 수 있습니다.

    대입 변수란, 설정 파일에서 사용하고 싶은 값을 KEY-VALUE의 형태로 등록해 두고, 빌드 파일에 KEY를 넣으면, VALUE가 전개되는 기능입니다.

    여기서 주의하지만 Cloud build가 말하는 빌드란 빌드 설정 파일에 작성된 처리를 수행하는 것이며 소스를 실제로 컴파일하는 것은 아닙니다.
    그래서 CI/CD의 처리의 기술은 빌드 파일에 기재하게 됩니다.

    설정 파일을 작성하는 방법



    빌드 설정 파일은 yaml, json에서 선택할 수 있습니다.
    전체 값은 다음과 같습니다.
    steps:
    - name: string
      args: [string, string, ...]
      env: [string, string, ...]
      dir: string
      id: string
      waitFor: [string, string, ...]
      entrypoint: string
      secretEnv: string
      volumes: object(Volume)
      timeout: string (Duration format)
    - name: string
      ...
    - name: string
      ...
    timeout: string (Duration format)
    queueTtl: string (Duration format)
    logsBucket: string
    options:
     env: [string, string, ...]
     secretEnv: string
     volumes: object(Volume)
     sourceProvenanceHash: enum(HashType)
     machineType: enum(MachineType)
     diskSizeGb: string (int64 format)
     substitutionOption: enum(SubstitutionOption)
     logStreamingOption: enum(LogStreamingOption)
     logging: enum(LoggingMode)
    substitutions: map (key: string, value: string)
    tags: [string, string, ...]
    serviceAccount: string
    secrets: object(Secret)
    availableSecrets: object(Secrets)
    artifacts: object (Artifacts)
    images:
    - [string, string, ...]
    

    이번은 대략 n 부분만 해설합니다.

    step



    step은 간단히 말하면 처리의 정리입니다. 이 중에서 사용하는 패키지나 타임 아웃, 환경 변수등을 지정해, 커멘드를 실행합니다.

    이름



    이것은 cloud builder를 지정합니다. cloud builder는 특정 언어의 자주 사용하는 패키지를 설치한 이미지입니다. java이면 gradle, ruby이면 bundle 같은 것입니다. 이것을 지정하는 것으로 언어마다 사용하는 패키지 매니저를 사용할 수 있도록 합니다.

    args



    이것은 name으로 지정된 환경에서 실행되는 명령의 인수입니다.

    env



    이것은 환경 변수를 지정합니다.

    샘플



    간단한 샘플이라면 다음과 같습니다.
    steps:
      - name: 'spotlightcybersecurity/python-pipenv-builder'
        args: ['install']
      - name: 'spotlightcybersecurity/python-pipenv-builder'
        args: ['run','pelican','content','-o','output','-s','publishconf.py']
      - name: gcr.io/cloud-builders/gcloud
        entrypoint: gsutil
        args: ["-m", "rsync", "-R", "-c", "-d", "./output", "gs://YOURBUCKETHERE"]
    

    위와 같이
    step -> name -> args와 같은 형태로 명령과 실행 순서를 지정합니다.

    마지막으로



    클라우드마다 사상이 다르기 때문에, CI/CD나 설정 파일에 특색이 나와 있어 배울 때마다 상당히를 면을 정도입니다.
    그럼 좋은 cloud build 생활

    좋은 웹페이지 즐겨찾기