블랙 볼

CI를 설정하는 것은 장시간의 서버 설정, Jenkins 연구, XML 설정 문제, 자바 메모리 문제를 의미했던 기억이 난다.어쩐지 새로운 프로젝트를 시작할 때 지속적인 테스트와 통합이 처음 떠오르는 일이 아니었더라니.
다행히도 지금은 상황이 달라졌다.GitHub Actions, CircleCI 또는 Travis 같은 서비스는 클라우드 서비스로 CI 흐름을 신속하게 처리할 수 있습니다.파이프 설정은 버전 제어 저장소의 코드 옆에 가지런히 저장되며, 새로운 제출을 도입할 때마다 변경 사항을 자동으로 가져옵니다.또한 컨테이너화 기술은 외부 종속 설정을 단순화하므로 복잡한 엔드 2엔드 테스트 환경에서도 YAML 행을 몇 줄로만 구성할 수 있습니다.
가장 좋은 것은 이러한 서비스는 통상적으로 개원 프로젝트에 대해 무료이다.
그러나 여러 해 동안 상술한 서비스를 사용할 때 한 가지 곤혹스러웠던 것은 어떻게 피해야 하는가DRY a.k.a. Don't Repeat Yourself원칙이었다.많은 프로젝트들이 유사한 CI 설정을 가지고 있는데, 특히 그것들이 관련되거나 같은 기술을 사용하여 실현될 때이다.과거에 나는 프로젝트 사이에서 붙여넣기 설정을 복사하거나 비슷한 절차를 반복하는 것을 발견했다. 이것은 내가 차라리 피하고 싶었던 일이다.
노드 세계를 예로 들자.js.노드 프로젝트의 유닛 테스트 CI 프로세스에는 일반적으로 다음 단계가 포함됩니다.
  • 작업의 기본 OS 및 OS 버전 선택
  • 노드를 선택하고 설치합니다.js버전
  • 클론 프로젝트 소스
  • (캐시를 찾은 경우) 캐시 로드 의존도
  • 설치 종속성
  • 실행 테스트
  • 의존항을 캐시에 저장
  • 만약 시스템이 용기에서 작업을 실행할 수 있도록 허락한다면, 단계 1-2를 결합시킬 수 있습니다. 기본 용기는 프로젝트에 필요한 모든 전역 기능을 미리 설치할 수 있습니다.그러나 귀하는 다른 절차를 정의하는 것을 피할 수 없습니다. 실제로는 단 한 단계, 즉 6단계만 있습니다. 응용 프로그램이나 서비스 개발자로서 저는 관심이 있습니다.이 과정을 처음 이해하고 정의한 후에 여러 항목에서 설정을 다시 사용할 수 있기를 바랍니다.
    다행히도 CI 서비스는 끊임없이 새로운 기능을 도입하였는데, 그 중 대부분은 어떤 방식으로 공공 모듈의 공유를 실현하였다.
    특히 모든 GitHub 사용자가 GitHub 조작을 사용할 수 있기 전에 CI에 대한 표준 선택은Circleci입니다.마지막Hacktoberfest에서 나는 공교롭게Circleci가 제작orbs에 있어서 추가적인 도전이 있다는 것을 알아차렸다.궁금해서 ORB는 바로 몇 년 전에 내가 줄곧 부족했던 것이다. "다시 사용할 수 있는 YAML 프로필 패키지. 이것은 중복된 프로필을 한 줄 코드로 압축한다."
    그래서 나는 ORB를 시험해 보고 나의 한 개인 노드에서 단원 테스트 작업을 바꾸기로 결정했다.js는 orb에서 온 작업을 사용하여 프로젝트를 진행합니다.CI 설정은 완전히 제 요구에 따라 편집되었습니다. 복제, 의존 항목 설치, 캐시 처리와 관련된 줄을 제거하고 테스트 명령만 남았습니다.CI 구성은 변경 전과 마찬가지로 15 줄로 축소되었습니다.

    Example of orb usage
    이 예에서 공통 기능은 Circleci가 작성합니다.Node orb위의 개인 프로젝트에서 사용했습니다.의존 관계 관리 및 테스트와 관련된 js 기본 작업 흐름입니다.하지만 자신의 구체를 만드는 것은 어떻습니까?Hacktoberfest의 도전은 바로 이 점에 관한 것이다. 즉, 의미 있는 CI 기능을 orb 모듈로 제공하여 여러 개의 저장소에서 사용할 수 있도록 하는 것이다.
    공교롭게도 나는 민감하지 않고 요소를 고려하지 않는 쓰기를 위해 문서 파일을 lints화하는 재미있는 문서 도구alexjs를 만났다.
    알렉스는'성 편애, 양극화, 인종 관련, 종교적 경시 또는 다른 불평등한 표현'을 찾아내는 데 도움을 줬다.나는 Alex가 나의 많은 프로젝트에 좋은 보충이 될 것이라고 생각한다. 특히 나는 영어 모국어가 아닌 사람이기 때문에 프로젝트 문서를 작성할 때 모든 도움을 받을 수 있어서 매우 기쁘다.또한,alex의 사용은 Node를 통해 이루어지기 때문에 npm 도구체인이 필요합니다.js.따라서 alex를 위해 orb를 실현하는 또 다른 동기는 Node 이외의 다른 기술을 바탕으로 하는 프로젝트에서 사용하는 것이다.js.
    Circleci 트랜잭션 a registry 에서 사용할 수 있는 모든 orb는 CI 작업 흐름에서 자신이 작성한 orb를 사용하기 전에 등록표에 발표해야 합니다.orb 개발을 시작하는 가장 간단한 방법은 설치circleci cli를 하고 설치an orb development kit를 사용하여 개발을 시작하는 것입니다.만약 당신이 집에서 개발 도구 꾸러미를 사용하고 싶다면 반드시 먼저 사용해야 한다a project template.
    orb 프로젝트 템플릿이 처음에는 강해 보일 수도 있습니다.
    소스 폴더에는 다음 섹션의 자리 표시자가 있습니다.
    콘셉트
    묘사
    명령하다
    단계 및 매개 변수, 그리고 이 단계가 셸 스크립트에 비치는 것
    예.
    등록표 문서에 표시된 용례 예시
    유언장 집행인
    작업 단계가 실행될 환경
    작업
    완전한 작업 정의, 심지어 다른 구체에서 온 절차와 결합할 수 있다
    극본
    실제 명령 기능을 실현하는 셸 스크립트
    테스트
    셸 스크립트의 테스트 스크립트
    나에게 있어서, 나는 내가 원하는 최종 결과를 실현하기 위해 이 개념들을 이해하는 데 시간이 걸렸다. 미리 설정된 작업을 제공하고, 알렉스와 함께 코드 검사와 linting을 한다.목표는 orb 사용자가 node를 사용하는 것처럼 orb를 가져오고 작업 흐름에서 작업을 호출하는 것입니다.이전의 js 테스트 예시.
    또 하나는 처음에 좀 어려웠던 게 orb CI 파이프였어.템플릿 항목은 orb linting 및 테스트를 위해 Circleci를 사용하도록 미리 구성되어 있습니다.이것은 심지어 orb의 개발 버전을 등록표에 포장하여 발표하고 최종 생산 버전을 발표하기 전에 실제 배치된 orb버전과 통합 테스트를 실시한다.(정성들여 설계한 절차라고 말하고 싶어요.😊)
    configure circleci cli
    성공적인 PR 병합 및 배포 후 CI 실행 로그
    그러나 일부 문서 조회, 탐정 작업과 시도를 통해 나는 최종적으로 일을 나의 계획에 따라 진행하게 했는데 그 결과 나는 볼 수 있었다.중요한 것은 CI가 나를 대표하여 orb를 성공적으로 발표할 수 있도록 Circleci 증빙서류를 my orb in the registry로 설정하는 법을 배우는 것이다.
    현재 orb를 사용하는 것은 매우 간단합니다.
    version: 2.1
    
    orbs:
      alexjs-orb: lauravuo/[email protected]
    
    workflows:
      lint:
        jobs:
          alexjs-orb/lint
    
    모든 것이 순조롭게 진행되고 작업이 성공하면 CI 출력에서 로그를 관찰할 수 있습니다.
    ...
    CHANGELOG.md: no issues found
    README.md: no issues found
    src/README.md: no issues found
    src/commands/README.md: no issues found
    src/examples/README.md: no issues found
    src/executors/README.md: no issues found
    src/jobs/README.md: no issues found
    src/scripts/README.md: no issues found
    src/tests/README.md: no issues found
    src/tests/test.md: no issues found
    CircleCI received exit code 0
    
    내 구체의 출처는 네가 자세히 보려고 하지 않도록 the organization context에서 찾을 수 있다.사실, 현재 orb등록센터에 발표된 모든 orb는 개원된 것이다.물론 개인 구체도 필요하기 때문에 앞으로 이 방면에서 무슨 일이 일어날지 보는 것이 흥미롭다.
    너는?어떤 CI 시스템을 사용하고 계십니까? 공유 기능에 유사한 지원이 있습니까?
    표지 사진 작성자GitHub

    좋은 웹페이지 즐겨찾기