Java 파이프라인 예

다음 다이어그램은 Oracle 및 오픈 소스 툴을 사용하여 Java 파이프라인에 대한 개념적 빌드의 모양을 보여주는 예입니다. 더 나은 구축 프로세스를 사용하면 품질과 보안을 강화할 수 있습니다.
다음은 cicd-process-pipeline.png에 대한 설명입니다.
그림 cicd-process-pipeline.png에 대한 설명

파이프라인 조정자는 일반적으로 사용되는 몇 가지 도구를 사용하여 표시된 이 Java 파이프라인 예제에서 파이프라인 프로세스를 구동합니다. 다음은 프로세스의 단계입니다.

  1. 변경 코드

    SAST(정적 응용 프로그램 보안 테스트)를 사용하여 기본 Git 인증서 검사를 수행하고 파이프라인을 시작합니다. Gitflow 접근법을 사용하여 GitLab 또는 GithHub와 같은 도구를 사용하여 코드 구조화 방법에 따라 코드 저장소를 처리합니다. 소스 변경 사항을 제어하기 위해 버전 분기, 병합 및 릴리스를 포함하도록 코드를 구성할 수 있습니다. 이 코드는 개발, 테스트, 사전 운용 및 운용과 같은 환경에 매핑됩니다. 저장소의 여러 부분에서 Sast 작업을 트리거하도록 커밋합니다.

    • 예를 들어, GitHub는 정적 보안 스캔을 통합하여 코드 및 구성 파일 내에서 암호 및 토큰을 인식할 패턴을 찾습니다.
  2. 빌드 코드

    JAR/WAR/EAR을 생성하고 필요한 종속성을 가져옵니다. Java Apache Maven과 같은 툴을 사용하여 JAR(또는 관련 배치 가능 아카이브 파일)을 컴파일 및 생성하고 아티팩트를 서명할 수 있습니다.

    • 타사 종속성 관리: Snyk와 같은 도구를 사용하여 코드 종속성 및 타사 라이브러리를 관리합니다. 동기화는 허용된 소스에서부터 종속성이 올바른지 확인하고 악의적인 콘텐츠를 검색합니다. 외부 종속성 아티팩트를 검색, 검사, 승인 및 저장합니다. 타사 종속성을 관리하면 Archiva, Nexus OSS 등의 도구를 사용하여 종속성을 로컬에 저장할 수 있습니다. 또한 종속성을 제어하여 신뢰할 수 있는 원본이 있는지 확인할 수 있습니다. 따라서 Snyk, Nexus 또는 scanOS와 같은 도구를 사용하여 악의적인 콘텐츠에 종속성이 손상되지 않도록 할 수 있습니다.
  3. 품질 및 준수 확인

    OWASP 상위 10개 문제를 스캔하고 Sonarcube 또는 Lint와 같은 도구를 사용하여 코딩 표준 준수를 확인합니다.

  4. 단위 테스트 수행

    단위 테스트를 수행하고 JACOCO 및 JUnit를 사용하여 코드 범위 데이터를 캡처합니다. JACOCO는 실행된 코드 행 및 통계적 방식으로 테스트된 코드 양을 확인하는 것과 같은 적용 범위 모음을 제공합니다. JUnit는 단위 테스트를 실행합니다. 도움이 된다고 생각되면 설명을 확장하도록 선택할 수 있습니다.

  5. API 테스트 수행

    Dredd, Apiary 또는 Swagger Hub와 같은 툴을 사용하여 데이터를 모의하고 클라이언트를 테스트합니다.

  6. 테스트 구성요소 및 UX

    블랙박스 구성요소와 모든 UI 요소를 테스트합니다. 기본적인 문제가 없도록 성능을 측정합니다. Selenium 및 JMeter와 같은 툴을 사용하여 테스트 적용 범위 측정항목을 수집합니다. JMeter는 사용자 환경 및 성능 테스트를 수행하고 사용자 워크플로우를 테스트합니다. 셀레늄은 사용자 인터페이스 요소의 연습을 구동합니다.

  7. 보안 테스트

    Zap 사용 시 불법 API 호출, 과도한 페이로드, 주입 공격 등을 처리하는 방법과 같은 취약성에 대한 코드 테스트 중복 코드 및 준비된 SQL 문을 검사하여 보안 테스트를 수행합니다.

  8. 배치용 패키지

    솔루션을 컨테이너로 패키지화하고 패키징을 검증하며 Docker Snyk와 같은 툴을 사용하여 컨테이너 문제와 모범사례를 확인합니다.

  9. 설명서 생성

    유용한 설명서를 생성하여 사용할 수 있도록 합니다. Pandoc 또는 Doxygen과 같은 도구를 사용하여 공예에 서명합니다. Pandoc은 프로젝트를 다음 단계로 푸시하고 다음 단계에서 사용할 레지스트리와 같은 신뢰할 수 있는 저장소에 추가합니다.

이러한 단계 중 하나라도 실패하거나 프로세스에서 너무 많은 경고를 식별하면 빌드가 실패합니다. 빌드는 프로세스의 어느 지점에서든 실패할 수 있으며 후속 단계가 계속되지 않도록 할 수 있습니다. 실패한 빌드는 구성된 모든 자동 코드 프로모션을 금지합니다. 여러 단계로 구성된 빌드에 권장 툴 중 일부를 사용하여 각 단계에서 테스트 실행을 지원할 수 있습니다. 예를 들어, 시스템 레벨 테스트는 엔터프라이즈 솔루션 내의 다른 구성 요소의 작업을 시뮬레이션하는 대신 API 테스트 도구를 사용하여 시스템과 외부 서비스로 상호 작용할 수 있습니다.