DevOps und Cloud-Reifegradmodelle verstehen: Ein Leitfaden zur Verbesserung Ihrer IT-Strategie
Im heutigen schnelllebigen Technologiebereich sind DevOps- und Cloud-Praktiken entscheidend, um die Software-Bereitstellung zu beschleunigen und
Die Verbindung zwischen menschlichen Emotionen und der nächsten Versionsnummer eines Projekts kann zu unerwünschten Ergebnissen führen.
Als Entwickler stehen wir oft vor der meist sehr mühsamen und langwierigen Aufgabe, Changelogs mit Tags und speziellen Versionsnamen zu schreiben, die in einem Code-Repository markiert wurden. Daher ist es schön, wenn wir solche Aufgaben automatisieren können.
In diesem Blogbeitrag geht es um Semantic Versioning und darum, wie mit GitHub Actions das Schreiben von Changelogs automatisiert werden kann.
Dieser Blogbeitrag steht in engem Zusammenhang mit einem früheren Beitrag mit dem Titel "Changelog Automation within Gitlab" und stellt eine Beispielimplementierung von Semantic Versioning innerhalb von GitHub vor.
Die Verwendung von Semantic Versioning ermöglicht es GitHub, automatisch Changelogs auf der Grundlage von Commit-Nachrichten zu erstellen. Das bedeutet natürlich, dass die Commit-Nachrichten einem bestimmten Format folgen müssen.
In diesem Beispiel verwenden wir die folgende GitHub Action, um Changelogs zu erstellen.
1name: Releases
2on:
3 push:
4 branches:
5 - main
6 pull_request:
7 branches:
8 - main
9
10jobs:
11 changelog:
12 runs-on: ubuntu-latest
13
14 steps:
15 - uses: actions/checkout@v2
16
17 - name: conventional Changelog Action
18 id: changelog
19 uses: TriPSs/conventional-changelog-action@v3.7.1
20 with:
21 github-token: ${{ secrets.GITHUB_TOKEN }}
22 # skip-version-file: 'true'
23
24 - name: create release
25 uses: actions/create-release@v1
26 if: ${{ steps.changelog.outputs.skipped == 'false' }}
27 env:
28 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29 with:
30 tag_name: ${{ steps.changelog.outputs.tag }}
31 release_name: ${{ steps.changelog.outputs.tag }}
32 body: ${{ steps.changelog.outputs.clean_changelog }}
Natürlich ist es möglich, dieser Pipeline eine Build-Phase hinzuzufügen, in der beispielsweise ein neues Docker-Image erstellt und gepusht wird und der neueste Tag des Docker-Images in das Changelog geschrieben wird.
Wenn diese Pipeline erfolgreich ausgeführt wird, erstellt sie automatisch eine CHANGELOG.md- und eine package.json-Datei, sofern diese nicht bereits vorhanden sind.
Die automatische Erstellung von Dateien kann durch die Angabe weiterer Parameter im GitHub Action-Workflow gesteuert werden. Mit diesen Parametern ist es z.B. möglich, die Erstellung der package.json Datei zu überspringen, indem man skip-version-file: 'true'
benutzt. Weitere Details entnehmen Sie bitte der offiziellen Dokumentation.
Wenn die Implementierung erfolgt, nachdem ein Tag mit einer Versionsnummer hinzugefügt wurde, müssen Sie die Datei package.json manuell bearbeiten, damit sie mit der Versionsnummer übereinstimmt, sofern die Datei existiert.
Wenn es kein Git-Tag gibt, das mit einer früheren Version des Projekts verknüpft ist, wird die erste Version 0.1.0 sein, unabhängig davon, um welche Änderung es sich handelt (Fix, Feat, BREAKING CHANGE).
FIX: (e.g. v0.1.0 → v0.1.1)
1git commit -m "fix: Nachricht"
FEAT: (e.g. v0.1.1 → v0.2.0)
1git commit -m "feat: Nachricht"
BREAKING CHANGE: (e.g. v0.2.0 → v1.0.0)
1git commit -m "feat: Nachricht" -m "BREAKING CHANGE: Nachricht"
Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.
Hier kontaktieren