gitlab CI / CD에서 하위 모듈을 업데이트하는 방법

코드 위드

다음 트리에 구성된 프로젝트가 있습니다.

|.
|..
|-- devops
|-- project1
|-- project2

devops 폴더에는 다른 두 프로젝트를 하위 모듈로 포함했습니다.이 두 프로젝트는 두 팀이 독립적으로 개발하기 때문입니다.

|.
|..
|-- project1@0deed0fa
|-- project2@0beef0fb
|-- .gitlab-ci.yml

프로젝트를 배포하기위한 파이프 라인을 설정했습니다. 프로젝트에 새 커밋이있을 때마다 devops프로젝트 파이프 라인 을 실행하기위한 트리거가 설정됩니다 . devops 작업의 일부로 git submodule가져 오기 및 병합 명령을 실행 합니다. 그런 다음 빌드하십시오. 효과가있다.

내가 가진 문제는 일정 기간 동안 서브 모듈에 많은 변경 사항이 있다는 것입니다. 마지막 서브 모듈 커밋에서 devops 프로젝트 폴더로의 변경 사항은 프로젝트에 커밋이있을 때마다 재생됩니다. 한 달에 한 번 devops프로젝트 폴더를 수동으로 업데이트 하고 하위 모듈 프로젝트의 최신 커밋 으로 업데이트합니다 . devops 파이프 라인 작업에서 변경 사항을 커밋 할 수 있지만 동일한 devops 파이프 라인에 새 파이프 라인이 생성됩니다. (나는 그것을 테스트하지 않았지만 분명해 보입니다).

devops 파이프 라인의 일부로 하위 모듈을 최신 커밋으로 업데이트 할 수있는 방법이 있습니까?

감사.

DV82XL

바이너리를 한 번만 빌드하십시오

git 하위 모듈을 사용하는 것은 통합 파이프 라인을 구현하는 모범 사례가 아닙니다. 중요한 책 Continuous Delivery 는 섹션 Only Build Your Binaries Once(5 장) 에서 다음과 같이 설명합니다 .

많은 빌드 시스템은 버전 제어 시스템에 보관 된 소스 코드를 여러 단계의 표준 소스로 사용합니다. 코드는 커밋 프로세스 동안 다른 컨텍스트에서 반복적으로 컴파일됩니다. 다시 승인 테스트 시간에 [등] 코드를 컴파일 할 때마다 약간의 차이가 발생할 위험이 있습니다.

또한 다시 컴파일하는 데 많은 시간이 걸리므로 피드백주기가 더 길어집니다. 권장 사항은 다음과 같습니다.

빌드의 커밋 단계 동안 바이너리를 한 번만 빌드해야합니다. 이러한 바이너리는 파이프 라인의 나중 단계에서 쉽게 검색 할 수있는 [...] 파일 시스템에 저장되어야합니다.

CI / CD 파이프 라인 흐름

이 패러다임을 따르면 워크 플로는 다음과 같습니다.

  1. 개발자의 기능을 가지 작업을 project1하고 project2커밋 밀어 버린다
  2. 바이너리 빌드 하고 단위 / 구성 요소 테스트를 실행하고 컨테이너를 패키징 하는 프로젝트 파이프 라인이 트리거 됩니다.
  3. 모든 것이 통과되면 바이너리 또는 컨테이너가 "개발"저장소에 배포 됩니다.
  4. 프로젝트 파이프 라인은 리포지토리에서 바이너리 / 컨테이너를 다운로드 하는 다운 스트림 devops 파이프 라인을 트리거 합니다.
  5. devops 파이프 라인은 종단 간 테스트를 실행합니다.
  6. 종단 간 테스트를 통과하면 바이너리 / 컨테이너가 저장소에 배포 (일명 승격 됨)됩니다.release
  7. Continuous Delivery를 수행하는 경우 여기에서 프로덕션에 배포하지만 많은 팀이 수동 작업에서 버튼을 누르는 것을 선호합니다.

소스 코드가 어떻게 한 번만 빌드되는지 주목하십시오.

인기있는 바이너리 저장소

많이 사용되는 바이너리 저장소가 많이 있습니다. 대부분은 무료 및 유료 프로 버전이 있습니다. 자세한 내용은 웹 사이트를 확인하세요.

  1. GitLab 작업 아티팩트
  2. GitLab 패키지 레지스트리 또는 GitLab Container Registry
  3. GitHub 패키지 레지스트리 또는 GitHub Container Registry
  4. JFrog Artifactory
  5. Nexus 저장소
  6. 클라우드 스토리지 컨테이너 레지스트리 ( AWS ECR , GCP CR , Azure CR )

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Gitlab-CI에서 SilverStripe 모듈 테스트를위한 환경을 설정하는 방법

분류에서Dev

.gitlab-ci.yml에서 작업을 재사용하는 방법

분류에서Dev

React-native iOS 앱을위한 CI / CD 파이프 라인 빌드 : gitlab-ci에서 expo 빌드를 실행하는 방법은 무엇입니까?

분류에서Dev

이 구조에서 하위 모듈 gitlab을 사용하는 방법

분류에서Dev

Gitlab CI 작업에 값을 전달하는 방법

분류에서Dev

GitLab CI의 다중 프로젝트 파이프 라인에서 작업 간 연결을 실행하는 방법

분류에서Dev

Gitlab CI가 새로 업데이트 된 하위 모듈을 체크 아웃하지 않습니다.

분류에서Dev

오류 구문 분석 트리거를 수정하는 방법 : Gitlab CI에 Firebase 함수를 배포 할 때 '../../ 모듈을 찾을 수 없습니다.

분류에서Dev

gitlab-ci.yml에서 이미지 플랫폼을 지정하는 방법

분류에서Dev

Gitlab CI / CD를 통해 자체 서버에 Docker 서비스를 배포하는 적절한 방법

분류에서Dev

GitLab CI 작업에서 셸없이 컨테이너를 실행하는 방법

분류에서Dev

Gitlab에서 하위 모듈 저장소를 그룹화하는 방법

분류에서Dev

GitLab CI YAML 파일에 PowerShell 스크립트 파일을 포함하는 방법

분류에서Dev

GitLab CI에서 Python 및 R을 사용하는 방법은 무엇입니까?

분류에서Dev

Django에서 사용하기 위해 Gitlab CI / CD에서 REDIS 구성

분류에서Dev

GitLab CI 아티팩트를 Openshift 컨테이너에 업로드하는 방법이 있습니까?

분류에서Dev

목록 내에서 위젯을 업데이트하는 방법

분류에서Dev

Gitlab CI : 각 커밋에서 이미지 재 빌드를 방지하는 방법

분류에서Dev

Eclipse에서 멀티 모듈 프로젝트 버전을 업데이트하는 편리한 방법

분류에서Dev

.gitlab-ci.yml의 GitLab CI에서 모든 최신 도구 (Ruby, Node.js, Bower, Grunt, Jekyll)를 배포하는 방법

분류에서Dev

AngularJS에서 하위 모듈을 선언하는 방법

분류에서Dev

Orchard 맞춤 모듈 버전을 업데이트하는 방법

분류에서Dev

Windows에서 Ruby와 관련된 openssl 모듈을 업데이트하는 방법은 무엇입니까?

분류에서Dev

도커를 사용하여 Gitlab CI에서 gitversion을 수행하는 방법은 무엇입니까?

분류에서Dev

Gitlab CI를 사용하여 Heroku에 Showoff 애플리케이션을 배포하는 방법

분류에서Dev

Azure TFS를 사용하여 CI / CD 파이프 라인에서 앱 설정을 구성하는 방법

분류에서Dev

Gitlab CI / CD : 'src / css / index.css'모듈을 찾을 수 없습니다. 이 패키지가 설치되어 있는지 확인하십시오

분류에서Dev

GitLab CI : 스크립트가 실패하더라도 작업을 계속하는 방법

분류에서Dev

GitLab CI : .gitlab-ci.yml 스크립트에서 시작된 Docker 컨테이너에 연결하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Gitlab-CI에서 SilverStripe 모듈 테스트를위한 환경을 설정하는 방법

  2. 2

    .gitlab-ci.yml에서 작업을 재사용하는 방법

  3. 3

    React-native iOS 앱을위한 CI / CD 파이프 라인 빌드 : gitlab-ci에서 expo 빌드를 실행하는 방법은 무엇입니까?

  4. 4

    이 구조에서 하위 모듈 gitlab을 사용하는 방법

  5. 5

    Gitlab CI 작업에 값을 전달하는 방법

  6. 6

    GitLab CI의 다중 프로젝트 파이프 라인에서 작업 간 연결을 실행하는 방법

  7. 7

    Gitlab CI가 새로 업데이트 된 하위 모듈을 체크 아웃하지 않습니다.

  8. 8

    오류 구문 분석 트리거를 수정하는 방법 : Gitlab CI에 Firebase 함수를 배포 할 때 '../../ 모듈을 찾을 수 없습니다.

  9. 9

    gitlab-ci.yml에서 이미지 플랫폼을 지정하는 방법

  10. 10

    Gitlab CI / CD를 통해 자체 서버에 Docker 서비스를 배포하는 적절한 방법

  11. 11

    GitLab CI 작업에서 셸없이 컨테이너를 실행하는 방법

  12. 12

    Gitlab에서 하위 모듈 저장소를 그룹화하는 방법

  13. 13

    GitLab CI YAML 파일에 PowerShell 스크립트 파일을 포함하는 방법

  14. 14

    GitLab CI에서 Python 및 R을 사용하는 방법은 무엇입니까?

  15. 15

    Django에서 사용하기 위해 Gitlab CI / CD에서 REDIS 구성

  16. 16

    GitLab CI 아티팩트를 Openshift 컨테이너에 업로드하는 방법이 있습니까?

  17. 17

    목록 내에서 위젯을 업데이트하는 방법

  18. 18

    Gitlab CI : 각 커밋에서 이미지 재 빌드를 방지하는 방법

  19. 19

    Eclipse에서 멀티 모듈 프로젝트 버전을 업데이트하는 편리한 방법

  20. 20

    .gitlab-ci.yml의 GitLab CI에서 모든 최신 도구 (Ruby, Node.js, Bower, Grunt, Jekyll)를 배포하는 방법

  21. 21

    AngularJS에서 하위 모듈을 선언하는 방법

  22. 22

    Orchard 맞춤 모듈 버전을 업데이트하는 방법

  23. 23

    Windows에서 Ruby와 관련된 openssl 모듈을 업데이트하는 방법은 무엇입니까?

  24. 24

    도커를 사용하여 Gitlab CI에서 gitversion을 수행하는 방법은 무엇입니까?

  25. 25

    Gitlab CI를 사용하여 Heroku에 Showoff 애플리케이션을 배포하는 방법

  26. 26

    Azure TFS를 사용하여 CI / CD 파이프 라인에서 앱 설정을 구성하는 방법

  27. 27

    Gitlab CI / CD : 'src / css / index.css'모듈을 찾을 수 없습니다. 이 패키지가 설치되어 있는지 확인하십시오

  28. 28

    GitLab CI : 스크립트가 실패하더라도 작업을 계속하는 방법

  29. 29

    GitLab CI : .gitlab-ci.yml 스크립트에서 시작된 Docker 컨테이너에 연결하는 방법은 무엇입니까?

뜨겁다태그

보관