GitLab은 지속적인 배포를 위한 원스톱 서비스입니다.
그러나 나는 한 가지 측면을 건드리지 않았다. 그것이 바로 내가 Jekyll에서 정적 페이지를 만드는 방식이었다.내가 블로그 글에서 묘사한 바와 같이, 나는 이미 많은 맞춤형 제작을 포함했다.그 중 일부는 외부 의존이 필요하다. 예를 들어 다음과 같다.
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
를 사용하면 업데이트됩니다.지금까지 업데이트된 내용은 다음과 같습니다.
갱신, 똑똑한 방식
나는 최근에 우연히 아주 좋은 예를 발견했다.글에서 저자는 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 이미지 구축 부분을 구축 과정 자체로 이동할 수 있음을 의미합니다.새로운 프로세스:
지금까지 업데이트된 내용은 다음과 같습니다.
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
# ...
image
가 deploy
전에 운행됩니다.debug
스타일을 사용합니다.이것은 필요하지 않지만, 이 그림은 문제가 발생했을 때 디버깅을 개선하기 위한 작업을 기록합니다.entrypoint
Dockerfile
로 이미지를 구축하여 프로젝트의 Docker 레지스트리로 전송합니다.GitLab은 여기에 사용된 모든 환경 변수를 전달합니다Gemfile.lock
만 이 작업을 실행합니다.결론
이 글은 Kaniko 이미지를 사용하여 파이프를 구축하는 Docker 부분을 로컬 기기에서 GitLab로 마운트 해제하는 방법을 보여 줍니다.그것은 시간과 자원을 절약했다.나의 유일한 유감은 내가 자동화의 확고한 지지자이기 때문에 일찍 해야 한다는 것이다.
마지막 단계를 놓쳤습니다. 의존 항목을 업데이트하고 통합 요청을 만드는 작업을 계획합니다.
한 걸음 더 나아가 말하면:
Reference
이 문제에 관하여(GitLab은 지속적인 배포를 위한 원스톱 서비스입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nfrankel/gitlab-as-your-continuous-deployment-one-stop-shop-58bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)