window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2019-07-23
Ohjelmistokehitys

CircleCI

Codest

Damian Watroba

Software Engineer

CircleCI on hyvin yksinkertainen työkalu, joka on hyvin konfiguroitu projektiemme valvojaksi. Mutta onko itse konfigurointi yksinkertaista? Tämä riippuu tietenkin projektin monimutkaisuudesta. Meidän tapauksessamme (mono repo) se osoittautui odotettua vaikeammaksi.

Ruby on Rails-projektien konfigurointi ei ole monimutkaista ja dokumentaatio kuvaa tarkasti config.yml-tiedoston jokaisen elementin. Haluaisin kuitenkin keskittyä circleci-työkaluihin, joita käytetään auttamaan meitä säilyttämään koodi puhdistaa ja varmistaa hyvät käytännöt.

RUBOCOP

On todennäköistä, että RuboCope ei kaipaa esittelyä, mutta niille, jotka eivät tunne sitä, se on staattinen Ruby-koodianalysaattori ja -muotoilija. Jos käytät jo rubocopia omassa projekti, yksinkertaisesti lisää CircleCI asetustiedostoon:

 juosta:
    nimi: Rubocop
    komento: bundle exec rubocop

ESLINT

ESLint on työkalu, jolla voidaan tunnistaa ja raportoida ECMAScript- tai ECMAScript-ohjelmista löytyviä malleja. JavaScript koodin johdonmukaisuuden parantamiseksi ja virheiden välttämiseksi.

juosta:
    nimi: Eslint
    komento: npm run eslint

RSPEC

RSpecissä testit eivät ole vain skriptejä, jotka tarkistavat sovelluskoodin, vaan ne ovat myös yksityiskohtaisia selityksiä siitä, miten sovelluksen pitäisi käyttäytyä, yksinkertaisella englannilla ilmaistuna:

juosta:
    nimi: RSpec
    command: |
      mkdir /tmp/test-tulokset
      TEST_FILES="$(circleci testit glob "spec/_spec.rb" |
        circleci tests split --split-by=timings)"
      bundle exec rspec
        --format progress
        --format RspecJunitFormatteri
        --out /tmp/test-tulokset/rspec.xml
        --format progress
        $TEST_FILES

- store_test_results:
    path: /tmp/test-tulokset

RSpecin tapauksessa tallennamme testituloksen rspec.xml-tiedoston aiemmin luotuun luetteloon /tmp/test-results ja sitten käytämme komentoa myymälätestitulokset avaimella tallennamme tietyn luettelon. Nyt Insights-välilehdellä voimme tarkastella tietoja, kuten keskimääräistä käännösaikaa, viimeisimmän käännöksen ajankohtaa tai onnistumisprosenttia. Voit lukea lisää Insights-välilehdestä täällä. Jos haluamme tallentaa rspec.xml-tiedoston "artefaktina", meidän on lisättävä tiedostoon store_artifacts avain konfiguraatiotiedostossamme.

 store_artifacts:
    path: /tmp/test-tulokset

BRAKEMAN

Brakeman on staattinen analyysityökalu, joka tarkistaa Ruby on Rails-sovellukset tietoturva-aukkojen varalta. Oletusarvoisesti Brakeman palauttaa nollasta poikkeavan poistumiskoodin, jos havaitaan tietoturvavaroituksia tai skannausvirheitä. Siksi keskityimme vain kriittisiin virheisiin, ja varoitukset kytkettiin pois päältä.

juosta:
    nimi: Brakeman
    komento: bundle exec brakeman --no-exit-on-warn

Jos haluamme myös tallentaa skannaustuloksen samalla tavalla kuin RSpec, määrityksemme näyttää tältä, ja pääsemme käsiksi tiedostoon Artifacts-välilehdellä.

 juosta:
    nimi: Brakeman
    komento: Brakeman: Brakeman: Brakeman: Brakeman: Brakeman: Brakeman: Brakeman: |
      mkdir /tmp/brakeman
      bundle exec brakeman --no-exit-on-warn -o /tmp/brakeman/output.json

- store_artifacts:
    path: /tmp/brakeman

RUBYCRITIC

RubyCritic on helmi, joka käyttää staattiseen analyysiin tarkoitettuja helmiä, kuten Reek, Flay ja Flog, ja antaa raportin koodisi laadusta. Raportti sisältää A- / B- / C- / D- / F-luokituksen, jokaisen projektimme tiedoston, jonka haluamme skannata, ja tarkat paikat, jotka tarvitsevat parannuksia, sekä dokumentaation jokaisen hälytyksen kanssa (esim: TooManyMethods). Tämä työkalu toimii hankkeessa konsulttina. Saadun raportin perusteella lopullinen päätös siitä, onko koodia todella korjattava, riippuu kehittäjästä. Circleci-kokoonpanossamme on määritetty erillinen tehtävä, joka vastaa raportin laatimisesta ja lähettää tuloksen sisältävän erityisen kommentin githubiin.

Rubycriticin peruskonfiguraatio ei poikkea edellisistä.

 juosta:
    nimi: Rubycritic
    komento: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

- store_artifacts:
    path: /tmp/rubycritic

Normaalisti ajamme läpi paketin, jossa on tiedot siitä, minkä hakemiston haluamme skannata ./app, mihin paikkaan haluamme tallentaa tuloksen -p /tmp/rubycritic (rubycritic luo automaattisesti hakemiston, johon tallennamme raporttimme), missä muodossa -f json ja optio -no-selain. Käytämme myös helmiä circleci-coverage_reporter, joka skannauksen jälkeen laittaa kommentin githubiin pull request -pyyntöömme, jossa on linkki raporttiin ja prosentuaalinen luokitus skannatuista tiedostoista.

Ruby

Jotta edellä mainittu helmi toimisi kunnolla yhdessä circlecin kanssa, meidän on lisättävä se projektiin ja luotava kaksi avainta (toinen niistä on circleci, toinen github).

Vakioasennus:

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

 store_artifacts:
    path: /tmp/rubycritic

 run:
    name: Rubycritic ilmoitus
    komento: bundle exec rake circleci:report_coverage

Nyt meidän on luotava kaksi avainta:

COVERAGE_REPORTER_CIRCLECI_TOKEN

API-tunniste

Hankkeemme jakso "asetukset". Kun olet valinnut vaihtoehdon 'Create Token', vaihda laajuudeksi 'all' ja täytä Token label. Token API:lle luodaan napsauttamalla

COVERAGE_REPORTER_VCS_TOKEN

merkki

Repoavaimen laajuus

Kun avaimet on luotu, ne on lisättävä ympäristömuuttujiin osoitteessa Asetukset:

ympäristömuuttuja
lisää muuttuja

Esimerkkikokoonpano:

työpaikat:
  rakentaa:
    docker:
      - 2.5.1-node-browsers: image: circleci/ruby:2.5.1-node-browsers
      
        BUNDLER_VERSION: 2.0.1
        BUNDLE_PATH: /bundle
        BUNDLE_JOBS: 4
        RAILS_ENV: test
    - image: circleci/postgres:10.1-alpine
      environment: - ympäristö: - - - - - - - - - - - - - - - - - - -
        POSTGRES_USER: postgres
        POSTGRES_DB: example_test
        POSTGRES_PASSWORD: example
    - image: circleci/redis:4.0.8-alpine
    working_directory: ~/insights
    ympäristö:
        TZ: Europe/Warsaw
    steps:
      - checkout
      - run:
          nimi: Asenna bundlerin versio 2.0.1.
          komento: gem install bundler -v 2.0.1
      - restore_cache:
          avaimet: - avaimet: - avaimet: - avaimet: - avaimet: - avaimet:
            - v1-ruby-dependencies-(( checksum "Gemfile.lock" )))
            - v1-ruby-dependencies-
      - run:
          name: Bundle Install
          komento: bundle check || bundle install
      - save_cache:
          key: v1-ruby-dependencies-(( checksum "Gemfile.lock" ) ))
          paths:
            - vendor/bundle
      - restore_cache:
          keys:
            - v1-npm-dependencies-(( checksum "package.json" ))
            - v1-npm-dependencies-
      - run:
          name: Npm Install
          komento: npm install
      - save_cache:
          key: v1-npm-dependencies-(( checksum "package.json" ) ))
          paths:
            - ~/insights/node_modules
      - run:
        name: Database setup
         |
          bundle exec rake db:create
          bundle exec rake db:schema:load
      - run:
           Rubocop
          komento: bundle exec rubocop
      - suorita:
          nimi: Eslint
          komento: npm run eslint
      - suorita:
           RSpec
          komento: Pepec: nbsp: |
            mkdir /tmp/test-tulokset
            TEST_FILES="$(circleci testit glob "spec/_spec.rb" |
              circleci tests split --split-by=timings)"
            bundle exec rspec
              --format progress
              --format RspecJunitFormatteri
              --out /tmp/test-tulokset/rspec.xml
              --format progress
              $TEST_FILES
      - run:
          nimi: Brakeman
          komento: bundle exec brakeman --no-exit-on-warn
      - store_test_results:
          path: /tmp/test-tulokset
  rubycritic:
    Tehdas: "Tehdas: Tehdas: Tehdas: Tehdas:":
      - 2.5.1-node-browsers: image: circleci/ruby:2.5.1-node-browsers
        ympäristö:
          BUNDLER_VERSION: 2.0.1
          BUNDLE_PATH: /bundle
          BUNDLE_JOBS: 4
          RAILS_ENV: test
          CIRCLE_ARTIFACTS: /tmp
    working_directory: ~/insights
    vaiheet:
      - checkout
      - run:
          name: Asenna bundlerin versio 2.0.1.
          komento: gem install bundler -v 2.0.1
      - restore_cache:
          avaimet: - avaimet: - avaimet: - avaimet: - avaimet: - avaimet:
            - v1-rubycritic-dependencies-(( checksum "Gemfile.lock" )))
            - v1-rubycritic-dependencies-
      - run:
          name: Bundle Install
          komento: bundle check || bundle install
      - save_cache:
          key: v1-rubycritic-dependencies-(( checksum "Gemfile.lock" ) ))
          paths:
            - vendor/bundle
      - run:
          name: Run Rubycritic
          komento: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser
      - store_artifacts:
          path: /tmp/rubycritic
      - run:
          name:: Rubycritic notifikaatio
          komento: bundle exec rake circleci:report_coverage

työnkulut:
  version: 2
  build_and_rubycritic:
    jobs:
      - build
      - rubycritic:
          Tarvitsee: rubicrubic: vaatii:
            - build

Lähteet:

  • Luettelo CircleCi:n käytettävissä olevista telakointikuvista

    • Docker-kuvat
  • CircleCi

    • Määritys CircleCi

      • Esimerkkikonfiguraatio
      • Kerää testitiedot
      • Insightsin käyttäminen
      • Rakennusartefaktien tallentaminen
  • Käytetyt jalokivet tai työkalut

    • RuboCop

      • ESlint
      • RSpec
      • Jarrumies
      • RubyCtritic
      • Ympyrän kattavuusraportti

Lue lisää:

  • Codestin hyvät käytännöt ohjelmistojen rakentamiseen: projektin dokumentointi
  • Miten kirjoittaa hyvää ja laadukasta koodia?
  • Avoin-suljettu-periaate. Tarvitseeko minun koskaan käyttää sitä?

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Tulevaisuuden web-sovellusten rakentaminen: The Codest:n asiantuntijatiimin näkemyksiä

Tutustu siihen, miten The Codest loistaa skaalautuvien, interaktiivisten verkkosovellusten luomisessa huipputeknologian avulla ja tarjoaa saumattomia käyttäjäkokemuksia kaikilla alustoilla. Lue, miten asiantuntemuksemme edistää digitaalista muutosta ja liiketoimintaa...

THECODEST
Ohjelmistokehitys

Top 10 Latviassa toimivaa ohjelmistokehitysyritystä

Tutustu Latvian parhaisiin ohjelmistokehitysyrityksiin ja niiden innovatiivisiin ratkaisuihin uusimmassa artikkelissamme. Tutustu siihen, miten nämä teknologiajohtajat voivat auttaa nostamaan liiketoimintaasi.

thecodest
Yritys- ja skaalausratkaisut

Java-ohjelmistokehityksen perusteet: A Guide to Outsourcing Successfully

Tutustu tähän keskeiseen oppaaseen Java-ohjelmistokehityksen onnistuneesta ulkoistamisesta tehokkuuden parantamiseksi, asiantuntemuksen saamiseksi ja projektin onnistumiseksi The Codestin avulla.

thecodest
Ohjelmistokehitys

Perimmäinen opas ulkoistamiseen Puolassa

Ulkoistamisen lisääntyminen Puolassa johtuu taloudellisesta, koulutuksellisesta ja teknologisesta kehityksestä, joka edistää tietotekniikan kasvua ja yritysystävällistä ilmapiiriä.

TheCodest
Yritys- ja skaalausratkaisut

Täydellinen opas IT-tarkastustyökaluihin ja -tekniikoihin

Tietotekniikan tarkastuksilla varmistetaan turvalliset, tehokkaat ja vaatimustenmukaiset järjestelmät. Lue lisää niiden merkityksestä lukemalla koko artikkeli.

Codest
Jakub Jakubowicz teknologiajohtaja ja toinen perustaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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