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 on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() CircleCI - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2019-07-23
Tarkvaraarendus

CircleCI

The Codest

Damian Watroba

Software Engineer

CircleCI on väga lihtne tööriist, mis on hästi konfigureeritud meie projektide juhendajaks. Aga kas konfiguratsioon ise on lihtne? See sõltub muidugi projekti keerukusest. Meie puhul (mono repo) osutus see oodatust keerulisemaks.

Ruby on Rails projektide konfigureerimine ei ole keeruline ja dokumentatsioon kirjeldab täpselt iga config.yml-i elementi. Tahaksin siiski keskenduda circleci vahenditele, mida kasutatakse selleks, et hoida meid kood puhas ja tagab hea tava.

RUBOCOP

Tõenäoliselt ei vaja RuboCope'i tutvustamist, kuid neile, kes seda ei tunne, on tegemist staatilise Ruby koodi analüsaatori ja vormindajaga. Kui te juba kasutate rubocopi oma projekt, lisage lihtsalt CircleCI konfiguratsioonifaili:

 joosta:
    nimi: Rubocop
    käsk: bundle exec rubocop

ESLINT

ESLint on vahend ECMAScript'is leitud mustrite tuvastamiseks ja nendest teatamiseks või JavaScript kood, et muuta kood järjepidevamaks ja vältida vigu.

joosta:
    nimi: Eslint
    käsk: npm run eslint

RSPEC

RSpecis ei ole testid mitte ainult skriptid, mis kontrollivad rakenduse koodi, vaid ka üksikasjalikud selgitused selle kohta, kuidas rakendus peaks käituma, mis on väljendatud lihtsas inglise keeles:

joosta:
    nimi: RSpec
    käsk: |
      mkdir /tmp/test-tulemused
      TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
        circleci tests split --split-by=timings)"
      bundle exec rspec
        --format progress
        --format RspecJunitFormatter
        --out /tmp/test-results/rspec.xml
        --format progress
        $TEST_FILES

- store_test_results:
    path: /tmp/test-results

RSpeci puhul salvestame testi tulemuse eelnevalt loodud kataloogi /tmp/test-results failis rspec.xml ja seejärel kasutame käsku kauplustesttulemused võtme salvestame antud kataloogi. Nüüd annab vahekaart Insights meile juurdepääsu sellistele andmetele nagu keskmine koostamisaeg, viimase koostamise aeg või edukuse määr. Lisateavet Insights-värava kohta saate lugeda siin. Kui me tahame salvestada rspec.xml faili kui "artefakti", peame lisama faili store_artifacts võti meie konfiguratsioonifailis.

 store_artifacts:
    path: /tmp/test-tulemused

BRAKEMAN

Brakeman on staatilise analüüsi tööriist, mis kontrollib Ruby on Rails rakendusi turvaaukude suhtes. Vaikimisi tagastab Brakeman nullist erineva väljumiskoodi, kui tuvastatakse turvariskid või skaneerimisvead. Seetõttu keskendusime ainult kriitilistele vigadele ja hoiatused lülitati välja.

joosta:
    nimi: Brakeman
    käsk: bundle exec brakeman --no-exit-on-warn

Kui me tahame ka skaneerimistulemust salvestada samamoodi nagu RSpec, näeb meie konfiguratsioon välja selline ja meil on juurdepääs meie failile vahekaardil Artifacts.

 joosta:
    nimi: Brakeman
    käsk: |
      mkdir /tmp/brakeman
      bundle exec brakeman --no-exit-on-warn -o /tmp/brakeman/output.json

- store_artifacts:
    path: /tmp/brakeman

RUBYCRITIC

RubyCritic on pärl, mis kasutab staatilise analüüsi pärleid, nagu Reek, Flay ja Flog, et esitada aruanne teie koodi kvaliteedi kohta. Aruanne sisaldab A / B / C / D / F hinnangut, iga faili meie projektis, mida me tahame, et oleksime skaneerinud ja täpseid kohti, mis vajavad parandamist, ja dokumentatsiooni iga hoiatuse juures (nt: TooManyMethods). See vahend toimib projektis konsultandina. Saadud aruande põhjal sõltub lõplik otsus, kas meie koodi on tegelikult vaja parandada, arendajast. Meie circleci konfiguratsioonis on määratud eraldi töö, mis vastutab aruande koostamise ja tulemuse kohta eraldi kommentaari saatmise eest githubile.

Rubycritic'i põhikonfiguratsioon ei erine eelmistest.

 joosta:
    nimi: Rubycritic
    käsk: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

- store_artifacts:
    path: /tmp/rubycritic

Standardselt jookseme läbi paketi, kus on info, millist kataloogi me tahame skaneerida ./app, millisesse kohta me tahame salvestada tulemuse -p /tmp/rubycritic (rubycritic loob automaatselt kataloogi, kuhu me oma aruande salvestame), millises formaadis -f json ja valik -no- brauser. Samuti kasutame gem circleci-coverage_reporter, mis pärast skaneerimist paneb githubis meie pull request'ile kommentaari koos lingiga aruandele ja skaneeritud failide protsentuaalse hinnanguga.

Ruby

Selleks, et ülaltoodud pärl koos circleci'ga korralikult töötaks, peame selle lisama oma projekti ja genereerima kaks võtit (üks neist on circleci, teine on github).

Standardne paigaldus:

  • Gemfile
    gem 'circleci-coverage_reporter'
  • Rakefile
    require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
  • .config.yml
 joosta:
    nimi: Rubycritic
    käsk: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

 store_artifacts:
    path: /tmp/rubycritic

 run:
    name: Rubycritic notification
    käsk: bundle exec rake circleci:report_coverage

Nüüd peame looma kaks võtit:

COVERAGE_REPORTER_CIRCLECI_TOKEN

API märgis

Meie projekti jagu "seaded". Pärast valiku 'Create Token' muutke ulatus 'all' ja täitke Token label. Token API-le luuakse pärast klõpsamist

COVERAGE_REPORTER_VCS_TOKEN

sümboolne

Repo võtme ulatus

Pärast võtmete genereerimist peame lisama need oma keskkonnamuutujatesse aadressil Seaded:

keskkonnamuutuja
lisada muutuja

Näidiskonfiguratsioon:

töökohti:
  ehitada:
    Dokkeri:
      - 2.5.1-node-browsers: image: circleci/ruby:2.5.1-node-browsers
      keskkond:
        BUNDLER_VERSION: 2.0.1
        BUNDLE_PATH: /bundle
        BUNDLE_JOBS: 4
        RAILS_ENV: test
    - image: circleci/postgres:10.1-alpine
      keskkond:
        POSTGRES_USER: postgres
        POSTGRES_DB: example_test
        POSTGRES_PASSWORD: example
    - image: circleci/redis:4.0.8-alpine
    working_directory: ~/insights
    keskkond:
        TZ: Europe/Warsaw
    sammud:
      - checkout
      - käivitada:
          nimi: Paigalda bundleri versioon 2.0.1.
          käsk: gem install bundler -v 2.0.1
      - restore_cache:
          võtmed:
            - v1-ruby-dependencies-(( checksum "Gemfile.lock" ))
            - v1-ruby-dependencies-
      - run:
          name: Bundle Install
          käsk: bundle check || bundle install
      - save_cache:
          key: v1-ruby-dependencies-(( checksum "Gemfile.lock" ))
          paths:
            - vendor/bundle
      - restore_cache:
          võtmed:
            - v1-npm-dependencies-(( checksum "package.json" ))
            - v1-npm-dependencies-
      - run:
          name: Npm Install
          käsk: npm install
      - save_cache:
          key: v1-npm-dependencies-(( checksum "package.json" ))
          paths:
            - ~/insights/node_modules
      - run:
        name: Database setup
        käsk: |
          bundle exec rake db:create
          bundle exec rake db:schema:load
      - käivitada:
          nimi: Rake: RAKE: RAKE: RAKE: RAKE: nimi: Rubocop
          käsk: bundle exec rubocop
      - run:
          nimi: Eslint
          käsk: npm run eslint
      - run:
          nimi: Eslint: name: RSpec
          käsk: |
            mkdir /tmp/test-tulemused
            TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
              circleci tests split --split-by=timings)"
            bundle exec rspec
              --format progress
              --format RspecJunitFormatter
              --out /tmp/test-results/rspec.xml
              --format progress
              $TEST_FILES
      - käivitada:
          name: Brakeman
          käsk: bundle exec brakeman --no-exit-on-warn
      - store_test_results:
          path: /tmp/test-results
  rubycritic:
    dokkeri:
      - image: circleci/ruby:2.5.1-node-browsers
        keskkond:
          BUNDLER_VERSION: 2.0.1
          BUNDLE_PATH: /bundle
          BUNDLE_JOBS: 4
          RAILS_ENV: test
          CIRCLE_ARTIFACTS: /tmp
    working_directory: ~/insights
    sammud:
      - checkout
      - käivitada:
          name: Install bundler version 2.0.1
          käsk: gem install bundler -v 2.0.1
      - restore_cache:
          võtmed:
            - v1-rubycritic-dependencies-(( checksum "Gemfile.lock" ))
            - v1-rubycritic-dependencies-
      - run:
          name: Bundle Install
          käsk: bundle check || bundle install
      - save_cache:
          key: v1-rubycritic-dependencies-(( checksum "Gemfile.lock" ))
          paths:
            - vendor/bundle
      - run:
          name: Run Rubycritic
          käsk: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser
      - store_artifacts:
          path: /tmp/rubycritic
      - run:
          name: Rubycritic notification
          käsk: bundle exec rake circleci:report_coverage

töövood:
  versioon: 2
  build_and_rubycritic:
    tööülesanded:
      - build
      - rubycritic:
          rubicrubic: nõuab:
            - build

Allikad:

  • CircleCi jaoks kättesaadavate dokkeripiltide nimekiri

    • Dockeri kujutised
  • CircleCi

    • Konfiguratsioon CircleCi

      • Näidiskonfigureerimine
      • Koguda katseandmeid
      • Insights'i kasutamine
      • Artefaktide salvestamine
  • Kasutatud kalliskivid või tööriistad

    • RuboCop

      • ESlint
      • RSpec
      • Pidurimees
      • RubyCtritic
      • Ringi katvuse aruanne

Loe edasi:

  • Codesti hea tava tarkvara loomisel: projektdokumentatsioon
  • Kuidas kirjutada head ja kvaliteetset koodi?
  • Avatud-suletud põhimõte. Kas ma pean seda kunagi kasutama?

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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