Skip to content
This repository has been archived by the owner on May 31, 2024. It is now read-only.

Commit

Permalink
Merge pull request #15 from kurmann/main
Browse files Browse the repository at this point in the history
merge from main
  • Loading branch information
kurmann authored Apr 8, 2024
2 parents aca6d69 + 987df6b commit a5158c7
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 21 deletions.
51 changes: 39 additions & 12 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,54 @@
name: Pack .NET Template

# Versionierungsstrategie:
# Für den main-Branch werden Releases mit der in der .csproj-Datei festgelegten Version erstellt,
# die manuell vor dem Merge angepasst werden sollte. Dies ermöglicht eine präzise Kontrolle über Major und Minor Releases.
# Für alle anderen Branches werden automatische Zwischenreleases mit einem Datumssuffix generiert, um kontinuierliches Testing und Feedback
# für Entwicklungsstände zu ermöglichen. Das Datumssuffix wird basierend auf dem aktuellen Datum und der Uhrzeit zum Zeitpunkt des Builds hinzugefügt,
# was jede Version einzigartig macht.

on:
push:
branches:
- main
- '**'

jobs:
pack:
runs-on: ubuntu-latest

env:
PROJECT_FILE: Templates.csproj
BASE_VERSION: '1.0.0' # Wird dynamisch überschrieben

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'

- name: Restore NuGet packages
run: dotnet restore
- name: Restore NuGet packages
run: dotnet restore ${{ env.PROJECT_FILE }}

- name: Pack .NET Template Project
run: dotnet pack --configuration Release --no-build --output nupkg
# Schritt: Lese die PackageVersion aus der .csproj Datei und setze sie als Umgebungsvariable
- name: Read Package Version from .csproj and Set as Env Var
run: |
version=$(grep '<PackageVersion>' ${{ env.PROJECT_FILE }} | sed -n -e 's/.*<PackageVersion>\(.*\)<\/PackageVersion>.*/\1/p')
echo "Base version is $version"
echo "BASE_VERSION=$version" >> $GITHUB_ENV
- name: Publish to NuGet.org
run: dotnet nuget push "nupkg/*.nupkg" --api-key ${{secrets.NUGET_API_KEY}} --source https://api.nuget.org/v3/index.json
# Schritt: Pack .NET Template Project mit dynamischer Versionierung für Zwischenreleases
- name: Pack .NET Template Project
run: |
if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
dotnet pack ${{ env.PROJECT_FILE }} --configuration Release --output nupkg
else
datetimeSuffix=$(date +"%Y%m%d%H%M")
version="${{ env.BASE_VERSION }}-preview.$datetimeSuffix"
dotnet pack ${{ env.PROJECT_FILE }} /p:PackageVersion=$version --configuration Release --output nupkg
echo "Zwischenversion ist $version"
fi
- name: Publish to NuGet.org
run: dotnet nuget push "nupkg/*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
37 changes: 37 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,40 @@ Dieser Befehl fügt ein vorkonfiguriertes `.gitignore` zu Ihrem Projekt hinzu, d
## Lizenz

Das Projekt steht unter der [Apache 2.0 Lizenz](LICENSE).

## Änderungsverlauf

### Unveröffentlicht

- Neues Template um ein ganzes GitHub-Repository zu erstellen mit .NET-Projekten, Gitignore, Nuget-Packaging-Workflows

### Version 0.3.2 - 2024-04-08

#### Hinzugefügt

- Änderungsverlauf aus den zugehörigen veröffentlichen Nuget-Packages in dieses Readme integriert.

### Version 0.3.1 - 2024-04-08

#### Geändert

- Vereinfachter Workflow für Zwischenreleases mit automatischer Datumsvergabe bei Vorschauversionen nach dem Vorbild aus "Kurmann.Messaging"

### Version 0.3.0 - 2024-04-06

#### Hinzugefügt

- Template erstellt zur Erstellung einer GitHub-Action für die automatische Veröffentlichung von NuGet-Paketen.

### Version 0.2.0 - 2024-04-06

#### Hinzugefügt

- Template erstellt zur Erstellung einer Klassenbibliothek im Kurmann-Namespace.

### Version 0.1.0 - 2024-04-06

#### Hinzugefügt

- Template zur Erstellung einer Gitignore-Datei.
- Erste Veröffentlichung mit einer Vorlage für eine .NET-Klassenbibliothek mit NuGet-Unterstützung.
35 changes: 26 additions & 9 deletions Templates.csproj
Original file line number Diff line number Diff line change
@@ -1,20 +1,37 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageType>Template</PackageType>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>Kurmann.Templates</PackageId>
<Title>Templates</Title>
<Authors>Patrick Kurmann</Authors>
<Description>Vorlagen für .NET-Entwicklung im Kurmann-Namespace.</Description>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/kurmann/Templates</RepositoryUrl>

<!-- Package-Tages zur Katalogisierung auf Nuget.org. Mehrere Tags mit Semikolen ";" trennen. -->
<PackageTags>dotnet-new;templates;</PackageTags>
<TargetFramework>netstandard2.0</TargetFramework>

<!-- Die Version sollte mit jeder Veröffentlichung auf Nuget.org erhöht werden. Die Release Notes dürfen Umbrüche
enthalten, jedoch keine spezifischen Markdown-Formatierungen wie fett oder kursiv oder Überschriften -->
<PackageVersion>0.3.0-beta.1</PackageVersion>
<PackageReleaseNotes>Korrektur: Workflow-Vorlage übernimmt korrekt den Bibliotheks-Namen in den Kurmann-Namespace.
</PackageReleaseNotes>
<!-- Die URL des GIT-Repositories -->
<RepositoryUrl>https://github.com/kurmann/Templates</RepositoryUrl>
<RepositoryType>git</RepositoryType>

<!-- Die Kurzbeschreibung des NuGet-Packets. Die längere Beschreibung wird als README.md eingebunden -->
<Description>Vorlagen für .NET-Entwicklung im Kurmann-Namespace.</Description>

<!-- Versionsverwaltung und -strategie:
Die <PackageVersion> hier definiert die Basisversion für NuGet-Paketveröffentlichungen.
Für reguläre, stabile Releases (auf dem 'main'-Branch) sollte diese Version manuell gemäß den SemVer-Richtlinien (MAJOR.MINOR.PATCH) aktualisiert werden,
bevor Änderungen in den 'main'-Branch gemerged werden. Dies stellt sicher, dass die Veröffentlichung die richtige Versionsnummer erhält.
Zwischenreleases, die automatisch über GitHub Actions für Nicht-'main'-Branches generiert werden, fügen der hier definierten Basisversion
ein datumsbasiertes Suffix hinzu (z.B. -preview.YYYYMMDDHHMM), um die Einzigartigkeit und den Pre-Release-Status dieser Builds zu kennzeichnen.
Es ist nicht notwendig und wird nicht empfohlen, Pre-Release-Identifier wie 'alpha', 'beta', oder 'rc' manuell hier einzufügen,
da dies über den CI/CD-Prozess automatisiert gehandhabt wird. Alle Änderungen, die spezifisch Pre-Release-Versionen betreffen,
sollten stattdessen durch den CI/CD-Prozess gesteuert werden.
Die Release Notes für jede Version sollten separat gepflegt und vor dem Merge in den 'main'-Branch aktualisiert werden. -->
<PackageVersion>0.3.2</PackageVersion>

<!-- Die Release Notes sollten mindestens vor jeder Minor-Version in der README.md-Datei aktualisiert werden. -->
<PackageReleaseNotes>Siehe README.md für Details.</PackageReleaseNotes>

<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down

0 comments on commit a5158c7

Please sign in to comment.