0

우리는 젠킨스에서 gitlab로 우리 CI를 이동시킬 생각입니다. 우리는 동일한 빌드 워크 플로우를 가진 여러 프로젝트를 보유하고 있습니다. 지금 우리는 파이프 라인이 정의 된 공유 라이브러리를 사용하고 프로젝트 내의 jenkinsfile은 실제 파이프 라인을 정의하는 공유 라이브러리에 정의 된 메소드 만 호출합니다. 따라서 변경 사항은 여러 프로젝트에 영향을 미치는 단일 지점에서만 이루어져야합니다.프로젝트 간 gitlab-ci.yml 공유

gitlab ci에서도 동일한 기능을 사용할 수 있는지 궁금합니다. 내가 알기 론 저장소 밖에서 gitlab-ci.yml을 정의하는 것은 불가능합니다. 유지 보수를 단순화하기 위해 파이프 라인을 정의하고이 구성을 여러 프로젝트와 공유하는 또 다른 방법이 있습니까?

답변

2

먼저 다음과 같이 시작하겠습니다.이 질문에 감사드립니다. 이것이 나 자신이 가능할 지 궁금해지면서 해결책을 찾는다. 우리는 또한 20-30 개의 프로젝트가 상당히 동일하고 하나가 변경되면 각각 변경해야하는 파일이 약 400 - 500 loc 인 .gitlab-ci.yml 개의 파일을 가지고 있습니다.

그래서 나는 작업 솔루션을 발견 만든 Auto DevOps .gitlab-ci.yml template Gitlab 자체에서 영감을

, 그리고 그들을로드 define all functions usedcall 모든 before_script에 하나의 템플릿 작업을 사용하는 경우, 나는 다음과 같은 설정을 함께했다.

  • 여러 프로젝트의 repo의 (project-1, project-2)

    그래서를 사용하여 파일 별도의 repo

에서 모든 공유 기능을 포함하는 CI 작업/기능

  • Functions script의 공유 설정을 필요로하는 shared ci jobs scipt :

    .gitlab-ci.yml 일반 및 일반 :

    image: ubuntu:latest 
    
    before_script: 
        # Install curl 
        - apt-get update -qqq && apt-get install -qqqy curl 
        # Get shared functions script 
        - curl -s -o functions.sh https://gitlab.com/giix/demo-shared-ci-functions/raw/master/functions.sh 
        # Set permissions 
        - chmod +x functions.sh 
        # Run script and load functions 
        - . ./functions.sh 
    
    job1: 
        script: 
        - current_job_info 
        - list_files 
    

    당신은 project-1에서 project-2에 파일을 복사 - 붙여 넣기 수 있고이 같은 공유 Gitlab CI 기능을 사용하는 것입니다.

    이 예제는 예제 용으로 매우 자세하게 표시되어 있으며 원하는대로 최적화 할 수 있습니다.

    :

    수업은 내가 그렇게 하드 방법을 찾을 필요가 없습니다 배운 교훈을 공유하고자 대규모 위 (40 개 + 프로젝트) 건설을 적용한 후

    그래서을 배웠다

    • 공유 된 ci 함수 스크립트의 버전 (태그/릴리스). 한 가지를 변경하면 모든 파이프 라인이 실패 할 수 있습니다.
    • 기능을로드 할 수 bash에 대한 요구 사항의 문제를 일으킬 수있는 다른 도커 이미지를 사용하여 (예를 들어, 나는 기본적으로 sh이 CLI 도구를 기반으로 작업에 대한 몇 가지 알파인 기반 이미지 사용)
    • 를 사용하여 프로젝트 기반의 CI/CD 비밀 변수는 프로젝트의 빌드 작업을 개인화합니다. 환경 URL 등
  • +0

    아이디어를 공유해 주셔서 감사합니다. 이것이 현재로서는 유일한 가능성 인 것으로 보인다. 새로운 일자리를 파이프 라인에 일괄 적으로 추가하는 것은 여전히 ​​불가능하지만 현재로서는 최선을 다할 수 있습니다. 감사! – pyriand3r

    관련 문제