Sari la conținut

Publicarea versiunilor

Expert

Transformă un build testat într-o versiune. Pagina asta e pentru mentenanți.

  • Toate verificările din Testare trec, inclusiv o rulare end-to-end completă și rulările lungi și cele pentru defecte.
  • CHANGELOG.md are versiunea nouă.
  • Python 3 e instalat pentru scripturile de versiune.
  1. Scrie releases/notes-<version>.toml, de exemplu releases/notes-1.0.0.toml. Vezi Fișierul cu note de versiune.

  2. Verifică-l:

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

    Ar trebui să nu vezi nicio eroare. Un cuvânt interzis, o liniuță lungă (em dash), o dată, vorbe despre lansare sau un punct forte repetat fac scriptul să iasă cu codul 1.

  3. Construiește textele versiunii:

    Terminal window
    python deploy/release/notes.py 1.0.0

    Ar trebui să găsești 7 fișiere în releases/out/1.0.0/.

  4. Construiește imaginea și pornește-o pe un dosar de configurare nou:

    Terminal window
    docker build --file deploy/Dockerfile .

    Ar trebui să vezi asistentul de la prima pornire.

  5. Rulează pe aparatul tău toate verificările din Testare. Testele rulează local, nu pe GitHub.

  6. Dă versiunea mentenantului. Mentenantul trimite tag-ul versiunii pe main, iar asta pornește versiunea.

Nume de versiune și de tag

Link către Nume de versiune și de tag
Lucru Nume
Tag Git (trimis de mentenant) 1.0.0 (numere simple, fără v)
Eticheta imaginii și version din note 1.0.0

Fluxul de lucru pornește doar pentru un tag X.Y.Z și se oprește când tag-ul diferă de fișierul VERSION.

Fiecare versiune trimite eticheta versiunii ei și :latest.

  1. Trimite versiunea următoare cu reparația.
  2. Marchează versiunea proastă în lista de actualizări, ca instalările să nu o mai ofere.
  3. Păstrează tag-ul.

Simptom. notes.py --check iese cu codul 1. Cauză. Fișierul de note încalcă o regulă. Mesajul numește linia. Soluție. Editează fișierul de note, niciodată fișierele din releases/out, și rulează din nou.

Simptom. Fluxul de lucru se oprește cu VERSION says. Cauză. Tag-ul și fișierul VERSION diferă. Soluție. Repară VERSION pe main și trimite tag-ul versiunii următoare.

Fișierul cu note de versiune

Fiecare text de versiune vine dintr-un singur fișier. Nu edita niciodată de mână ce construiește el.

Câmp Conținut
version X.Y.Z simplu
theme O linie
images Listă de {registry, name}. Doar Docker Hub holyarrs/holyarrs
docs_url Opțional. Gol înseamnă fără link spre documentație
[[highlights]] Exact 3, fiecare cu line, issues și shot. Problemele lor nu apar în nicio linie de grup
[groups] Linii pe loc. Nou e implicit. Celelalte încep cu Changed: , Fixed: sau Docs: . Fiecare se termină cu problema ei, de exemplu (#46). Un loc cu sub 3 linii merge la Also new
Opțional [before_you_update] (breaking, manual_steps, backup, rollback), security, known_issues, credits, [stats]. Părțile goale sunt ascunse

Folosește un nume de utilizator GitHub doar când e cunoscut, în fișierul de note sau în releases/credits-map.json.

Ordinea corpului: temă, Highlights, locuri (Requests, Library, Downloads, Indexers, Accounts, Health, Setup, Install), Also new, Security, Known issues, Before you update, Image, Thanks, linia de statistici.

Ieșire în releases/out/<version>/ Folosită pentru
changelog.md Intrarea din jurnalul de modificări
github.md Corpul versiunii de pe GitHub
update-notes.json Notele pe care le arată aplicația
reddit.txt Postarea de pe Reddit
discord-dm.txt, discord-announce.md Discord. Fiecare rămâne sub 1.000 de caractere
roadmap-card.json Cardul din foaia de parcurs

notes.py primește --file (alt fișier de note), --map (altă hartă de credite), --out (alt dosar de ieșire) și --date. --check avertizează la linii lungi și la repetări apropiate.

Fluxul de lucru al imaginii

Fluxul HolyArrs - Release pornește când se trimite un tag de versiune. Are trei pași:

  1. Construiește și trimite imaginea pentru linux/amd64, linux/arm64 și linux/arm/v7, cu eticheta versiunii și latest.
  2. Actualizează descrierea de pe Docker Hub din README.md.
  3. Publică versiunea pe GitHub cu secțiunea din CHANGELOG.md a acestei versiuni.
Lista de actualizări

Aplicația citește o listă de actualizări semnată. Fiecare versiune își adaugă intrarea și o semnează. Cheia de semnare nu intră niciodată în depozit. HolyArrs refuză o listă pe care nu o poate verifica.

După o versiune, verifică dacă eticheta de versiune a imaginii se potrivește cu tag-ul și urmărește problemele noi în prima zi:

Terminal window
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrs
Șablonul de test pentru Unraid

deploy/release/nas-template.py scrie un șablon de utilizator Unraid pentru o singură imagine exactă. Nu descarcă, nu instalează și nu publică nimic.

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

Înlocuiește <digest> și <pool>.

Opțiune Note
--image Rezumatul manifestului din registru, nu un ID de imagine Docker
--config O cale dintr-un pool. Unealta refuză /mnt/user și /mnt/user0
--movies, --tv, --music, --downloads Opționale. Căi separate înseamnă montări separate, așa că importurile copiază
--port Implicit 6262
--allowed-hosts Opțional, nume de gazdă separate prin virgulă
--output Fișierul XML de scris

Șablonul setează PUID=99, PGID=100 și UMASK=022. Dă acelui cont permisiune de scriere pe fișierele media de test. Pune fișierul în /boot/config/plugins/dockerMan/templates-user/ și alege-l la Docker > Add Container > Template (Docker > Adaugă container > Șablon).

HolyArrs este gratuit. Dacă ți-a economisit timp, dă-i o stea pe GitHub, sponsorizează-l sau cumpără-mi o cafea.