Die Nordlicht Reisen GmbH baut für ihr Buchungsportal eine eigene Bibliothek mit Preisregeln. Zwei Teams brauchen sie, ein drittes nutzt außerdem Pakete von nuget.org. Bisher kopiert jemand die DLL in die Repositories. Sie sollen entscheiden, wo die Pakete liegen, wer sie sehen darf und wie ein Paket erst „freigegeben“ wird, nachdem es getestet ist.
Die Prüfung nennt zwei Fähigkeiten: Paketwerkzeuge empfehlen und Feeds und Ansichten für lokale und Upstream-Pakete entwerfen.
Vorwissen: K3, Lektion 3.7.4 lehrt schon SemVer, die Version aus einem Git-Tag mit MinVer, ein eigenes Paket mit dotnet pack, Feeds bei GitHub Packages und Azure Artifacts mit Ansichten, Upstream und Aufbewahrung, zentrale Paketversionen und Package Source Mapping. Das wiederholt diese Lektion nicht. Sie beginnt beim Vergleich der beiden Welten und bei den Entscheidungen für ein Team. Wie man Version und Reihenfolge von Versionen wählt, folgt in Lektion 3.2; große Dateien als Paket statt im Repository, siehe Lektion 2.3.
Zwei Welten, ein Zweck
Ein Paket ist eine versionierte, unveränderliche Einheit, die ein Team oder ein Projekt einbindet. Ein Feed ist der Ort, an dem Pakete liegen. Microsoft beschreibt Azure Artifacts als Weg, alle Abhängigkeiten in einem Feed zu verwalten; Feeds speichern, verwalten und teilen Pakete im Team, über Organisationen hinweg oder, für bestehende öffentliche Projekte, öffentlich im Netz.
| Azure Artifacts | GitHub Packages | |
|---|---|---|
| Paketarten | NuGet, npm, Python, Maven (und Gradle), Cargo, Universal Packages | npm, RubyGems, Maven und Gradle, NuGet, Docker und OCI-Images (Container registry) |
| Wo es hängt | in einer Azure-DevOps-Organisation, in einem Projekt oder in der Organisation | an einem Repository oder einer Organisation bei GitHub |
| Anmeldung | in Pipelines das Build-Konto, sonst Anmeldung über Credential Provider oder PAT | laut GitHub nur personal access token (classic); in Actions das GITHUB_TOKEN für Pakete des Workflow-Repositories |
| Rechte | Feed-Rollen | vom Repository geerbt oder für Personen und Organisationen festgelegt; manche Registries kennen nur Repository-Rechte |
| Besonderheiten | Ansichten, Upstream-Quellen, Aufbewahrungsrichtlinien | Pakete öffentlicher Repositories sind öffentlich |
| Kosten | 2 GiB kostenloser Speicher je Organisation, zum Prüfen gedacht | kostenlos für öffentliche Pakete; für private Pakete Speicher und Datentransfer je nach Tarif, darüber Budgets |
Zwei Anmerkungen aus Microsofts Seite: Universal Packages gibt es nur in Azure DevOps Services, nicht in Azure DevOps Server. Cargo gibt es in Azure DevOps Services und in Azure DevOps Server 2022, nicht in Server 2020. Mehr Beträge stehen bei beiden Anbietern auf Preisseiten; diese Lektion nennt keine.
Ein Hinweis zur Anmeldung bei GitHub: Die gelesene Seite sagt, GitHub Packages unterstütze nur das klassische personal access token. Zum Installieren aus anderen privaten Repositories braucht es mindestens den Bereich read:packages, es sei denn, das Repository hat Lesezugriff auf das Paket. Wie Sie Anmeldungen in Pipelines ohne langlebige Geheimnisse lösen, ist Thema des Moduls D5.