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: 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
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2019-07-23
Ανάπτυξη λογισμικού

CircleCI

The Codest

Damian Watroba

Software Engineer

Το CircleCI είναι ένα πολύ απλό εργαλείο που είναι καλά ρυθμισμένο ως επιβλέπων των έργων μας. Αλλά είναι η ίδια η διαμόρφωση απλή; Αυτό, φυσικά, εξαρτάται από την πολυπλοκότητα του έργου. Στην περίπτωσή μας (mono repo) αποδείχθηκε πιο δύσκολο από το αναμενόμενο.

Η διαμόρφωση για τα έργα Ruby on Rails δεν είναι περίπλοκη και η τεκμηρίωση περιγράφει με ακρίβεια κάθε στοιχείο του config.yml. Ωστόσο, θα ήθελα να επικεντρωθώ στα εργαλεία circleci που χρησιμοποιούνται για να μας βοηθήσουν να διατηρήσουμε το κωδικός να καθαρίζει και να διασφαλίζει την ορθή πρακτική.

RUBOCOP

Είναι πιθανό ότι το RuboCope δεν χρειάζεται συστάσεις, ωστόσο, για όσους δεν είναι εξοικειωμένοι με αυτό, είναι ένας στατικός αναλυτής και μορφοποιητής κώδικα Ruby. Αν χρησιμοποιείτε ήδη το rubocop στο έργο, απλά προσθέστε το CircleCI στο αρχείο ρυθμίσεων:

 τρέχει:
    όνομα: Rubocop
    εντολή: bundle exec rubocop

ESLINT

Το ESLint είναι ένα εργαλείο για τον εντοπισμό και την αναφορά μοτίβων που εντοπίζονται στο ECMAScript ή στο JavaScript κώδικα, προκειμένου να γίνει ο κώδικας πιο συνεπής και να αποφευχθούν τα λάθη.

τρέχει:
    όνομα: Eslint
    Εντολή: npm run eslint

RSPEC

Στο RSpec, οι δοκιμές δεν είναι μόνο σενάρια που επαληθεύουν τον κώδικα της εφαρμογής, αλλά και λεπτομερείς εξηγήσεις για το πώς πρέπει να συμπεριφέρεται η εφαρμογή, εκφρασμένες σε απλά αγγλικά:

τρέχει:
    όνομα: RSpec
    εντολή: |
      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-results/rspec.xml
        --format progress
        $TEST_FILES

- store_test_results:
    path: /tmp/test-results

Στην περίπτωση του RSpec, αποθηκεύουμε το αποτέλεσμα της δοκιμής σε έναν κατάλογο που έχει δημιουργηθεί προηγουμένως /tmp/test-results στο αρχείο rspec.xml, και στη συνέχεια χρησιμοποιώντας την εντολή κατάστημαδοκιμήαποτελέσματα κλειδί αποθηκεύουμε έναν συγκεκριμένο κατάλογο. Τώρα η καρτέλα Insights θα μας δώσει πρόσβαση σε πληροφορίες όπως ο μέσος χρόνος σύνταξης, ο χρόνος της τελευταίας σύνταξης ή το ποσοστό επιτυχίας. Μπορείτε να διαβάσετε περισσότερα για την καρτέλα Insights εδώ. Αν θέλουμε να αποθηκεύσουμε το αρχείο rspec.xml ως "τεχνούργημα" θα πρέπει να προσθέσουμε την εντολή store_artifacts στο αρχείο ρυθμίσεων.

 store_artifacts:
    path: /tmp/test-results

BRAKEMAN

Το Brakeman είναι ένα εργαλείο στατικής ανάλυσης που ελέγχει τις εφαρμογές Ruby on Rails για ευπάθειες ασφαλείας. Από προεπιλογή, το Brakeman θα επιστρέψει έναν μη μηδενικό κωδικό εξόδου εάν εντοπιστούν προειδοποιήσεις ασφαλείας ή σφάλματα σάρωσης. Ως εκ τούτου, εστιάσαμε μόνο σε κρίσιμα σφάλματα και οι προειδοποιήσεις απενεργοποιήθηκαν.

τρέχει:
    Brakeman
    εντολή: bundle exec brakeman --no-exit-on-warn

Αν θέλουμε επίσης να αποθηκεύσουμε το αποτέλεσμα της σάρωσης με τον ίδιο τρόπο όπως το RSpec, η διαμόρφωσή μας θα μοιάζει με αυτή και θα έχουμε πρόσβαση στο αρχείο μας στην καρτέλα Artifacts.

 τρέχει:
    Brakeman
    Εντολή: |
      mkdir /tmp/brakeman
      bundle exec brakeman --no-exit-on-warn -o /tmp/brakeman/output.json

- store_artifacts:
    path: /tmp/brakeman

RUBYCRITIC

Το RubyCritic είναι ένα πετράδι που χρησιμοποιεί πετράδια για στατική ανάλυση, όπως τα Reek, Flay και Flog, για να παρέχει μια αναφορά σχετικά με την ποιότητα του κώδικά σας. Η αναφορά περιέχει μια βαθμολογία A / B / C / D / F, κάθε αρχείο στο έργο μας που θέλουμε να έχουμε σαρώσει και ακριβή σημεία που χρειάζονται βελτίωση, καθώς και τεκμηρίωση με κάθε ειδοποίηση (π.χ: TooManyMethods). Το εργαλείο αυτό λειτουργεί ως σύμβουλος στο έργο. Με βάση την έκθεση που λαμβάνει, η τελική απόφαση σχετικά με το αν ο κώδικάς μας χρειάζεται πράγματι διόρθωση εξαρτάται από τον προγραμματιστή. Στη δική μας διαμόρφωση του circleci, έχει ανατεθεί μια ξεχωριστή εργασία που είναι υπεύθυνη για την προετοιμασία της έκθεσης και την αποστολή ενός ειδικού σχολίου με το αποτέλεσμα στο github.

Η βασική διαμόρφωση του rubycritic δεν διαφέρει από τις προηγούμενες.

 τρέχει:
    όνομα: Rubycritic
    εντολή: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

- store_artifacts:
    path: /tmp/rubycritic

Ως συνήθως, εκτελούμε το πακέτο με πληροφορίες σχετικά με τον κατάλογο που θέλουμε να σαρώσουμε ./app, σε ποιο μέρος θέλουμε να αποθηκεύσουμε το αποτέλεσμα -p /tmp/rubycritic (το rubycritic δημιουργεί αυτόματα έναν κατάλογο στον οποίο θα αποθηκεύσουμε την αναφορά μας), σε ποια μορφή -f json και επιλογή -no- browser. Χρησιμοποιούμε επίσης το gem circleci-coverage_reporter, το οποίο μετά τη σάρωση, τοποθετεί ένα σχόλιο στο github στο αίτημα έλξης μας με έναν σύνδεσμο στην αναφορά και μια ποσοστιαία βαθμολογία των σκαναρισμένων αρχείων.

Ruby

Για να λειτουργήσει σωστά το παραπάνω gem μαζί με το circleci, πρέπει να το προσθέσουμε στο έργο μας και να δημιουργήσουμε δύο κλειδιά (το ένα είναι το circleci, το δεύτερο το github).

Τυπική εγκατάσταση:

  • Gemfile
    gem 'circleci-coverage_reporter'
  • Rakefile
    require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
  • .config.yml
 τρέχει:
    όνομα: Rubycritic
    εντολή: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

 store_artifacts:
    path: /tmp/rubycritic

 run:
    name: Rubycritic
    εντολή: bundle exec rake circleci:report_coverage

Τώρα πρέπει να δημιουργήσουμε δύο κλειδιά:

COVERAGE_REPORTER_CIRCLECI_TOKEN

Κουπόνι API

Τμήμα "ρυθμίσεις" του έργου μας. Μετά την επιλογή 'Create Token' αλλάξτε το πεδίο εφαρμογής σε 'all' και συμπληρώστε την ετικέτα Token. Το Token για το API θα δημιουργηθεί αφού κάνετε κλικ στο

COVERAGE_REPORTER_VCS_TOKEN

token

Πεδίο εφαρμογής για το κλειδί στο repo

Αφού δημιουργήσουμε τα κλειδιά, πρέπει να τα προσθέσουμε στις μεταβλητές περιβάλλοντος στο Ρυθμίσεις:

μεταβλητή περιβάλλοντος
προσθήκη μεταβλητής

Δείγμα διαμόρφωσης:

θέσεις εργασίας:
  χτίσιμο:
    docker:
      - 2.5.1-node-browsers: image: circleci/ruby:2.5.1-node-browsers
      περιβάλλον: Εικόνα 1:
        BUNDLER_VERSION: 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
    - image: circleci/redis:4.0.8-alpine
    working_directory: ~/insights
    περιβάλλον:
        TZ: Europe/Warsaw
    βήματα:
      - checkout
      - run:
          όνομα: Εγκατάσταση της έκδοσης 2.0.1 του bundler
          Εντολή: gem install bundler -v 2.0.1
      - restore_cache:
          keys:
            - v1-ruby-dependencies-(( checksum "Gemfile.lock" ))
            - v1-ruby-dependencies-
      - run:
          name: Bundle Install
          εντολή: bundle check || bundle install
      - save_cache:
          key: v1-ruby-dependencies-(( checksum "Gemfile.lock" ))
          paths:
            - vendor/bundle
      - restore_cache:
          κλειδιά:
            - v1-npm-dependencies-(( checksum "package.json" ))
            - v1-npm-dependencies-
      - run:
          name: Npm Install
          Εντολή: npm install
      - save_cache:
          key: v1-npm-dependencies-(( checksum "package.json" ))
          paths:
            - ~/insights/node_modules
      - run:
        name: Database setup
        command: |
          bundle exec rake db:create
          bundle exec rake db:schema:load
      - run:
          name: Rubocop
          εντολή: bundle exec rubocop
      - run:
          όνομα: Eslint
          Εντολή: npm run eslint
      - run:
           RSpec
          Εντολή: |
            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-results/rspec.xml
              --format progress
              $TEST_FILES
      - run:
          name: Brakeman
          εντολή: bundle exec brakeman --no-exit-on-warn
      - store_test_results:
          path: /tmp/test-results
  rubycritic:
    docker:
      - circleci/ruby:2.5.1-node-browsers
        περιβάλλον: Εικόνα 2: "Εικόνα 2: Ολοκληρωμένο περιβάλλον":
          BUNDLER_VERSION: 2.0.1
          BUNDLE_PATH: /bundle
          BUNDLE_JOBS: 4
          RAILS_ENV: test
          CIRCLE_ARTIFACTS: /tmp
    working_directory: ~/insights
    βήματα:
      - checkout
      - run:
          name: Εγκατάσταση της έκδοσης 2.0.1 του bundler
          Εντολή: gem install bundler -v 2.0.1
      - restore_cache:
          keys:
            - v1-rubycritic-dependencies-(( checksum "Gemfile.lock" ))
            - v1-rubycritic-dependencies-
      - run:
          name: Bundle Install
          εντολή: bundle check || bundle install
      - save_cache:
          key: v1-rubycritic-dependencies-(( checksum "Gemfile.lock" ))
          paths:
            - vendor/bundle
      - run:
          name: Run Rubycritic
          εντολή: bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser
      - store_artifacts:
          path: /tmp/rubycritic
      - run:
          name: Rubycritic
          εντολή: bundle exec rake circleci:report_coverage

ροές εργασίας:
  έκδοση: 2
  build_and_rubycritic:
    jobs:
      - build
      - rubycritic:
          Απαιτεί:
            - build

Πηγές:

  • Κατάλογος των διαθέσιμων εικόνων docker για το CircleCi

    • Εικόνες Docker
  • CircleCi

    • Διαμόρφωση CircleCi

      • Δείγμα ρυθμίσεων
      • Συλλογή δεδομένων δοκιμών
      • Χρήση των Insights
      • Αποθήκευση αντικειμένων κατασκευής
  • Μεταχειρισμένοι πολύτιμοι λίθοι ή εργαλεία

    • RuboCop

      • ESlint
      • RSpec
      • Φρενατζής
      • RubyCtritic
      • Έκθεση κάλυψης κύκλου

Διαβάστε περισσότερα:

  • Οι καλές πρακτικές της Codest για την κατασκευή λογισμικού: τεκμηρίωση έργου
  • Πώς να γράψετε έναν καλό και ποιοτικό κώδικα;
  • Αρχή "ανοικτό-κλειστό". Πρέπει ποτέ να τη χρησιμοποιήσω;

Σχετικά άρθρα

Ανάπτυξη λογισμικού

Κατασκευάστε μελλοντικά ασφαλείς εφαρμογές Web: γνώσεις από την ομάδα εμπειρογνωμόνων του The Codest

Ανακαλύψτε πώς η The Codest υπερέχει στη δημιουργία κλιμακούμενων, διαδραστικών εφαρμογών ιστού με τεχνολογίες αιχμής, παρέχοντας απρόσκοπτη εμπειρία χρήστη σε όλες τις πλατφόρμες. Μάθετε πώς η τεχνογνωσία μας οδηγεί στον ψηφιακό μετασχηματισμό και την επιχειρηματική...

THECODEST
Ανάπτυξη λογισμικού

Top 10 εταιρείες ανάπτυξης λογισμικού με έδρα τη Λετονία

Μάθετε για τις κορυφαίες εταιρείες ανάπτυξης λογισμικού της Λετονίας και τις καινοτόμες λύσεις τους στο τελευταίο μας άρθρο. Ανακαλύψτε πώς αυτοί οι τεχνολογικοί ηγέτες μπορούν να βοηθήσουν στην ανύψωση της επιχείρησής σας.

thecodest
Λύσεις Enterprise & Scaleups

Βασικά στοιχεία ανάπτυξης λογισμικού Java: Α Guide to Outsourcing Successfully (Οδηγός για την επιτυχή εξωτερική ανάθεση)

Εξερευνήστε αυτόν τον βασικό οδηγό για την επιτυχή ανάπτυξη λογισμικού outsourcing Java για να αυξήσετε την αποδοτικότητα, να αποκτήσετε πρόσβαση στην τεχνογνωσία και να οδηγήσετε την επιτυχία των έργων με The Codest.

thecodest
Ανάπτυξη λογισμικού

Ο απόλυτος οδηγός για το Outsourcing στην Πολωνία

Η έξαρση της outsourcing στην Πολωνία οφείλεται στις οικονομικές, εκπαιδευτικές και τεχνολογικές εξελίξεις, που ευνοούν την ανάπτυξη της πληροφορικής και το φιλικό προς τις επιχειρήσεις κλίμα.

TheCodest
Λύσεις Enterprise & Scaleups

Ο πλήρης οδηγός εργαλείων και τεχνικών ελέγχου πληροφορικής

Οι έλεγχοι ΤΠ διασφαλίζουν ασφαλή, αποτελεσματικά και συμβατά συστήματα. Μάθετε περισσότερα για τη σημασία τους διαβάζοντας ολόκληρο το άρθρο.

The Codest
Jakub Jakubowicz CTO & Συνιδρυτής

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    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 etEstonian elGreek