Προσαρμοσμένο λογισμικό από αποθετήρια πηγής
Οι συνταγές OpenFactory μπορούν να αναφέρουν ένα αποθετήριο Git ως μια προσαρμοσμένη είσοδο πακέτου σε υποστηριζόμενα προγράμματα δημιουργίας εικόνων. Αυτή είναι μια διαδρομή ευαίσθητη στην εφοδιαστική αλυσίδα: το αποθετήριο, η επιλυμένη αναθεώρηση, οι οδηγίες συσκευασίας, οι εξαρτήσεις κατασκευής και το παραγόμενο πακέτο απαιτούν επανεξέταση.
Η υποστήριξη είναι συγκεκριμένη για τον στόχο. Οι εκδόσεις πακέτων πηγών απορρίπτονται για ορισμένους κατασκευαστές, συμπεριλαμβανομένων των τρεχουσών διαδρομών Raspberry Pi και Proxmox. Επιβεβαιώστε τη διαθεσιμότητα στην κανονικοποιημένη συνταγή και το σχέδιο κατασκευής πριν υποσχεθείτε ότι θα παραχθεί ένα πακέτο.
Σχήμα συνταγής
Οι καταχωρήσεις προσαρμοσμένων πακέτων ζωντανά κάτω από το os.custom_packages:
{
"os": {
"custom_packages": [
{
"name": "my-agent",
"git_url": "https://github.com/example/my-agent.git",
"branch": "release-1.x"
}
]
}
}Το σχήμα δέχεται ένα όνομα κλάδου, όχι ένα αμετάβλητο πεδίο δέσμευσης. Για μια ελεγχόμενη κυκλοφορία, καταγράψτε την ακριβή δέσμευση που επιλύθηκε από την έκδοση και κάντε αυτή τη δέσμευση μέρος της διατηρούμενης προέλευσης. Ένας κινούμενος κλάδος από μόνος του δεν είναι αναπαραγώγιμη είσοδος.
Προετοιμάστε το αποθετήριο
Η τρέχουσα διαδρομή πακέτου αναμένει εγγενή μεταδεδομένα συσκευασίας κατάλληλα για τον στόχο. Συνηθισμένα παραδείγματα είναι ένας κατάλογος Debian debian/ ή μια προδιαγραφή RPM. Η ακριβής συμπεριφορά του δημιουργού και οι υποστηριζόμενες εκδόσεις στόχων μπορούν να αλλάξουν, επομένως επικυρώστε ένα ελάχιστο πακέτο στο αναπτυγμένο περιβάλλον αντί να βασίζεστε σε έναν στατικό πίνακα συμβατότητας.
Για τη συσκευασία Debian, ελέγξτε τουλάχιστον:
debian/controlγια πηγή/δυαδική ταυτότητα και εξαρτήσεις.debian/changelogγια την έκδοση πακέτου.debian/rulesκαι άλλα εκτελέσιμα σενάρια συντήρησης.- εγκατάσταση εκδηλώσεων και συστημικών μονάδων. και
- αδειοδότηση και ομαδοποιημένο υλικό τρίτων.
Για τη συσκευασία RPM, ελέγξτε τις πηγές προδιαγραφών, τις απαιτήσεις έκδοσης, τα scriptlet, τη λίστα αρχείων και τα μεταδεδομένα άδειας χρήσης.
Ποτέ μην υποθέτετε ότι η ιδιοκτησία του αποθετηρίου κάνει τα σενάρια κατασκευής του ασφαλή. Οι εκδόσεις πακέτων εκτελούν αναξιόπιστη λογική πηγής και συσκευασίας εντός του ορίου απομόνωσης της υποδομής κατασκευής.
Άλλα στοιχεία ελέγχου πακέτου
Εγγενή πακέτα
Χρησιμοποιήστε το os.packages για πακέτα που παρέχονται ήδη από την επιλεγμένη διανομή ή ένα ρητά διαμορφωμένο αποθετήριο:
{
"os": {
"packages": ["curl", "jq"]
}
}Παράκαμψη πακέτου
Το os.package_overrides μπορεί να δηλώσει πρόθεση add, remove ή replace:
{
"os": {
"package_overrides": [
{"name": "nano", "action": "replace", "replacement": "neovim"},
{"name": "telnet", "action": "remove"}
]
}
}Μια παράκαμψη δεν αποτελεί απόδειξη ότι η ανάλυση εξάρτησης την τίμησε. Επαληθεύστε το τελικό απόθεμα πακέτου και τους ισχυρισμούς απουσίας/παρουσίας.
Πρόσθετα αποθετήρια
Το os.extra_repos είναι μια σύνθετη είσοδος. Μην προσθέτετε ανυπόγραφο αποθετήριο HTTP όπως φαίνεται σε παλαιότερα παραδείγματα. Μια εγκεκριμένη ενοποίηση αποθετηρίου χρειάζεται μεταφορά HTTPS, καρφιτσωμένο κλειδί υπογραφής, επιβολή υπογραφής, μεταδεδομένα έκδοσης κατάλληλα για τον διαχειριστή πακέτων και τεκμηριωμένη πολιτική ιδιοκτησίας και ενημέρωσης. Εάν αυτά τα στοιχεία ελέγχου αξιοπιστίας δεν μπορούν να εκπροσωπηθούν από το τρέχον πρόγραμμα δημιουργίας, μην χρησιμοποιήσετε το χώρο αποθήκευσης.
Αποδεικτικά αποδοχής
Για κάθε προσαρμοσμένο πακέτο, διατηρήστε:
- URL αποθετηρίου και επιλυμένη δέσμευση.
- Πηγή και δηλωμένος έλεγχος άδειας·
- στιγμιότυπο δημιουργίας περιβάλλοντος και εξάρτησης.
- δημιουργία αρχείων καταγραφής και το όνομα/έκδοση/αρχιτεκτονική του πακέτου που προκύπτει.
- αποδεικτικά στοιχεία σύνοψης και υπογραφής αποθετηρίου, κατά περίπτωση,
- τελικό απόθεμα εικόνων που δείχνει το εγκατεστημένο πακέτο.
- δοκιμές σέρβις ή εκτελέσιμου καπνού. και
- συμπεριφορά αφαίρεσης και αναβάθμισης.
Ένα επιτυχημένο στάδιο πακέτου πηγής δεν αρκεί. Η δημιουργία εικόνας μπορεί αργότερα να αποτύχει να καταναλώσει το πακέτο και ένα εγκατεστημένο πακέτο μπορεί να εξακολουθεί να μην μπορεί να χρησιμοποιηθεί.
Αντιμετώπιση προβλημάτων
- Απορρίφθηκαν τα μεταδεδομένα συσκευασίας: επικυρώστε το εγγενές πακέτο τοπικά με την ίδια έκδοση διανομής και αρχιτεκτονική.
- Λείπει εξάρτηση δημιουργίας: χρήση εξαρτήσεων που είναι διαθέσιμες από εγκεκριμένα αποθετήρια για αυτόν τον στόχο. Μην ανακτάτε αυθαίρετα δυαδικά αρχεία σε ένα σενάριο συντήρησης.
- Το πακέτο απουσιάζει από την εικόνα: συγκρίνετε το παραγόμενο όνομα δυαδικού πακέτου με το κανονικοποιημένο αίτημα εγκατάστασης και το τελικό απόθεμα.
- Η έκδοση δεν άλλαξε: ενημερώστε τα μεταδεδομένα της εγγενούς έκδοσης και επιβεβαιώστε ότι η δέσμευση νέας πηγής επιλύθηκε.
- Η υπηρεσία απέτυχε: επιθεωρήστε τη μονάδα, τις εξαρτήσεις χρόνου εκτέλεσης, τα δικαιώματα και τα αρχεία καταγραφής επισκεπτών. προσθέστε έναν ισχυρισμό σε επίπεδο συμπεριφοράς πριν από την ανακατασκευή.