Το CircleCI είναι ένα πολύ απλό εργαλείο που είναι καλά ρυθμισμένο ως επιβλέπων των έργων μας. Αλλά είναι η ίδια η διαμόρφωση απλή; Αυτό, φυσικά, εξαρτάται από την πολυπλοκότητα του έργου. Στην περίπτωσή μας (mono repo) αποδείχθηκε πιο δύσκολο από το αναμενόμενο.
Η διαμόρφωση για τα έργα Ruby on Rails δεν είναι περίπλοκη και η τεκμηρίωση περιγράφει με ακρίβεια κάθε στοιχείο του config.yml. Ωστόσο, θα ήθελα να επικεντρωθώ στα εργαλεία circleci που χρησιμοποιούνται για να μας βοηθήσουν να διατηρήσουμε το κωδικός να καθαρίζει και να διασφαλίζει την ορθή πρακτική.
Είναι πιθανό ότι το RuboCope δεν χρειάζεται συστάσεις, ωστόσο, για όσους δεν είναι εξοικειωμένοι με αυτό, είναι ένας στατικός αναλυτής και μορφοποιητής κώδικα Ruby. Αν χρησιμοποιείτε ήδη το rubocop στο έργο, απλά προσθέστε το CircleCI στο αρχείο ρυθμίσεων:
Το ESLint είναι ένα εργαλείο για τον εντοπισμό και την αναφορά μοτίβων που εντοπίζονται στο ECMAScript ή στο JavaScript κώδικα, προκειμένου να γίνει ο κώδικας πιο συνεπής και να αποφευχθούν τα λάθη.
Στο RSpec, οι δοκιμές δεν είναι μόνο σενάρια που επαληθεύουν τον κώδικα της εφαρμογής, αλλά και λεπτομερείς εξηγήσεις για το πώς πρέπει να συμπεριφέρεται η εφαρμογή, εκφρασμένες σε απλά αγγλικά:
Στην περίπτωση του RSpec, αποθηκεύουμε το αποτέλεσμα της δοκιμής σε έναν κατάλογο που έχει δημιουργηθεί προηγουμένως /tmp/test-results στο αρχείο rspec.xml, και στη συνέχεια χρησιμοποιώντας την εντολή κατάστημαδοκιμήαποτελέσματα κλειδί αποθηκεύουμε έναν συγκεκριμένο κατάλογο. Τώρα η καρτέλα Insights θα μας δώσει πρόσβαση σε πληροφορίες όπως ο μέσος χρόνος σύνταξης, ο χρόνος της τελευταίας σύνταξης ή το ποσοστό επιτυχίας. Μπορείτε να διαβάσετε περισσότερα για την καρτέλα Insights εδώ. Αν θέλουμε να αποθηκεύσουμε το αρχείο rspec.xml ως "τεχνούργημα" θα πρέπει να προσθέσουμε την εντολή store_artifacts στο αρχείο ρυθμίσεων.
Το Brakeman είναι ένα εργαλείο στατικής ανάλυσης που ελέγχει τις εφαρμογές Ruby on Rails για ευπάθειες ασφαλείας. Από προεπιλογή, το Brakeman θα επιστρέψει έναν μη μηδενικό κωδικό εξόδου εάν εντοπιστούν προειδοποιήσεις ασφαλείας ή σφάλματα σάρωσης. Ως εκ τούτου, εστιάσαμε μόνο σε κρίσιμα σφάλματα και οι προειδοποιήσεις απενεργοποιήθηκαν.
Αν θέλουμε επίσης να αποθηκεύσουμε το αποτέλεσμα της σάρωσης με τον ίδιο τρόπο όπως το RSpec, η διαμόρφωσή μας θα μοιάζει με αυτή και θα έχουμε πρόσβαση στο αρχείο μας στην καρτέλα Artifacts.
Το RubyCritic είναι ένα πετράδι που χρησιμοποιεί πετράδια για στατική ανάλυση, όπως τα Reek, Flay και Flog, για να παρέχει μια αναφορά σχετικά με την ποιότητα του κώδικά σας. Η αναφορά περιέχει μια βαθμολογία A / B / C / D / F, κάθε αρχείο στο έργο μας που θέλουμε να έχουμε σαρώσει και ακριβή σημεία που χρειάζονται βελτίωση, καθώς και τεκμηρίωση με κάθε ειδοποίηση (π.χ: TooManyMethods). Το εργαλείο αυτό λειτουργεί ως σύμβουλος στο έργο. Με βάση την έκθεση που λαμβάνει, η τελική απόφαση σχετικά με το αν ο κώδικάς μας χρειάζεται πράγματι διόρθωση εξαρτάται από τον προγραμματιστή. Στη δική μας διαμόρφωση του circleci, έχει ανατεθεί μια ξεχωριστή εργασία που είναι υπεύθυνη για την προετοιμασία της έκθεσης και την αποστολή ενός ειδικού σχολίου με το αποτέλεσμα στο github.
Η βασική διαμόρφωση του rubycritic δεν διαφέρει από τις προηγούμενες.
Ως συνήθως, εκτελούμε το πακέτο με πληροφορίες σχετικά με τον κατάλογο που θέλουμε να σαρώσουμε ./app, σε ποιο μέρος θέλουμε να αποθηκεύσουμε το αποτέλεσμα -p /tmp/rubycritic (το rubycritic δημιουργεί αυτόματα έναν κατάλογο στον οποίο θα αποθηκεύσουμε την αναφορά μας), σε ποια μορφή -f json και επιλογή -no- browser. Χρησιμοποιούμε επίσης το gem circleci-coverage_reporter, το οποίο μετά τη σάρωση, τοποθετεί ένα σχόλιο στο github στο αίτημα έλξης μας με έναν σύνδεσμο στην αναφορά και μια ποσοστιαία βαθμολογία των σκαναρισμένων αρχείων.
Για να λειτουργήσει σωστά το παραπάνω gem μαζί με το circleci, πρέπει να το προσθέσουμε στο έργο μας και να δημιουργήσουμε δύο κλειδιά (το ένα είναι το circleci, το δεύτερο το github).
Τυπική εγκατάσταση:
Gemfile gem 'circleci-coverage_reporter'
Rakefile require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
Τμήμα "ρυθμίσεις" του έργου μας. Μετά την επιλογή 'Create Token' αλλάξτε το πεδίο εφαρμογής σε 'all' και συμπληρώστε την ετικέτα Token. Το Token για το API θα δημιουργηθεί αφού κάνετε κλικ στο
COVERAGE_REPORTER_VCS_TOKEN
Πεδίο εφαρμογής για το κλειδί στο repo
Αφού δημιουργήσουμε τα κλειδιά, πρέπει να τα προσθέσουμε στις μεταβλητές περιβάλλοντος στο Ρυθμίσεις: