window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } 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
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2019-07-23
Software-Entwicklung

CircleCI

Der Codest

Damian Watroba

Software Engineer

CircleCI ist ein sehr einfaches Tool, das als Supervisor für unsere Projekte gut konfiguriert ist. Aber ist die Konfiguration selbst einfach? Das hängt natürlich von der Komplexität des Projekts ab. In unserem Fall (mono repo) erwies sie sich als schwieriger als erwartet.

Die Konfiguration für Ruby on Rails-Projekte ist nicht kompliziert, und die Dokumentation beschreibt jedes Element der config.yml genau. Ich möchte mich jedoch auf die circleci-Tools konzentrieren, die uns dabei helfen, die Code sauber zu halten und eine gute Praxis zu gewährleisten.

RUBOCOP

RuboCope ist ein statischer Ruby-Code-Analysator und -Formatierer, der wahrscheinlich keiner Einführung bedarf, aber für diejenigen, die damit nicht vertraut sind. Wenn Sie bereits rubocop in Ihrem Projektfügen Sie einfach CircleCI in die Konfigurationsdatei ein:

 laufen:
    Name: Rubocop
    Befehl: bundle exec rubocop

ESLINT

ESLint ist ein Werkzeug zur Identifizierung und Meldung von Mustern, die in ECMAScript oder JavaScript Code, um den Code konsistenter zu machen und Fehler zu vermeiden.

laufen:
    Name: Eslint
    Befehl: npm run eslint

RSPEC

In RSpec sind Tests nicht nur Skripte, die den Anwendungscode überprüfen, sondern auch detaillierte Erklärungen, wie sich die Anwendung verhalten soll, ausgedrückt in einfachem Englisch:

laufen:
    Name: RSpec
    Befehl: |
      mkdir /tmp/test-results
      TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
        circleci tests split --split-by=timings)"
      bundle exec rspec
        --format progress
        --format RspecJunitFormatter
        --out /tmp/test-Ergebnisse/rspec.xml
        --format fortschritt
        $TEST_DATEIEN

- store_test_results:
    path: /tmp/test-results

Im Fall von RSpec speichern wir das Testergebnis in einem zuvor erstellten Katalog /tmp/test-results in der Datei rspec.xml, und verwenden dann die Option speichernTestErgebnisse Schlüssel speichern wir einen bestimmten Katalog. Auf der Registerkarte Einblicke können wir nun Informationen wie die durchschnittliche Kompilierungszeit, den Zeitpunkt der letzten Kompilierung oder die Erfolgsquote abrufen. Sie können mehr über die Registerkarte Einblicke lesen hier. Wenn wir die Datei rspec.xml als "Artefakt" speichern wollen, müssen wir die speichern_artefakte Schlüssel in unserer Konfigurationsdatei.

 speichern_Artefakte:
    path: /tmp/test-results

BRAKEMAN

Brakeman ist ein statisches Analysewerkzeug, das Ruby on Rails-Anwendungen auf Sicherheitsschwachstellen überprüft. Standardmäßig gibt Brakeman einen Exit-Code ungleich Null zurück, wenn Sicherheitswarnungen oder Scan-Fehler entdeckt werden. Daher haben wir uns nur auf kritische Fehler konzentriert und die Warnungen ausgeschaltet.

laufen:
    Name: Brakeman
    Befehl: bundle exec brakeman --no-exit-on-warn

Wenn wir das Scan-Ergebnis auf die gleiche Weise wie RSpec speichern wollen, sieht unsere Konfiguration wie folgt aus, und wir haben auf der Registerkarte "Artefakte" Zugriff auf unsere Datei.

 laufen:
    Name: Bremser
    Befehl: |
      mkdir /tmp/brakeman
      bundle exec brakeman --no-exit-on-warn -o /tmp/brakeman/output.json

- store_artifacts:
    path: /tmp/brakeman

RUBYCRITIC

RubyCritic ist ein Edelstein, der Gems für die statische Analyse, wie Reek, Flay und Flog, verwendet, um einen Bericht über die Qualität des Codes zu liefern. Der Bericht enthält eine A / B / C / D / F Bewertung, jede Datei in unserem Projekt, die wir gescannt haben wollen und genaue Orte, die Verbesserung benötigen, und Dokumentation mit jedem Alarm (zB: TooManyMethods). Dieses Tool fungiert als Berater für das Projekt. Auf der Grundlage des erhaltenen Berichts hängt die endgültige Entscheidung, ob unser Code tatsächlich korrigiert werden muss, vom Entwickler ab. In unserer circleci-Konfiguration wird ein separater Job zugewiesen, der für die Erstellung des Berichts und das Senden eines speziellen Kommentars mit dem Ergebnis auf github verantwortlich ist.

Die Grundkonfiguration von rubycritic unterscheidet sich nicht von den vorherigen.

 laufen:
    Name: Rubycritic
    Befehl: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

- store_artifacts:
    path: /tmp/rubycritic

Standardmäßig durchlaufen wir das Bundle mit den Angaben, welches Verzeichnis wir scannen wollen ./app, an welchem Ort wir das Ergebnis speichern wollen -p /tmp/rubycritic (rubycritic erstellt automatisch ein Verzeichnis, in dem wir unseren Bericht speichern), in welchem Format -f json und der Option -no- browser. Wir verwenden auch das Gem kreisci-abdeckung_reporterder nach dem Scan einen Kommentar auf Github in unserem Pull-Request mit einem Link zum Bericht und einer prozentualen Bewertung der gescannten Dateien hinterlegt.

Rubinrot

Damit das obige Gem zusammen mit circleci richtig funktioniert, müssen wir es zu unserem Projekt hinzufügen und zwei Schlüssel erzeugen (einer davon ist circleci, der zweite ist github).

Standardinstallation:

  • Gemfile
    gem 'circleci-coverage_reporter'
  • Rakefile
    require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
  • .config.yml
 laufen:
    Name: Rubycritic ausführen
    Befehl: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

 store_artifacts:
    path: /tmp/rubycritic

 ausführen:
    name: Rubycritic Benachrichtigung
    Befehl: bundle exec rake circleci:report_coverage

Jetzt müssen wir zwei Schlüssel erzeugen:

COVERAGE_REPORTER_CIRCLECI_TOKEN

API-Token

Abschnitt 'Einstellungen' unseres Projekts. Nach der Auswahl von "Token erstellen" ändern Sie den Geltungsbereich auf "alle" und geben das Token-Label ein. Das Token für die API wird erzeugt, nachdem Sie auf

COVERAGE_REPORTER_VCS_TOKEN

Token

Umfang des Schlüssels zur Wiederbeschaffung

Nachdem wir die Schlüssel erzeugt haben, müssen wir sie zu unseren Umgebungsvariablen in Einstellungen:

Umgebungsvariable
Variable hinzufügen

Beispielkonfiguration:

Arbeitsplätze:
  bauen:
    docker:
      - image: circleci/ruby:2.5.1-node-browsers
      Umgebung:
        BUNDLER_VERSION: 2.0.1
        BUNDLE_PATH: /bundle
        BUNDLE_JOBS: 4
        RAILS_ENV: test
    - Abbild: circleci/postgres:10.1-alpine
      Umgebung:
        POSTGRES_USER: postgres
        POSTGRES_DB: beispiel_test
        POSTGRES_PASSWORT: beispiel
    - Abbild: circleci/redis:4.0.8-alpin
    working_directory: ~/insights
    Umgebung:
        TZ: Europa/Warschau
    Schritte:
      - Checkout
      - ausführen:
          Name: Installiere Bundler Version 2.0.1
          Befehl: gem install bundler -v 2.0.1
      - wiederherstellen_cache:
          keys:
            - v1-ruby-dependencies-(( Prüfsumme "Gemfile.lock" ))
            - v1-ruby-dependencies-
      - ausführen:
          Name: Bundle-Installation
          Befehl: bundle check || bundle install
      - save_cache:
          Schlüssel: v1-ruby-dependencies-(( Prüfsumme "Gemfile.lock" ))
          Pfade:
            - vendor/bundle
      - restore_cache:
          Schlüssel:
            - v1-npm-dependencies-(( Prüfsumme "package.json" ))
            - v1-npm-dependencies-
      - ausführen:
          Name: Npm Install
          Befehl: npm install
      - save_cache:
          Schlüssel: v1-npm-dependencies-(( Prüfsumme "package.json" ))
          Pfade:
            - ~/insights/node_modules
      - ausführen:
        name: Datenbankeinrichtung
        Befehl: |
          bundle exec rake db:create
          bundle exec rake db:schema:load
      - ausführen:
          name: Rubocop
          Befehl: bundle exec rubocop
      - ausführen:
          name: Eslint
          Befehl: npm run eslint
      - ausführen:
          name: RSpec
          Befehl: |
            mkdir /tmp/test-results
            TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
              circleci tests split --split-by=timings)"
            bundle exec rspec
              --format progress
              --format RspecJunitFormatter
              --out /tmp/test-Ergebnisse/rspec.xml
              --format fortschritt
              $TEST_DATEIEN
      - ausführen:
          Name: Brakeman
          Befehl: bundle exec brakeman --no-exit-on-warn
      - store_test_results:
          path: /tmp/test-results
  rubycritic:
    docker:
      - image: circleci/ruby:2.5.1-node-browsers
        Umgebung:
          BUNDLER_VERSION: 2.0.1
          BUNDLE_PATH: /bundle
          BUNDLE_JOBS: 4
          RAILS_ENV: test
          CIRCLE_ARTIFACTS: /tmp
    working_directory: ~/insights
    Schritte:
      - checkout
      - ausführen:
          Name: Bundler Version 2.0.1 installieren
          Befehl: gem install bundler -v 2.0.1
      - wiederherstellen_cache:
          keys:
            - v1-rubycritic-dependencies-(( Prüfsumme "Gemfile.lock" ))
            - v1-rubycritic-abhängigkeiten-
      - ausführen:
          Name: Bundle-Installation
          Befehl: bundle check || bundle install
      - save_cache:
          Schlüssel: v1-rubycritic-dependencies-(( Prüfsumme "Gemfile.lock" ))
          Pfade:
            - vendor/bundle
      - ausführen:
          name: Rubycritic ausführen
          Befehl: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser
      - store_artifacts:
          path: /tmp/rubycritic
      - ausführen:
          name: Rubycritic Benachrichtigung
          Befehl: bundle exec rake circleci:report_coverage

Arbeitsabläufe:
  Version: 2
  build_und_rubycritic:
    jobs:
      - bauen
      - rubycritic:
          erfordert:
            - bauen

Quellen:

  • Liste der verfügbaren Docker-Images für CircleCi

    • Docker-Bilder
  • CircleCi

    • Konfiguration CircleCi

      • Beispiel-Konfiguration
      • Testdaten sammeln
      • Einblicke nutzen
      • Speicherung von Build-Artefakten
  • Gebrauchte Edelsteine oder Werkzeuge

    • RuboCop

      • ESlint
      • RSpec
      • Bremser
      • RubyCtritic
      • Bericht über die Kreisabdeckung

Lesen Sie mehr:

  • Codests bewährte Verfahren für die Softwareentwicklung: Projektdokumentation
  • Wie schreibt man einen guten und hochwertigen Code?
  • Prinzip offen-geschlossen. Muss ich es jemals anwenden?

Ähnliche Artikel

Software-Entwicklung

Zukunftssichere Web-Apps bauen: Einblicke vom The Codest-Expertenteam

Entdecken Sie, wie sich The Codest bei der Erstellung skalierbarer, interaktiver Webanwendungen mit Spitzentechnologien auszeichnet, die nahtlose Benutzererfahrungen auf allen Plattformen bieten. Erfahren Sie, wie unsere Expertise die digitale Transformation und...

DAS SCHÖNSTE
Software-Entwicklung

Top 10 Softwareentwicklungsunternehmen in Lettland

Erfahren Sie in unserem neuesten Artikel mehr über die besten Softwareentwicklungsunternehmen Lettlands und ihre innovativen Lösungen. Entdecken Sie, wie diese Technologieführer Ihr Unternehmen voranbringen können.

thecodest
Enterprise & Scaleups Lösungen

Grundlagen der Java-Softwareentwicklung: Ein Leitfaden für erfolgreiches Outsourcing

Entdecken Sie diesen wichtigen Leitfaden zum erfolgreichen Outsourcing der Java-Softwareentwicklung, um die Effizienz zu steigern, auf Fachwissen zuzugreifen und den Projekterfolg mit The Codest voranzutreiben.

thecodest
Software-Entwicklung

Der ultimative Leitfaden für Outsourcing in Polen

Der Anstieg des Outsourcings in Polen wird durch wirtschaftliche, bildungspolitische und technologische Fortschritte angetrieben, die das IT-Wachstum und ein unternehmensfreundliches Klima fördern.

TheCodest
Enterprise & Scaleups Lösungen

Der vollständige Leitfaden für IT-Audit-Tools und -Techniken

IT-Audits gewährleisten sichere, effiziente und gesetzeskonforme Systeme. Erfahren Sie mehr über ihre Bedeutung, indem Sie den vollständigen Artikel lesen.

Der Codest
Jakub Jakubowicz CTO & Mitbegründer

Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

    Über uns

    The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

    Vereinigtes Königreich - Hauptsitz

    • Büro 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale Tech-Hubs

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Der Codest

    • Startseite
    • Über uns
    • Dienstleistungen
    • Fallstudien
    • Gewusst wie
    • Karriere
    • Wörterbuch

      Dienstleistungen

    • IT-Beratung
    • Software-Entwicklung
    • Backend-Softwareentwicklung
    • Frontend-Softwareentwicklung
    • Staff Augmentation
    • Backend-Entwickler
    • Cloud-Ingenieure
    • Daten-Ingenieure
    • Andere
    • QS-Ingenieure

      Ressourcen

    • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
    • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
    • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
    • Was sind die größten Herausforderungen für CTOs und CIOs?
    • Der Codest
    • Der Codest
    • Der Codest
    • Privacy policy
    • Website terms of use

    Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

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