Feature/automate gh pages publication ptdata1214 (#446) #20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unzip and Update IG Version in webpage | |
# This GitHub Actions workflow automates the process of unzipping a ZIP file from the IG directory, | |
# extracting the version number from an HTML file, renaming the directory to the version number, | |
# removing the packages folder, running a custom Python script to update the index, and creating a pull request | |
on: | |
workflow_dispatch: # Ermöglicht die manuelle Auslösung des Workflows | |
push: | |
branches: | |
- gh-pages | |
- feature/automate-gh* # TODO remove this line after testing | |
paths: | |
- IG/isik-*.zip # Trigger auf das Hinzufügen einer ZIP-Datei im IG-Ordner | |
jobs: | |
unzip-and-process: | |
runs-on: ubuntu-latest # Verwende die neueste Ubuntu-Umgebung | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 # Klone das Repository, um auf den Code zuzugreifen | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.x' # Installiere die neueste Python-Version | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install beautifulsoup4 # Installiere die Abhängigkeit für HTML-Verarbeitung | |
- name: Unzip file | |
id: unzip | |
run: | | |
# Bestimme die ZIP-Datei und | |
ZIP_FILE=$(ls IG/isik-*.zip) | |
# wenn keine Datei gefunden wurde dann brech ab und gibt eine Fehlermdelung aus | |
if [ -z "$ZIP_FILE" ]; then | |
echo "No ZIP file found in IG directory" | |
exit 1 | |
fi | |
# prüfe ob mehr als eine Datei dem Schema folgt, falls ja, gib eine Fehlermdelung aus | |
if [ $(ls IG/isik-*.zip | wc -l) -gt 1 ]; then | |
echo "Multiple ZIP files found in IG directory" | |
exit 1 | |
fi | |
# Entpacke die zip-Datei in einen Versionsordner namens new-IG | |
unzip "$ZIP_FILE" -d IG/new-IG | |
# Entferne die ZIP-Datei, um Konflikte zu vermeiden | |
rm "$ZIP_FILE" | |
#lese die Versionsnummer aus der HTML-Datei "ImplementationGuide-markdown-Einfuehrung.html" im neuen Ordner | |
VERSION=$(grep -oP '(?<=Version: )\d+\.\d+\.\d+' IG/new-IG/ImplementationGuide-markdown-Einfuehrung.html) | |
#falls die Versionsnummer nicht gefunden wird, gebe eine Fehlermeldung aus und exitiere | |
if [ -z "$VERSION" ]; then | |
echo "Version number not found in HTML file" | |
exit 1 | |
fi | |
#benenne den Ordner um in die Versionsnummer und gib die Versionsnummer aus | |
mv IG/new-IG IG/"$VERSION" | |
echo "Unzipped version: $VERSION" | |
# Setze die Versionsnummer als Variable, die später für den python argument input verwendet wird | |
echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT" | |
echo "VERSION=$VERSION" >> "$GITHUB_ENV" | |
- name: Remove packages folder | |
run: | | |
rm -rf "IG/$VERSION/packages" # Entferne den packages-Ordner aus dem Versionsordner | |
- name: Run Python script | |
run: | | |
python scripts/update_index.py "$VERSION" # Führe das benutzerdefinierte Python-Skript mit der Versionsnummer als Argument aus | |
- name: Commit changes | |
run: | | |
# Konfiguriere Git-Benutzerinformationen für den Commit | |
git config --local user.name "github-actions" | |
git config --local user.email "[email protected]" | |
# Füge alle Änderungen hinzu | |
git add . | |
git commit -m "AUTOCOMMIT: Processed ZIP file: $ZIP_FILE" # Erstelle den Commit | |
- name: Create Pull Request | |
uses: peter-evans/create-pull-request@v3 | |
with: | |
title: 'AUTOPULLREQUEST: Update from IG folder for TC Version: ${{ steps.unzip.outputs.VERSION }}' # Titel des Pull-Requests | |
body: 'Automated PULL REQUEST Processed new IG-ZIP file for Version: ${{ steps.unzip.outputs.VERSION }}.' # Beschreibung des Pull-Requests | |
base: gh-pages # Ziel-Branch für den Pull-Request | |
branch: update-from-zip-${{ steps.unzip.outputs.VERSION }} # Erstelle einen neuen Branch für die Änderungen mit Angabe der Version |