Επίλυση σφαλμάτων ροής εργασίας Gitleaks σε αρχεία που δημιουργούνται αυτόματα στο GitHub

Temp mail SuperHeros
Επίλυση σφαλμάτων ροής εργασίας Gitleaks σε αρχεία που δημιουργούνται αυτόματα στο GitHub
Επίλυση σφαλμάτων ροής εργασίας Gitleaks σε αρχεία που δημιουργούνται αυτόματα στο GitHub

Διαχείριση ψευδών θετικών Gitleaks στο GitHub CI

Εάν είστε προγραμματιστής που εργάζεστε με ροές εργασίας GitHub, γνωρίζετε ότι οι αυτοματισμοί είναι πολύτιμοι για τη διασφάλιση της ποιότητας και της ασφάλειας του κώδικα. Ωστόσο, αυτοί οι αυτοματοποιημένοι έλεγχοι επισημαίνουν μερικές φορές ζητήματα που δεν είναι πραγματικά προβληματικά, ειδικά με αρχεία που δημιουργούνται αυτόματα. 🚦

Πρόσφατα αντιμετώπισα αυτήν την πρόκληση ενώ ετοίμαζα μια ενημέρωση για ένα πακέτο CRAN που ενσωματώνει τη C++ μέσω της βιβλιοθήκης Rcpp. Κατά τη διάρκεια ενός αιτήματος ρουτίνας έλξης, η ροή εργασίας GitHub Gitleaks εντόπισε πιθανά μυστικά σε αρχεία που δημιουργήθηκαν αυτόματα από το Rcpp. Αυτά τα αρχεία, τα οποία περιλαμβάνουν ένα "κουπόνι γεννήτριας" για την αναγνώριση του κώδικα που δημιουργήθηκε αυτόματα, ενεργοποίησαν ένα σφάλμα "γενικό κλειδί API", παρά την απουσία πραγματικών μυστικών.

Σε μια προσπάθεια να παρακάμψω αυτό το ψευδώς θετικό, διερεύνησα τις λύσεις που προτείνει το Gitleaks. Ωστόσο, μία από τις επιλογές—η χρήση ενσωματωμένων σχολίων «#gitleaks:allow»— ήταν ακατάλληλη, καθώς η μη αυτόματη τροποποίηση αρχείων που δημιουργούνται αυτόματα θα έθετε σε κίνδυνο τη μελλοντική αναπαραγωγιμότητα και θα μπορούσε να οδηγήσει σε προβλήματα συγχρονισμού.

Σε αυτό το άρθρο, θα περιηγηθώ σε στρατηγικές που προσπάθησα να επιλύσω αυτό το ζήτημα, από την εφαρμογή ενός αρχείου «.gitleaksignore» έως τη δοκιμή διαφορετικών διαμορφώσεων. Εάν έχετε αντιμετωπίσει παρόμοια εμπόδια, αυτές οι πληροφορίες μπορεί να σας βοηθήσουν να κάνετε τη ροή εργασιών σας πιο ομαλή και να αποτρέψετε άσκοπες επισημάνσεις σφαλμάτων. 🚀

Εντολή Παράδειγμα χρήσης
rules: Καθορίζει συγκεκριμένους κανόνες ανίχνευσης μέσα στο αρχείο .gitleaksignore, επιτρέποντας την προσαρμογή αρχείων ή μοτίβων για εξαίρεση από τις σαρώσεις Gitleaks, ιδιαίτερα χρήσιμο για αρχεία που δημιουργούνται αυτόματα.
exclude-path Μέσα σε μια ενέργεια GitHub, αυτό το όρισμα για την ενέργεια Gitleaks επιτρέπει την παράβλεψη ορισμένων αρχείων ή καταλόγων καθορίζοντας τις διαδρομές τους, κάτι που είναι απαραίτητο για τον αποκλεισμό προβληματικών αρχείων που δημιουργούνται αυτόματα.
subprocess.run() Στην Python, αυτή η συνάρτηση εκτελεί εντολές φλοιού, επιτρέποντας στο Gitleaks να εκτελείται απευθείας μέσα σε ένα σενάριο. Είναι σημαντικό εδώ για τον δυναμικό έλεγχο της σάρωσης με βάση καθορισμένες εξαιρέσεις.
capture_output=True Ένα όρισμα για το subprocess.run() που καταγράφει την έξοδο της εντολής, χρήσιμο για το χειρισμό των μηνυμάτων επιτυχίας ή σφάλματος του Gitleaks απευθείας στο σενάριο Python.
shell=True Χρησιμοποιείται στο subprocess.run() για να επιτρέψει την εκτέλεση της εντολής στο περιβάλλον του κελύφους, κάτι που είναι σημαντικό εδώ για τη δημιουργία δυναμικών, αλληλοσυμβατών συμβολοσειρών εντολών για εξαίρεση.
result.returncode Ελέγχει τον κωδικό εξόδου της διαδικασίας Gitleaks για να προσδιορίσει εάν επισημάνθηκαν τυχόν διαρροές, επιτρέποντας το χειρισμό υπό όρους για επιτυχημένες ή αποτυχημένες σαρώσεις στην Python.
command = f"gitleaks detect ..." Δημιουργεί μια εντολή δυναμικής συμβολοσειράς για την εκτέλεση του Gitleaks με καθορισμένες εξαιρέσεις. Αυτή η προσαρμογή είναι το κλειδί για την εκτέλεση του Gitleaks με στοχευμένες επιλογές και όχι σταθερές παραμέτρους.
--no-git Ένα όρισμα για το Gitleaks που εκτελεί τη σάρωση στον καθορισμένο κατάλογο χωρίς να αναζητά το ιστορικό Git, ιδιαίτερα χρήσιμο όταν μόνο η τρέχουσα κατάσταση των αρχείων κώδικα χρειάζεται σάρωση.
args: Στο αρχείο ροής εργασίας GitHub Action, το args: καθορίζει πρόσθετα ορίσματα γραμμής εντολών για την ενέργεια Gitleaks, επιτρέποντας στους προγραμματιστές να προσαρμόσουν τη συμπεριφορά της ενέργειας στη ροή εργασίας.

Χειρισμός σφαλμάτων Gitleaks για αρχεία που δημιουργούνται αυτόματα σε αγωγούς CI

Τα σενάρια που παρέχονται παραπάνω επικεντρώνονται στην επίλυση ενός προβλήματος με Gitleaks επισημάνσεις ροής εργασίας στο GitHub για αρχεία που δημιουργούνται αυτόματα από το Rcpp. Αυτά τα αρχεία περιλαμβάνουν αναγνώριση διακριτικών που ενεργοποιούν τον σαρωτή ασφαλείας Gitleaks προσδιορίζοντάς τα ψευδώς ως ευαίσθητες πληροφορίες. Για να παρακάμψετε αυτά τα σφάλματα, μια λύση χρησιμοποιεί α .gitleaksignore αρχείο για να καθορίσετε κανόνες που αγνοούν συγκεκριμένα αρχεία ή μοτίβα. Αυτή η λύση περιλαμβάνει τον καθορισμό "κανόνων" για να αποτρέψει το Gitleaks από τη σάρωση ορισμένων αρχείων που δημιουργούνται αυτόματα, όπως RcppExports.R και RcppExports.cpp. Καθορίζοντας μοτίβα και διαδρομές αρχείων στην ενότητα "κανόνες", διασφαλίζουμε ότι το Gitleaks κατανοεί ποια αρχεία είναι σκόπιμα και ασφαλή, εμποδίζοντας την επισήμανση τους.

Μια άλλη προσέγγιση, ιδιαίτερα χρήσιμη όταν οι λύσεις που βασίζονται σε κανόνες δεν αντιμετωπίζουν πλήρως το πρόβλημα, είναι η προσθήκη εξαιρέσεων διαδρομής σε μια προσαρμοσμένη ροή εργασίας GitHub Action. Αυτή η προσέγγιση περιλαμβάνει τη δημιουργία μιας αποκλειστικής Gitleaks GitHub Action στην οποία χρησιμοποιούμε την επιλογή "exclude-path" για να αποφύγουμε τη σάρωση διαδρομών που περιέχουν αρχεία που δημιουργούνται αυτόματα. Για παράδειγμα, η προσθήκη «διαδρομής εξαίρεσης» απευθείας στη ροή εργασίας μας επιτρέπει να στοχεύουμε αρχεία χωρίς να αλλάζουμε απευθείας τις προεπιλεγμένες ρυθμίσεις του Gitleaks. Αυτή η λύση σεναρίου είναι πιο ελεγχόμενη, αποτρέποντας επαναλαμβανόμενα ψευδώς θετικά αποτελέσματα σε κάθε αίτημα ώθησης ή έλξης και απλοποιώντας τη διαδικασία συνεχούς ενοποίησης (CI) για ενημερώσεις πακέτων CRAN. 🎉

Η εναλλακτική δέσμη ενεργειών Python παρέχει έναν τρόπο να χειρίζονται δυναμικά τις εξαιρέσεις αρχείων, δίνοντας στους προγραμματιστές μεγαλύτερη ευελιξία στη διαχείριση του αυτοματισμού CI/CD. Χρησιμοποιώντας τη συνάρτηση «subprocess.run()» της Python, αυτή η λύση εκτελεί την εντολή Gitleaks μέσα στο σενάριο και επιτρέπει στον προγραμματιστή να προσθέσει ή να αλλάξει τα αρχεία για να τα αποκλείσει εύκολα. Με το «subprocess.run()», η Python μπορεί να εκτελέσει την εντολή φλοιού με προσαρμοσμένες επιλογές όπως «capture_output=True», καταγραφή των αποτελεσμάτων του Gitleaks και τυχόν πιθανών σφαλμάτων σε πραγματικό χρόνο. Αυτή η προσέγγιση που βασίζεται σε Python είναι ιδιαίτερα χρήσιμη για μεγαλύτερα έργα όπου τα αυτοματοποιημένα σενάρια μπορούν να βελτιώσουν τη συνοχή της ροής εργασίας και να εξαλείψουν τη μη αυτόματη διαμόρφωση για διαφορετικά έργα.

Κάθε προσέγγιση προσανατολίζεται στη διασφάλιση ότι μόνο τα απαραίτητα αρχεία υποβάλλονται σε σαρώσεις ασφαλείας, αποτρέποντας τα ψευδώς θετικά από τη διακοπή ή τη διακοπή της διαδικασίας ενημέρωσης. Ενώ ένα αρχείο .gitleaksignore παρέχει έναν απλό τρόπο εξαίρεσης συγκεκριμένων αρχείων, οι λύσεις σεναρίων GitHub Action και Python προσφέρουν μεγαλύτερη προσαρμοστικότητα για πολύπλοκες ρυθμίσεις. Αυτές οι στρατηγικές διασφαλίζουν ότι οι ροές εργασίας CI/CD παραμένουν αποτελεσματικές, ελαχιστοποιώντας παράλληλα τον κίνδυνο εσφαλμένης αναγνώρισης των αβλαβών κουπονιών που δημιουργούνται αυτόματα ως ευαίσθητα δεδομένα. Η χρήση αυτών των τεχνικών υποστηρίζει επίσης τη μακροπρόθεσμη σταθερότητα του έργου, αποτρέποντας μελλοντικά σφάλματα και διατηρώντας την εμπειρία του προγραμματιστή ομαλή και παραγωγική. 🚀

Χειρισμός ψευδών θετικών στο Gitleaks σε αρχεία που δημιουργούνται αυτόματα στο GitHub

Λύση χρησιμοποιώντας ένα αρχείο .gitleaksignore για παράκαμψη σφαλμάτων σε R και C++ με αρθρωτή

# The .gitleaksignore file defines specific patterns to ignore autogenerated files in R and C++
# Place this file in the root of the repository

# Ignore all instances of "Generator token" in specific autogenerated files
rules:
  - description: "Ignore generator tokens in Rcpp autogenerated files"
    rule: "Generator token"
    path: ["R/RcppExports.R", "src/RcppExports.cpp"]

# Additional configuration to ignore generic API key warnings
  - description: "Generic API Key Ignore"
    rule: "generic-api-key"
    paths:
      - "R/RcppExports.R"
      - "src/RcppExports.cpp"

Εναλλακτική λύση: Προσαρμοσμένη ενέργεια GitHub για παράκαμψη ψευδών θετικών

Ενέργεια GitHub με χρήση Node.js και gitleaks με επιλεκτικές εξαιρέσεις διαδρομής

name: "Custom Gitleaks Workflow"
on: [push, pull_request]
jobs:
  run-gitleaks:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Run Gitleaks
        uses: zricethezav/gitleaks-action@v1.0.0
        with:
          args: "--path . --exclude-path R/RcppExports.R,src/RcppExports.cpp"

      - name: Process completion notice
        if: success()
        run: echo "Gitleaks completed successfully without flags for autogenerated files."

Λύση 3: Σενάριο CI με δυναμικές εξαιρέσεις σε ένα Backend Python

Σενάριο Python για δυναμική εξαίρεση συγκεκριμένων αρχείων από τη σάρωση gitleaks

import subprocess
import os

# Define files to exclude from gitleaks checks
exclusions = ["R/RcppExports.R", "src/RcppExports.cpp"]

# Convert exclusions to CLI format for gitleaks
exclude_paths = " ".join(f"--exclude {file}" for file in exclusions)

def run_gitleaks_scan():
    # Run gitleaks with exclusions
    command = f"gitleaks detect --no-git --source . {exclude_paths}"
    result = subprocess.run(command, shell=True, capture_output=True)

    # Check for errors and process accordingly
    if result.returncode != 0:
        print("Errors detected during gitleaks scan:", result.stderr.decode())
    else:
        print("Gitleaks scan completed successfully.")

if __name__ == "__main__":
    run_gitleaks_scan()

Βελτιστοποίηση ροής εργασίας Gitleaks για αρχεία που δημιουργούνται αυτόματα στο GitHub CI

Κατά την ενσωμάτωση ελέγχων ασφαλείας όπως Gitleaks σε μια ροή εργασίας GitHub, ο χειρισμός ψευδών θετικών στοιχείων σε αρχεία που δημιουργούνται αυτόματα μπορεί να είναι μια βασική πρόκληση. Το Gitleaks συχνά επισημαίνει διακριτικά ή αναγνωριστικά μέσα σε αρχεία που έχουν δημιουργηθεί από βιβλιοθήκες όπως το Rcpp, παραπλανώντας τα ως πιθανές απειλές ασφαλείας. Οι σημαίες είναι κατανοητές δεδομένου ότι το Gitleaks έχει σχεδιαστεί για να συλλαμβάνει τυχόν σημάδια δυνητικά ευαίσθητων δεδομένων, ωστόσο μπορεί να είναι απογοητευτικό όταν τα αβλαβή, αυτόματα δημιουργούμενα διακριτικά σταματούν τη ροή εργασίας CI/CD. Για τη βελτιστοποίηση αυτής της ρύθμισης, η κατανόηση των πιο λεπτομερών στοιχείων ελέγχου που διατίθενται μέσω του Gitleaks μπορεί να βελτιώσει σημαντικά την αποτελεσματικότητα της διαχείρισης κώδικα σε έργα που χρησιμοποιούν C++ ή R στο GitHub.

Μια προσέγγιση για τον χειρισμό αυτού του ζητήματος είναι μέσω μιας συνήθειας .gitleaksignore αρχείο, όπου ορίζονται συγκεκριμένοι κανόνες για την παράκαμψη αυτών των ψευδών θετικών στοιχείων. Με τη δημιουργία και τον καθορισμό διαδρομών σε αυτό το αρχείο, οι χρήστες μπορούν συστηματικά να λένε στο Gitleaks να αγνοήσει προκαθορισμένα αρχεία, όπως αυτά που δημιουργούνται από το Rcpp, μειώνοντας τις περιττές ειδοποιήσεις στη διοχέτευση. Μια άλλη ωφέλιμη λύση περιλαμβάνει τη χρήση εξαιρέσεων διαδρομής απευθείας στο αρχείο ροής εργασίας GitHub Action. Εδώ, διευκρινίζοντας exclude-path Τα ορίσματα εμποδίζουν το Gitleaks να σαρώσει τυχόν αρχεία που ταιριάζουν με τις εξαιρούμενες διαδρομές, διατηρώντας τη ροή εργασίας αποτελεσματική και διαχειρίσιμη. Αυτή η μέθοδος είναι απλή στη ρύθμιση και διατηρεί τη λειτουργία ελέγχου ασφαλείας για αρχεία που χρειάζονται πραγματικά έλεγχο.

Για μια πιο ευέλικτη λύση, η δέσμη ενεργειών με μια γλώσσα υποστήριξης όπως η Python επιτρέπει δυναμικές λίστες αποκλεισμών, προσφέροντας μια ευέλικτη προσέγγιση για τη διαχείριση εξαιρέσεων σε πολλαπλά περιβάλλοντα. Χρησιμοποιώντας Python subprocess.run() εντολή, οι προγραμματιστές μπορούν να εκτελέσουν σαρώσεις Gitleaks με προσαρμόσιμες επιλογές που βελτιστοποιούν τη διοχέτευση CI. Αυτή η προσέγγιση διευκολύνει επίσης τον έλεγχο των εξαιρέσεων προσθέτοντας και αφαιρώντας αρχεία από την εντολή όπως απαιτείται. Μια προσεκτική ρύθμιση όπως αυτή παρέχει μεγαλύτερο έλεγχο στους ελέγχους ασφαλείας, βοηθώντας τους προγραμματιστές να επικεντρωθούν σε αυτό που έχει μεγαλύτερη σημασία—την ακεραιότητα του κώδικα και τη σταθερότητα του έργου. 🚀

Συχνές ερωτήσεις σχετικά με τα σφάλματα ροής εργασίας του Gitleaks

  1. Τι είναι το Gitleaks και πώς λειτουργεί;
  2. Το Gitleaks είναι ένα εργαλείο σάρωσης ασφαλείας που έχει σχεδιαστεί για να ανιχνεύει μυστικά και ευαίσθητα δεδομένα στα αποθετήρια Git. Εκτελεί σαρώσεις αναζητώντας μοτίβα ή λέξεις-κλειδιά που υποδεικνύουν εκτεθειμένα διαπιστευτήρια.
  3. Πώς μπορώ να αποτρέψω το Gitleaks να επισημαίνει αρχεία που δημιουργούνται αυτόματα;
  4. Με τη δημιουργία ενός .gitleaksignore αρχείο και καθορίζοντας τις διαδρομές των αρχείων που δημιουργούνται αυτόματα, μπορείτε να παρακάμψετε τα ψευδώς θετικά, αποτρέποντας την επισήμανση αυτών των αρχείων στη ροή εργασίας.
  5. Τι κάνει το exclude-path επιλογή να κάνω στο GitHub Actions;
  6. Ο exclude-path Η επιλογή επιτρέπει στους προγραμματιστές να εξαιρούν συγκεκριμένα αρχεία ή καταλόγους από τις σαρώσεις του Gitleaks μέσα σε ένα GitHub Action, καθιστώντας το ιδανικό για την παράβλεψη αρχείων που δημιουργούνται αυτόματα.
  7. Γιατί το Gitleaks επισημαίνει μερικές φορές τα διακριτικά της γεννήτριας ως μυστικά;
  8. Το Gitleaks χρησιμοποιεί κανόνες αντιστοίχισης προτύπων για τον εντοπισμό πιθανών διαρροών ασφαλείας. Εάν ένα αρχείο περιέχει μια συμβολοσειρά που μοιάζει με διακριτικό, όπως "Γενικό διακριτικό", μπορεί να ενεργοποιήσει μια ειδοποίηση ακόμα κι αν το διακριτικό είναι αβλαβές.
  9. Μπορώ να ελέγξω το Gitleaks με μια γλώσσα υποστήριξης όπως η Python;
  10. Ναι, με τη χρήση subprocess.run() στην Python, μπορείτε να διαμορφώσετε δυναμικά τις εντολές του Gitleaks για να εξαιρείτε αρχεία ή καταλόγους, παρέχοντας ευελιξία και έλεγχο σε κάθε σάρωση.
  11. Είναι δυνατή η τροποποίηση των ρυθμίσεων του Gitleaks απευθείας στο αρχείο ροής εργασίας;
  12. Ναι, οι ροές εργασίας GitHub Action επιτρέπουν την άμεση διαμόρφωση των ρυθμίσεων του Gitleaks, όπως η προσθήκη args για τον έλεγχο εξαιρέσεων, διαδρομών και εξόδου.
  13. Τι πρέπει να κάνω εάν το αρχείο μου .gitleaksignore δεν λειτουργεί;
  14. Βεβαιωθείτε ότι η σύνταξη του αρχείου σας .gitleaksignore ακολουθεί ακριβώς την τεκμηρίωση του Gitleaks. Επίσης, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε εξαιρέσεις ειδικά για τη ροή εργασίας ως εφεδρική προσέγγιση.
  15. Γιατί ο αγωγός μου μπλοκάρεται από σφάλματα Gitleaks;
  16. Όταν το Gitleaks επισημαίνει μια διαρροή, επιστρέφει έναν μη μηδενικό κωδικό εξόδου, διακόπτοντας τη ροή εργασίας. Η διαμόρφωση εξαιρέσεων για γνωστά ασφαλή αρχεία θα βοηθήσει στην αποφυγή περιττών διακοπών αγωγών.
  17. Μπορώ να χρησιμοποιήσω το Gitleaks με έργα R και C++;
  18. Απολύτως. Το Gitleaks λειτουργεί με όλους τους τύπους αποθετηρίων Git, αλλά με αρχεία αυτόματης δημιουργίας που είναι κοινά σε έργα R και C++, ενδέχεται να απαιτούνται εξαιρέσεις για την αποφυγή ψευδών θετικών.
  19. Ποιοι είναι οι περιορισμοί της χρήσης του Gitleaks για CI;
  20. Το Gitleaks είναι ισχυρό, αλλά μερικές φορές επισημαίνει ψευδώς θετικά, ειδικά σε κώδικα που δημιουργείται αυτόματα. Η ρύθμιση εξαιρέσεων βοηθά στη διατήρηση της λειτουργικότητας CI, αποφεύγοντας αυτά τα ζητήματα.

Επίλυση σφαλμάτων Gitleaks στις σωληνώσεις GitHub CI

Η αντιμετώπιση σφαλμάτων Gitleaks για αρχεία που δημιουργούνται αυτόματα μπορεί να είναι απογοητευτική, αλλά είναι διαχειρίσιμη με τη σωστή διαμόρφωση. Χρησιμοποιώντας τεχνικές αποκλεισμού, μπορείτε να μειώσετε τα ψευδώς θετικά και να εξορθολογίσετε τα δικά σας CI/CD ροή εργασιών. Η προσαρμογή των ρυθμίσεων του Gitleaks διασφαλίζει ότι σαρώνονται μόνο σχετικά αρχεία, επιτρέποντας στις κρίσιμες ενημερώσεις να προχωρήσουν χωρίς διακοπές.

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

Πηγές και αναφορές για το χειρισμό σφαλμάτων ροής εργασίας Gitleaks
  1. Επεξεργάζεται τη χρήση του Gitleaks για τον εντοπισμό μυστικών σε αγωγούς CI/CD, με πληροφορίες σχετικά με το χειρισμό ψευδών θετικών στοιχείων στις ροές εργασίας του GitHub για αρχεία που δημιουργούνται αυτόματα. Αποθετήριο Gitleaks
  2. Συζητά τις βέλτιστες πρακτικές για την ανάπτυξη πακέτων R, συμπεριλαμβανομένου του ρόλου του Rcpp στην αυτοματοποίηση της δημιουργίας αρχείων και τον τρόπο διαχείρισης ενημερώσεων πακέτων στο CRAN. Τεκμηρίωση Rcpp για το CRAN
  3. Παρέχει υπόβαθρο για τη δημιουργία προσαρμοσμένων ενεργειών GitHub και τη διαμόρφωση ροών εργασίας για τη βελτίωση της αποτελεσματικότητας CI/CD κατά την εργασία με έργα R και C++. Τεκμηρίωση ενεργειών GitHub