Μετάβαση στο περιεχόμενο

Κυκλοφορία εκδόσεων

Για έμπειρους

Κάνε ένα δοκιμασμένο build έκδοση. Αυτή η σελίδα είναι για συντηρητές.

  • Περνούν όλοι οι έλεγχοι στις Δοκιμές, μαζί με ένα πλήρες end-to-end τρέξιμο και τα μεγάλα τρεξίματα και τα τρεξίματα βλαβών.
  • Το CHANGELOG.md έχει τη νέα έκδοση.
  • Είναι εγκατεστημένη η Python 3 για τα scripts της έκδοσης.
  1. Γράψε το releases/notes-<version>.toml, για παράδειγμα releases/notes-1.0.0.toml. Δες το Αρχείο σημειώσεων έκδοσης.

  2. Έλεγξέ το:

    Terminal window
    python deploy/release/notes.py 1.0.0 --check

    Δεν θα πρέπει να δεις σφάλματα. Μια απαγορευμένη λέξη, ένα em dash, μια ημερομηνία, λόγος για το launch ή ένα επαναλαμβανόμενο ζήτημα στα highlights τερματίζει με κωδικό 1.

  3. Φτιάξε τα κείμενα της έκδοσης:

    Terminal window
    python deploy/release/notes.py 1.0.0

    Θα πρέπει να βρεις 7 αρχεία στο releases/out/1.0.0/.

  4. Κάνε build την image και ξεκίνησέ την με φρέσκο φάκελο ρυθμίσεων:

    Terminal window
    docker build --file deploy/Dockerfile .

    Θα πρέπει να δεις τον οδηγό πρώτης εκκίνησης.

  5. Τρέξε κάθε έλεγχο του Δοκιμές στον υπολογιστή σου. Οι δοκιμές τρέχουν τοπικά, όχι στο GitHub.

  6. Πέρασε την έκδοση στον συντηρητή. Ο συντηρητής κάνει push το tag της έκδοσης στο main, και αυτό ξεκινά την κυκλοφορία.

Πράγμα Όνομα
Git tag (το κάνει push ο συντηρητής) 1.0.0 (απλοί αριθμοί, χωρίς v)
Tag της image και το version των σημειώσεων 1.0.0

Το workflow ξεκινά μόνο για tag της μορφής X.Y.Z και σταματά όταν το tag διαφέρει από το αρχείο VERSION.

Κάθε έκδοση κάνει push το tag της έκδοσής της και το :latest.

  1. Κάνε push την επόμενη έκδοση με τη διόρθωση.
  2. Σημείωσε την κακή έκδοση στη λίστα ενημερώσεων, ώστε οι εγκαταστάσεις να μην την προσφέρουν.
  3. Κράτα το tag.

Σύμπτωμα. Το notes.py --check τερματίζει με κωδικό 1. Αιτία. Το αρχείο σημειώσεων σπάει έναν κανόνα. Το μήνυμα ονομάζει τη γραμμή. Λύση. Διόρθωσε το αρχείο σημειώσεων, ποτέ τα αρχεία στο releases/out, και τρέξε το ξανά.

Σύμπτωμα. Το workflow σταματά με VERSION says. Αιτία. Το tag και το αρχείο VERSION διαφέρουν. Λύση. Διόρθωσε το VERSION στο main και κάνε push το tag της επόμενης έκδοσης.

Αρχείο σημειώσεων έκδοσης

Κάθε κείμενο της έκδοσης προκύπτει από ένα αρχείο. Μην επεξεργάζεσαι ποτέ με το χέρι ό,τι φτιάχνει.

Πεδίο Περιεχόμενο
version Απλό X.Y.Z
theme Μία γραμμή
images Λίστα με {registry, name}. Μόνο το holyarrs/holyarrs στο Docker Hub
docs_url Προαιρετικό. Κενό σημαίνει χωρίς σύνδεσμο στα Docs
[[highlights]] Ακριβώς 3, το καθένα με line, issues και shot. Τα issues τους δεν εμφανίζονται σε καμία γραμμή ομάδας
[groups] Γραμμές ανά σημείο. Το New είναι η προεπιλογή. Οι άλλες ξεκινούν με Changed: , Fixed: ή Docs: . Κάθε γραμμή τελειώνει με το issue της, όπως (#46). Ένα σημείο με λιγότερες από 3 γραμμές πηγαίνει κάτω από το Also new
Προαιρετικά [before_you_update] (breaking, manual_steps, backup, rollback), security, known_issues, credits, [stats]. Τα κενά μέρη κρύβονται

Χρησιμοποίησε GitHub login μόνο όταν είναι γνωστό, στο αρχείο σημειώσεων ή στο releases/credits-map.json.

Σειρά του κειμένου: theme, Highlights, σημεία (Requests, Library, Downloads, Indexers, Accounts, Health, Setup, Install), Also new, Security, Known issues, Before you update, Image, Thanks, γραμμή στατιστικών.

Έξοδος στο releases/out/<version>/ Χρήση
changelog.md Η καταχώρηση στο changelog
github.md Το κείμενο της έκδοσης στο GitHub
update-notes.json Οι σημειώσεις που δείχνει η εφαρμογή
reddit.txt Η ανάρτηση στο Reddit
discord-dm.txt, discord-announce.md Discord. Καθένα μένει κάτω από 1.000 χαρακτήρες
roadmap-card.json Η κάρτα του roadmap

Το notes.py δέχεται --file (άλλο αρχείο σημειώσεων), --map (άλλο credits map), --out (άλλον φάκελο εξόδου) και --date. Το --check προειδοποιεί για μακριές γραμμές και σχεδόν επαναλήψεις.

Το workflow της image

Το workflow HolyArrs - Release ξεκινά όταν γίνεται push ένα tag έκδοσης. Έχει τρία βήματα:

  1. Κάνει build και push την image για linux/amd64, linux/arm64 και linux/arm/v7, με το tag της έκδοσης και το latest.
  2. Ενημερώνει την περιγραφή στο Docker Hub από το README.md.
  3. Δημοσιεύει την έκδοση στο GitHub με την ενότητα αυτής της έκδοσης από το CHANGELOG.md.
Λίστα ενημερώσεων

Η εφαρμογή διαβάζει μια υπογεγραμμένη λίστα ενημερώσεων. Κάθε έκδοση προσθέτει την καταχώρησή της και την υπογράφει. Το κλειδί υπογραφής δεν μπαίνει ποτέ στο repo. Το HolyArrs αρνείται μια λίστα που δεν μπορεί να επαληθεύσει.

Μετά από μια έκδοση, έλεγξε ότι η ετικέτα έκδοσης της image ταιριάζει με το tag, και παρακολούθησε τα νέα issues για την πρώτη μέρα:

Terminal window
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrs
Δοκιμαστικό template για Unraid

Το deploy/release/nas-template.py γράφει ένα user template για Unraid για μία συγκεκριμένη image. Δεν κατεβάζει, δεν εγκαθιστά και δεν δημοσιεύει τίποτα.

Terminal window
python deploy/release/nas-template.py --image 'holyarrs/holyarrs@sha256:<digest>' --config '/mnt/<pool>/appdata/holyarrs-test' --movies /mnt/user/holyarrs-test-data/movies --downloads /mnt/user/holyarrs-test-data/downloads --port 6262 --output holyarrs-test.xml

Αντικατάστησε τα <digest> και <pool>.

Flag Σημειώσεις
--image Το digest του manifest στο registry, όχι το ID μιας image του Docker
--config Μια διαδρομή pool. Το εργαλείο αρνείται τα /mnt/user και /mnt/user0
--movies, --tv, --music, --downloads Προαιρετικά. Ξεχωριστές διαδρομές είναι ξεχωριστές συνδέσεις φακέλων, άρα οι εισαγωγές αντιγράφουν
--port Από προεπιλογή 6262
--allowed-hosts Προαιρετικό, ονόματα host χωρισμένα με κόμμα
--output Το αρχείο XML που θα γραφτεί

Το template ορίζει PUID=99, PGID=100 και UMASK=022. Δώσε σε αυτόν τον λογαριασμό δικαίωμα εγγραφής στα δοκιμαστικά πολυμέσα. Βάλε το αρχείο στο /boot/config/plugins/dockerMan/templates-user/ και διάλεξέ το κάτω από Docker > Add Container > Template (Docker > Προσθήκη container > Template).

Το HolyArrs είναι δωρεάν. Αν σου γλίτωσε χρόνο, βάλε του αστέρι στο GitHub, γίνε χορηγός ή κέρασέ με έναν καφέ.