CDS는 GO (LANG)에서 작성된 엔터프라이즈 등급 연속 전달 및 DevOps 자동화 플랫폼입니다.
이 프로젝트는 적극적으로 개발 중입니다
선적 서류 비치
CDS는 복잡한 워크 플로를 만들고 실행하고 필요할 때 로그를 파헤칠 수있는 직관적 인 UI를 제공합니다.
CDS UI로 워크 플로를 생성하고 실행하십시오.
CDSCTL은 CDS 명령 줄입니다. CDSCTL은 cdsctl shell 같은 멋진 명령을 제공하여 브라우저를 열 필요없이 프로젝트 및 워크 플로우를 찾아 볼 수 있습니다.
모든 CDSCTL 명령을 참조하십시오
CDS 명령 줄을 사용하여 코드로 워크 플로를 만듭니다.
Docker-Compose는 당신의 친구입니다. 준비 할 준비가 된 튜토리얼을 참조하십시오
CI/CD 도구의 대부분은 파이프 라인 내부에서 작업을 수행합니다. CDS는 CDS Workflows 는 새로운 개념을 소개합니다. CDS 워크 플로우를 사용하면 트리거로 파이프 라인을 체인 할 수 있습니다. 파이프 라인은 하나 또는 다중 동시 작업을 포함하는 순차적 단계로 구성됩니다.
예! CD는 2015 년 @OVH 이후 생산에 사용되며 연간 7M 이상의 CDS 근로자를 출시합니다. https://github.com/ovh/cds/releases에 제공되는 공식 릴리스를 설치할 수 있습니다
CDS는 생산 활동을 모니터링하고 측정하는 데 필요한 모든 것을 제공합니다 (로그, 메트릭, 모니터링)
모든 데이터는 데이터베이스에 저장됩니다 - 파일 시스템에는 아무것도 없습니다. 데이터베이스를 정기적으로 백업하면 안전합니다.
핵심 팀은 Github에서 제공됩니다
그들 사이의 고립을 유지하면서 여러 작업을 동시에 운영 할 수 있습니다. 파이프 라인 내부의 단계 및 작업에 대해 문서를 참조하십시오. 파이프 라인은 0 또는 1 응용 프로그램, 0 또는 1 환경의 컨텍스트로 시작됩니다.
워크 플로우를 사용하면 파이프 라인을 체인 할 수 있습니다. 이것은 CD의 주요 기능입니다. 하나 이상의 파이프 라인, 조인 또는 포크와 연결할 수있는 파이프 라인을 사용하여 워크 플로를 만들 수 있습니다.
워크 플로 빌더가 하나만 있고 전체 마이크로 서비스 스택을 배포하는 것을 상상할 수 있습니다. 동일한 파이프 라인을 워크 플로에서 여러 번 사용할 수 있으므로 응용 프로그램이나 환경을 연관시킬 수 있습니다. 수백 개의 응용 프로그램이 있더라도 하나의 배포 파이프 라인과 1 개의 구축 파이프 라인 만 유지할 수 있습니다.
워크 플로 템플릿을 사용하면 여러 팀에서 워크 플로를 공유하고 재사용 할 수 있습니다. 모든 사용자는 워크 플로 템플릿을 만들고 코드 또는 UI로 유지하고 단일 작업으로 워크 플로 세트를 대량 업데이트 할 수 있습니다.
회사는 사전 정의 된 워크 플로우 카탈로그를 제공하여 모든 팀의 테스트 및 배포 관행을 표준화 할 수 있습니다.
또한 템플릿이 확장 가능한 중앙 관리를 허용하기 때문에 유지 보수 노력이 줄어 듭니다.
웹 UI로 모든 것을 구성 할 수 있습니다. 복잡한 사용 사례가 있더라도 일반적으로 워크 플로를 그래픽으로 만들기가 더 쉽습니다.
코드로서의 파이프 라인은 잘 알려진 CI / CD 도구 개념입니다. CDS는 한 단계 더 나아가 워크 플로를 코드로 제공합니다. 이는 워크 플로의 YAML 구성 파일 ( + 파이프 라인, + 응용 프로그램, + 환경)을 사용하여 git-pushing으로 수행됩니다. 이것은 마스터 브랜치의 변경 사항을 병합하기 전에 개발 분기에서 새 워크 플로를 테스트 할 수 있으므로 특히 유용합니다.
UI로 워크 플로를 수정할 수 있으며 원하는 경우 UI에서 YAML 파일을 직접 편집하여 구성을 수정할 수도 있습니다. 이것은 워크 플로우 코드 기능을 사용하는 방법을 배우는 훌륭한 방법입니다.
분기 패턴을 기반으로 빌드를 시작하는 기능. 예를 들어, Dev/* 브랜치를 "준비"하고 마스터 브랜치를 "prod"로 배포 할 수 있습니다.
CDS의 기본 동작은 모든 GIT 커밋에서 전체 워크 플로를 시작하는 것입니다. 이 동작은 "실행 조건"을 사용하여 변경 될 수 있습니다.
가장 인기있는 GIT 기반 제품과의 2 방향 통합.
CD는 기본적으로 Github, Gitlab, Bitbucket Server 및 Gerrit을 지원합니다. GIT Repo와 CDS 간의 링크는 CDS 응용 프로그램을 통해입니다. 1 Git Repository == A CDS 애플리케이션. 이 통합을 통해 CD는 커밋, 성공 또는 실패의 빌드 상태를 넓힐 것입니다.
CD는 단일 워크 플로 내에서 다른 GIT 리포지토리에서 복제 할 수 있습니다. CDS 워크 플로에는 여러 다른 응용 프로그램이 포함될 수 있습니다.
직무를 지원하기 위해 임시 서비스 (데이터베이스, 웹 서버 등)를 시작하는 기능. 이것은 코드를 테스트하는 동안 특히 편리합니다.
CD에서는 이러한 서비스를 서비스 전제 조건이라고합니다. 해당 Docker 이미지를 지정하고 매개 변수를 실행하면됩니다.
간단한 예를 들어보세요 : 응용 프로그램이 포함 된 Docker 이미지를 작성하는 파이프 라인이 있습니다. 응용 프로그램에는 Redis와 PostgreSQL이 필요합니다. CDS 작업에서 Redis, PostgreSQL 및 응용 프로그램의 세 가지 전제 조건 서비스를 넣을 수 있습니다. CD는 서비스간에 개인 네트워크를 만들어 서로 의사 소통 할 수 있도록 관리합니다. 따라서 CDS 작업은 실제 데이터베이스 및 실제 캐시로 시작하여 응용 프로그램에서 통합 테스트를 수행 할 수 있습니다.
https://ovh.github.io/cds/docs/concepts/requirement/requirement_service/를 읽으십시오.
원격 캐시는 개발자 팀 및/또는 CI (Continuous Integration) 시스템에서 사용하여 빌드 출력을 공유합니다. 빌드가 재현 가능하면 한 머신의 출력을 다른 기계에서 안전하게 재사용 할 수있어 빌드를 훨씬 더 빨리 만들 수 있습니다.
DOC : https://ovh.github.io/cds/docs/components/worker/cache/
Enterprise-Grade 플랫폼으로서 CDS는 이벤트 버스에서 광범위한 내부 이벤트 (예 : 빌드 완료)를 보낼 수 있습니다. 이 이벤트 흐름은 다른 서비스 (보고, 알림 등)를 공급할 수 있습니다.
수동으로 또는 git 푸시 또는 스케줄러를 통해 또는 웹 후크를 통해 워크 플로를 시작하는 기능. 위의 것 외에도 CD는 이벤트 버스 (Kafka 또는 RabbitMQ)를 사용하여 트리거 될 수 있습니다.
분리 된 액세스 권한으로 안전한 방식으로 여러 환경 (예 : Dev/Prod/Staging)을 관리하는 기능. 실제로 환경은 워크 플로우에서 사용할 수있는 변수 세트입니다.
CDS를 사용하면 사전 제작 환경에서 배포 파이프 라인을 사용하고 생산 환경에서 동일한 배포 파이프 라인을 사용할 수 있습니다. 생산에 배치하는 기능은 사전 확립 된 사용자 그룹으로 제한 될 수 있습니다.
사용자는 자유롭게 그룹을 만들고 그룹에서 사용자를 관리 할 수 있습니다. 그룹은 프로젝트와 워크 플로를 읽고, 쓰고, 실행할 수있는 권리를 가질 수 있습니다. 원하는 경우 일부 파이프 라인의 실행을 일부 그룹으로 제한 할 수도 있습니다.
CD를 CI / CD 도구로 사용하는 경우 아티팩트가 구축 될 수 있습니다. CDS 작업은 서로 격리되어 있지만 아티팩트 업로드 및 아티팩트 다운로드 작업을 사용하여 아티팩트를 한 작업에서 다른 작업으로 전달할 수 있습니다. CDS 작업이 끝나면 모든 파일이 작업자로부터 삭제됩니다. 아티팩트를 지속 시키려면 CDS는 신속한 스토리지 또는 주어진 파일 시스템을 사용할 수 있습니다 (권장하지 않음).
CDS는 빌드 중에 감지 된 단위 테스트 및 취약점의 결과를 명확하게 표시합니다.
CDS 프로젝트는 세입자와 같습니다. 모든 사용자는 CDS 프로젝트를 만들 수 있으며,이 프로젝트는 응용 프로그램, 환경, 파이프 라인 및 물론 워크 플로를 하나로 모을 것입니다.
CDS 프로젝트는 서로 격리되어 있지만 원하는 경우 같은 그룹이 여러 프로젝트에 대한 액세스 권한을 가질 수 있습니다.
작업자 모델은 작업자 실행 컨텍스트입니다. 가정 할 당랑 v1.11.5가 필요한 작업을 실행해야합니다. CDS에서는 1.11.5 버전의 GO를 포함하는 Go Worker 모델 만 만들어야합니다. 작업자 모델은 Docker 이미지, OpenStack 이미지 또는 vSphere 이미지 일 수 있습니다. CDS 관리자는 공유 작업자 모델을 제공 할 수 있지만 사용자는 원하는 경우 자신의 템플릿 작업자를 만들 수 있습니다.
CDS 프로젝트에서는 OpenStack, Kubernetes 등과 같은 통합을 추가 할 수 있습니다 ... 워크 플로우 내에서 기능을 제공합니다. 예를 들어, Kubernetes 통합을 사용하면 CDS 프로젝트에 고유 한 클러스터를 추가하여 배포 응용 프로그램 조치를 사용하여 원하는 경우 Helm 형식의 클러스터에 새로 구축 된 응용 프로그램을 클러스터에 배포 할 수 있습니다. 물론 자신의 통합을 개발할 수 있습니다.
이전 요점을 읽은 후에는 이해했습니다. 셀프 서비스는 어디에나 있습니다. 모든 사용자는 프로젝트/워크 플로/작업자 모델/워크 플로우 템플릿/작업을 만들고 완전히 고립 된 환경에서 작업을 실행할 수 있습니다. CDS 프로젝트는 건축업자이며 통합을 추가 할 수 있습니다. 이 모든 것을 사용하면 회사 전체에 대한 CD 인스턴스를 하나만 가질 수 있습니다.
UI로 할 수있는 모든 것은 "CDSCTL"이라는 명령 줄 인터페이스 (CLI)를 통해 사용할 수 있습니다. CDSCTL은 Darwin, FreeBSD, Linux, OpenBSD 등 모든 OS에서 사용할 수 있습니다. CDSCTL을 사용하면 워크 플로우를 생성, 시작, 내보내기, 수출, CD를 모니터링하고 프로젝트 및 워크 플로우를 탐색 할 수 있습니다. COMM의 UI 또는 저장소 관리자로 이동하여 Commit git push && cdsctl workflow --track 상태를 확인할 필요가 없습니다.
더욱 고급 자동화 요구가 있거나 CD를 쿼리하는 응용 프로그램을 개발하려는 욕구가 있습니까? REST API와 SDK를 사용하면 소프트웨어를 쉽게 개발할 수 있습니다.
CDS는 2016 년 10 월부터 오픈 소스였습니다. 회사 나 집에 자유롭게 설치할 수 있습니다. CD, Docker-Compose, Binaries와 함께 설치하는 데 도움이되는 일부 튜토리얼을 사용할 수 있습니다.
고 가용성은 CI / CD 도구의 매우 중요한 지점입니다. CDS는 상태가없고 파일 시스템에 아무것도 저장되지 않습니다. 따라서로드 밸런서 뒤에 여러 CDS API를 실행할 수 있습니다. 따라서 CD의 API를 필요에 따라 확장 할 수 있습니다. 또한 사용자에게 영향을주지 않고 하루 종일 CD를 업그레이드 할 수 있습니다. 프로덕션 @OVH에서 CD는 사용자에게 영향을 미치거나 CD 직원을 중지하지 않고 하루에 여러 번 업데이트 할 수 있습니다. 지속적인 전달 도구를 업데이트하는 동안 사용자가 작업을 중단하도록 요청하는 것은 아이러니하지 않습니까? ;-)
CDS는 기본적으로 모니터링 데이터를 노출시킵니다. Beamium을 사용하여 Prometheus 또는 Warp10 인스턴스를 공급할 수 있습니다.
CDS 작업은 단계로 구성됩니다. 각 단계는 내장 유형 액션 (스크립트, 체크 아웃 application, 아티팩트 업로드/다운로드 ...)입니다. 행동을 만들거나 기존 작업을 사용하거나 플러그인으로 동작을 개발할 수 있습니다. 언어가 GRPC를 지원하는 한 모든 언어는 지원됩니다.
CD는 언어 및 플랫폼에 비해 적절합니다. 사용자는 Linux, Windows, FreeBsd, OS X, Raspberry에서 작업을 시작할 수 있습니다. 주문형 가상 기계에서 Docker 컨테이너, 전용 호스트에서 작업을 시작할 수 있습니다.
따라서 회사가 여러 기술을 사용하는 경우 CD는 내부 소프트웨어를 구축하고 배포하는 차단제가 아닙니다.
OVH에서 CD의 초기 목표 중 하나 : 150 응용 프로그램을 7 분 이내에 컨테이너로 빌드 및 배포하십시오. 이것은 2015 년부터 현실이되었습니다. 비밀 키는 무엇입니까? 주문에 자동 스케일!
따라서 수백 개의 작업자 모델을 가질 수 있으며 필요한 경우 CDS는 해칭을 사용하여 작업자를 시작합니다.
부화장은 인큐베이터와 같습니다.
여러 유형의 부화장이 있습니다.
그렇습니다. 유행어 여부에 관계없이, 다중 클라우드 자동 규모의 온 디맨드는 CDS의 현실입니다 :-)
3-Clause BSD