window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster가 이미 존재합니다') } else { w.LeadBooster = { q: [], on: 함수 (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 함수 (n) { this.q.push({ t: 't', n: n }) }, } } })() CircleCI - The Codest
The Codest
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 산업 분야
    • 핀테크 및 뱅킹
    • E-commerce
    • 애드테크
    • 헬스 테크
    • 제조
    • 물류
    • 자동차
    • IOT
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
뒤로 화살표 뒤로 가기
2019-07-23
소프트웨어 개발

CircleCI

The Codest

데미안 와트로바

Software Engineer

CircleCI는 프로젝트 관리자로서 매우 간단하게 구성할 수 있는 도구입니다. 하지만 구성 자체도 간단할까요? 물론 이것은 프로젝트의 복잡성에 따라 다릅니다. 저희의 경우(모노 리포지토리)는 예상보다 더 어려웠습니다.

Ruby on Rails 프로젝트의 구성은 복잡하지 않습니다. 문서 는 config.yml의 각 요소를 정확하게 설명합니다. 하지만 여기서는 circleci 도구에 초점을 맞추고자 합니다. 코드 깨끗하고 좋은 연습을 보장합니다.

RUBOCOP

루보캅에 대해 소개할 필요가 없을 것 같지만, 익숙하지 않은 분들을 위해 설명하자면 정적 루비 코드 분석기이자 포매터입니다. 이미 루보캅을 사용하고 계신다면 프로젝트설정 파일에 CircleCI를 추가하기만 하면 됩니다:

 실행합니다:
    이름: Rubocop
    명령: 번들 실행 루보캅

ESLINT

ESLint는 ECMAScript에서 발견되는 패턴을 식별하고 보고하는 도구 또는 JavaScript 코드를 사용하여 코드의 일관성을 높이고 오류를 방지할 수 있습니다.

실행합니다:
    이름: Eslint
    명령: npm 실행 eslint

RSPEC

RSpec에서 테스트는 애플리케이션 코드를 검증하는 스크립트일 뿐만 아니라 애플리케이션이 어떻게 동작해야 하는지에 대한 자세한 설명을 간단한 영어로 표현한 것이기도 합니다:

실행합니다:
    이름: RSpec
    명령을 실행합니다: |
      mkdir /tmp/test-results
      TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
        circleci tests split --split-by=타이밍)"
      번들 실행 rspec
        --형식 진행
        --format RspecJunitFormatter
        --out /tmp/test-results/rspec.xml
        --format 진행
        $TEST_FILES

- store_test_results:
    경로 /tmp/test-results

RSpec의 경우, 테스트 결과를 이전에 생성한 카탈로그 /tmp/test-results의 rspec.xml 파일에 저장한 다음 다음을 사용하여 store테스트결과 키를 사용하여 주어진 카탈로그를 저장합니다. 이제 인사이트 탭에서 평균 컴파일 시간, 마지막 컴파일 시간 또는 성공률과 같은 정보에 액세스할 수 있습니다. 인사이트 탭에 대해 자세히 알아보세요. 여기. rspec.xml 파일을 "아티팩트"로 저장하려면 다음과 같이 store_artifacts 키를 설정 파일에 추가합니다.

 store_artifacts:
    경로 /tmp/test-results

브레이크맨

Brakeman은 Ruby on Rails 애플리케이션의 보안 취약점을 검사하는 정적 분석 도구입니다. 기본적으로 Brakeman은 보안 경고가 감지되거나 스캔 오류가 발생하면 0이 아닌 종료 코드를 반환합니다. 따라서 저희는 심각한 오류에만 집중하고 경고는 해제했습니다.

run:
    이름: 브레이크맨
    명령: 번들 실행 brakeman --no-exit-on-warn

스캔 결과도 RSpec과 같은 방식으로 저장하려는 경우, 구성은 다음과 같으며 아티팩트 탭에서 파일에 액세스할 수 있습니다.

 run:
    이름: Brakeman
    명령을 실행합니다: |
      mkdir /tmp/brakeman
      bundle exec brakeman --no-exit-on-warn -o /tmp/brakeman/output.json

- store_artifacts:
    경로 /tmp/brakeman

루비 크리틱

RubyCritic은 Reek, Flay, Flog와 같은 정적 분석을 위한 보석을 사용하여 코드의 품질에 대한 보고서를 제공하는 도구입니다. 보고서에는 A/B/C/D/F 등급, 프로젝트의 모든 파일, 스캔하고 개선이 필요한 정확한 위치, 각 경고가 포함된 문서(예: 너무 많은 방법). 이 도구는 프로젝트에서 컨설턴트 역할을 합니다. 받은 보고서를 바탕으로 코드를 실제로 수정해야 하는지 여부에 대한 최종 결정은 개발자에게 달려 있습니다. circleci 구성에서는 보고서를 작성하고 github에 결과를 담은 특별 코멘트를 보내는 별도의 작업이 할당되어 있습니다.

루비크리틱의 기본 구성은 이전 버전과 다르지 않습니다.

 실행합니다:
    이름: Rubycritic
    명령: 번들 실행 rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

- store_artifacts:
    경로 /tmp/rubycritic

기본적으로 ./app를 스캔할 디렉토리, 결과를 저장할 위치 -p /tmp/rubycritic(rubycritic이 자동으로 보고서를 저장할 디렉토리를 생성함), 형식 -f json 및 옵션 -no- 브라우저에 대한 정보가 포함된 번들을 실행합니다. 우리는 또한 보석 서클CI_커버리지_리포터스캔 후 풀 리퀘스트에 보고서 링크와 스캔한 파일의 백분율 등급이 포함된 댓글을 github에 남깁니다.

Ruby

위의 젬이 circleci와 함께 제대로 작동하려면 프로젝트에 추가하고 두 개의 키를 생성해야 합니다(그 중 하나는 circleci, 다른 하나는 github).

표준 설치:

  • 보석 파일
    gem 'circleci-coverage_reporter'
  • 레이크파일
    require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
  • .config.yml
 실행합니다:
    이름: 루비크리틱 실행
    명령: 번들 실행 루비크리틱 ./app -p /tmp/rubycritic -f json -f html --no-browser

 store_artifacts:
    경로 /tmp/rubycritic

 run:
    이름: 루비크리틱 알림
    명령: 번들 실행 레이크 서클CI:리포트_범위

이제 두 개의 키를 생성해야 합니다:

커버리지_리포터_서클CI_토큰

API 토큰

프로젝트의 '설정' 섹션으로 이동합니다. '토큰 생성'을 선택한 후 '전체'로 범위를 변경하고 토큰 레이블을 입력합니다. API에 대한 토큰이 생성되면

커버리지_리포터_VCS_토큰

토큰

리포지토리에 대한 키 범위

키를 생성한 후에는 환경 변수에 키를 추가해야 합니다. 설정:

환경 변수
변수 추가

샘플 구성:

작업:
  build:
    도커:
      - 이미지: circleci/ruby:2.5.1-node-browsers
      환경:
        번들 버전: 2.0.1
        BUNDLE_PATH: /bundle
        BUNDLE_JOBS: 4
        RAILS_ENV: test
    - image: circleci/postgres:10.1-alpine
      환경
        POSTGRES_USER: postgres
        POSTGRES_DB: example_test
        POSTGRES_PASSWORD: example
    - 이미지: circleci/redis:4.0.8-alpine
    working_directory: ~/insights
    환경
        TZ: 유럽/바르샤바
    steps:
      - checkout
      - run:
          이름: 번들러 버전 2.0.1 설치
          명령: gem 설치 번들러 -v 2.0.1
      - restore_cache:
          키
            - v1-ruby-dependencies-(( 체크섬 "Gemfile.lock" ))
            - v1-ruby-dependencies-
      - 실행합니다:
          이름: 번들 설치
          명령: 번들 검사 || 번들 설치
      - save_cache:
          키: v1-ruby-dependencies-(( 체크섬 "Gemfile.lock" ))
          경로
            - 벤더/번들
      - restore_cache:
          키
            - v1-npm-dependencies-(( 체크섬 "package.json" ))
            - v1-npm-dependencies-
      - 실행합니다:
          이름: Npm 설치
          명령: npm 설치
      - save_cache:
          키: v1-npm-dependencies-(( 체크섬 "package.json" ))
          경로
            - ~/insights/node_modules
      - 실행
        이름: 데이터베이스 설정
        명령 |
          번들 실행 레이크 db:create
          번들 실행 레이크 db:스키마:로드
      - 실행
          name: Rubocop
          명령: 번들 실행 rubocop
      - 실행
          이름: Eslint
          명령: npm 실행 eslint
      - run:
          name: RSpec
          명령을 실행합니다: |
            mkdir /tmp/test-results
            TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
              circleci tests split --split-by=타이밍)"
            번들 실행 rspec
              --형식 진행
              --format RspecJunitFormatter
              --out /tmp/test-results/rspec.xml
              --format 진행
              $test_files
      - 실행합니다:
          이름: Brakeman
          명령: 번들 실행 brakeman --no-exit-on-warn
      - store_test_results:
          경로 /tmp/test-results
  루비크리틱:
    도커:
      - 이미지: circleci/ruby:2.5.1-node-browsers
        환경:
          번들 버전: 2.0.1
          BUNDLE_PATH: /bundle
          BUNDLE_JOBS: 4
          RAILS_ENV: test
          circle_artifacts: /tmp
    working_directory: ~/insights
    steps:
      - checkout
      - run:
          name: 번들러 버전 2.0.1 설치
          명령: gem 설치 번들러 -v 2.0.1
      - restore_cache:
          키
            - v1-rubycritic-dependencies-(( 체크섬 "Gemfile.lock" ))
            - v1-rubycritic-dependencies-
      - 실행합니다:
          이름: 번들 설치
          명령: 번들 검사 || 번들 설치
      - save_cache:
          키: v1-rubycritic-dependencies-(( 체크섬 "Gemfile.lock" ))
          경로
            - 벤더/번들
      - run:
          이름: 루비크리틱 실행
          명령: 번들 실행 rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser
      - store_artifacts:
          경로 /tmp/rubycritic
      - run:
          name: 루비크리틱 알림
          명령: 번들 실행 레이크 서클CI:리포트_범위

워크플로우:
  버전: 2
  build_and_rubycritic:
    jobs:
      - build
      - 루비크리틱:
          requires:
            - build

출처:

  • CircleCi에 사용 가능한 도커 이미지 목록

    • 도커 이미지
  • CircleCi

    • 구성 CircleCi

      • 샘플 구성
      • 테스트 데이터 수집
      • 인사이트 사용
      • 빌드 아티팩트 저장
  • 사용한 보석 또는 도구

    • 루보캅

      • ESlint
      • RSpec
      • Brakeman
      • 루비트리틱
      • 서클 커버리지 보고서

자세히 읽어보세요:

  • 소프트웨어 구축을 위한 Codest의 모범 사례: 프로젝트 문서화
  • 좋은 품질의 코드를 작성하는 방법은 무엇인가요?
  • 개방형-폐쇄형 원칙. 꼭 사용해야 하나요?

관련 문서

소프트웨어 개발

미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트

The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...

최신
소프트웨어 개발

라트비아에 본사를 둔 10대 소프트웨어 개발 기업

최신 기사에서 라트비아 최고의 소프트웨어 개발 기업과 그들의 혁신적인 솔루션에 대해 알아보세요. 이러한 기술 리더들이 어떻게 귀사의 비즈니스를 향상시키는 데 도움을 줄 수 있는지 알아보세요.

thecodest
엔터프라이즈 및 스케일업 솔루션

Java 소프트웨어 개발 필수 사항: 성공적인 아웃소싱을 위한 가이드

The Codest로 효율성을 높이고 전문 지식을 활용하며 프로젝트 성공을 이끌 수 있는 성공적인 outsourcing Java 소프트웨어 개발에 대한 이 필수 가이드를 살펴보세요.

thecodest
소프트웨어 개발

폴란드 아웃소싱을 위한 최고의 가이드

폴란드에서 outsourcing가 급증한 것은 경제, 교육, 기술 발전으로 인한 IT 성장과 비즈니스 친화적인 환경이 조성된 덕분입니다.

더코데스트
엔터프라이즈 및 스케일업 솔루션

IT 감사 도구 및 기술에 대한 완벽한 가이드

IT 감사는 안전하고 효율적이며 규정을 준수하는 시스템을 보장합니다. 전체 기사를 읽고 그 중요성에 대해 자세히 알아보세요.

The Codest
야쿱 야쿠보비치 CTO & 공동 설립자

지식창고를 구독하고 IT 분야의 전문 지식을 최신 상태로 유지하세요.

    회사 소개

    The Codest - 폴란드에 기술 허브를 둔 국제 소프트웨어 개발 회사입니다.

    영국 - 본사

    • 사무실 303B, 182-184 하이 스트리트 노스 E6 2JA
      영국 런던

    폴란드 - 현지 기술 허브

    • 파브리츠나 오피스 파크, 알레야
      포코주 18, 31-564 크라쿠프
    • 뇌 대사관, 콘스트럭터스카
      11, 02-673 바르샤바, 폴란드

      The Codest

    • 홈
    • 회사 소개
    • 서비스
    • Case Studies
    • 방법 알아보기
    • 채용 정보
    • 사전

      서비스

    • IT 자문
    • 소프트웨어 개발
    • 백엔드 개발
    • 프론트엔드 개발
    • Staff Augmentation
    • 백엔드 개발자
    • 클라우드 엔지니어
    • 데이터 엔지니어
    • 기타
    • QA 엔지니어

      리소스

    • 외부 소프트웨어 개발 파트너와의 협력에 대한 사실과 오해
    • 미국에서 유럽으로: 미국 스타트업이 유럽으로 이전을 결정하는 이유
    • 테크 오프쇼어 개발 허브 비교: 테크 오프쇼어 유럽(폴란드), 아세안(필리핀), 유라시아(터키)
    • CTO와 CIO의 주요 과제는 무엇인가요?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • 웹사이트 이용 약관

    저작권 © 2025 by The Codest. 모든 권리 보유.

    ko_KRKorean
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek ko_KRKorean