GitLab은 지속적인 배포를 위한 원스톱 서비스입니다.

이번 주에 나는 나의'녹슬기 시작'시리즈에서 좀 쉬고 다른 주제에 집중하고 싶다.나는 이미 상세하게 썼다my blogging stack.
그러나 나는 한 가지 측면을 건드리지 않았다. 그것이 바로 내가 Jekyll에서 정적 페이지를 만드는 방식이었다.내가 블로그 글에서 묘사한 바와 같이, 나는 이미 많은 맞춤형 제작을 포함했다.그 중 일부는 외부 의존이 필요하다. 예를 들어 다음과 같다.
  • PlantUML 그림에서 생성된 JRE
  • 같은 원인의graphviz포장
  • 한 마디로 하면, 이것은 내가 완전히 설정된 시스템이 필요하다는 것을 의미한다.나는 컨테이너 운송으로 이 문제, 즉 Docker를 해결했다.Dockerfile에서 필요한 모든 의존항을 설치할 수 있습니다.그리고 GitLab 구축 파일에서 이 이미지를 인용하여 모든 기능에서 이득을 볼 수 있습니다.
    image: registry.gitlab.com/nfrankel/nfrankel.gitlab.io:latest
    
    # ...
    

    갱신, 험난한 길
    제키르는 루비 위에 세워졌다.Ruby의 공유 라이브러리는gems라고 합니다.나는 그중의 일부를 사용했고, 제키르 보석 자체도 사용했다.장기적인 Maven 사용자로서 저는 Ruby 세계에서 같은 효과를 가진 의존 관계 관리 유틸리티를 검색했는데 우연히 발견했습니다Bundler.

    Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions needed.


    Bundler는 Gemfile 파일을 기반으로 합니다.그것은 npmpackage.json와 유사하다.bundle install를 실행하면 Gemfile.lock 최신 버전의gems를 만듭니다.bundle update를 사용하면 업데이트됩니다.
    지금까지 업데이트된 내용은 다음과 같습니다.
  • gems를 최신 버전으로 업데이트
  • 내 노트북
  • 에 Docker 이미지 만들기
  • 내 프로젝트의 GitLab 레지스트리에 이미지 업로드
  • 잠금 파일에 변경 내용 제출
  • 추진
  • 반대로 GitLab의 구축을 촉발하고 GitLab 페이지에 내 사이트를 배치한다.
  • 다음과 같은 몇 가지 단점이 있습니다.
  • 노트북에 Docker가 필요합니다.물론, 나는 이미 있지만, 모두가 만족하는 것은 아니다.
  • 구축 시간 및 CPU 시간
  • 이미지가 스토리지 공간을 차지합니다.나는 그것을 깨끗이 정리할 수 있지만, 이것은 또 나의 시간을 낭비했다.
  • 그것은 나의 네트워크를 막았다.나의 업로드 속도가 매우 제한되어 있기 때문에, 나는 업로드할 때 인터넷과 관련된 어떤 일도 할 수 없다.

  • 갱신, 똑똑한 방식
    나는 최근에 우연히 아주 좋은 예를 발견했다.글에서 저자는 Kaniko:

    kaniko is a tool to build container images from a Dockerfile, inside a container or Kubernetes cluster.

    kaniko doesn't depend on a Docker daemon and executes each command within a Dockerfile completely in userspace. This enables building container images in environments that can't easily or securely run a Docker daemon, such as a standard Kubernetes cluster.

    kaniko is meant to be run as an image: gcr.io/kaniko-project/executor.


    이것은 Docker 이미지 구축 부분을 구축 과정 자체로 이동할 수 있음을 의미합니다.새로운 프로세스:
    지금까지 업데이트된 내용은 다음과 같습니다.
  • gems를 최신 버전으로 업데이트
  • 잠금 파일에 변경 내용 제출
  • 추진
  • 즐겨라!
  • 이 점을 실현하기 위해서 나는 반드시 문서를 매우 깊이 있게 훑어보아야 한다.나는 또한 구축 파일을 '새' 문법으로 옮겼다.새 버전은 다음과 같습니다.
    stages:
      - image                                                                        # 1
      - deploy                                                                       # 1
    
    build:                                                                           # 2
      stage: image                                                                   # 3
      image:
        name: gcr.io/kaniko-project/executor:debug                                   # 4
        entrypoint: [""]                                                             # 5
      script:
        - mkdir -p /kaniko/.docker
        - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json # 6
        - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG                 # 7
      only:
        refs:
          - master
        changes:
          - Gemfile.lock                                                             # 8
    
    pages:                                                                           # 2
      stage: deploy                                                                  # 3
      image:
        name: registry.gitlab.com/nfrankel/nfrankel.gitlab.io:latest                 # 9
    # ...
    
  • 정의 단계.단계 순서: 여기imagedeploy 전에 운행됩니다.
  • 정의 작업
  • 작업은 단계와 관련이 있다.기록으로 동일한 단계와 관련된 작업이 병행 운행되다.
  • Kaniko Docker 이미지debug 스타일을 사용합니다.이것은 필요하지 않지만, 이 그림은 문제가 발생했을 때 디버깅을 개선하기 위한 작업을 기록합니다.
  • 리셋entrypoint
  • 다음 줄의 Docker 등록표를 전송하는 데 사용할 Kaniko를 만듭니다
  • 제공된 Dockerfile로 이미지를 구축하여 프로젝트의 Docker 레지스트리로 전송합니다.GitLab은 여기에 사용된 모든 환경 변수를 전달합니다
  • .
  • 파일이 변경된 경우Gemfile.lock만 이 작업을 실행합니다.
  • 이전에 생성된 이미지
  • 로 정적 사이트 생성

    결론
    이 글은 Kaniko 이미지를 사용하여 파이프를 구축하는 Docker 부분을 로컬 기기에서 GitLab로 마운트 해제하는 방법을 보여 줍니다.그것은 시간과 자원을 절약했다.나의 유일한 유감은 내가 자동화의 확고한 지지자이기 때문에 일찍 해야 한다는 것이다.
    마지막 단계를 놓쳤습니다. 의존 항목을 업데이트하고 통합 요청을 만드는 작업을 계획합니다.
    한 걸음 더 나아가 말하면:

  • Use kaniko to build Docker images
  • Keyword reference for the .gitlab-ci.yml file

  • GitLab's predefined variables reference
  • 최초 발표는 2021년 8월 1일A Java Geek

    좋은 웹페이지 즐겨찾기