From 7379e07df549f02f5255ef61c234ba9bb8e03656 Mon Sep 17 00:00:00 2001 From: Andreas Date: Thu, 29 Aug 2024 21:12:53 +0200 Subject: [PATCH] release via github action erstellen, create-release.bat entfernt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Erstellung des release ist jetzt über eine github action automatisiert - ein push auf main oder develop erzeugt ein pre-release mit dem tag latest - ein push mit einem tag erzeugt ein release mit diesem tag --- .env | 1 + .github/workflows/push.yml | 120 +++++++++++++++++++++++++++++++++++++ README.md | 2 - create-release.bat | 87 --------------------------- 4 files changed, 121 insertions(+), 89 deletions(-) create mode 100644 .env create mode 100644 .github/workflows/push.yml delete mode 100644 create-release.bat diff --git a/.env b/.env new file mode 100644 index 0000000..25bfa22 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +HUGO_VERSION=0.133.1 diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 0000000..5c7a222 --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,120 @@ +# Sample workflow for building and deploying a Hugo site to GitHub Pages +name: Create Relese with Hugo + +# run on push event +on: + push: + +# Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# set permissions for GITHUB TOKEN +permissions: + contents: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +# Default to bash +defaults: + run: + shell: bash + +jobs: + # Build job + build: + # build only if push to master or tags + if: ${{ (github.ref == 'refs/heads/main') || (github.ref == 'refs/heads/develop') || (startsWith(github.ref, 'refs/tags/')) }} + runs-on: ubuntu-latest + steps: +### manual hugo setup +# - name: Install Hugo CLI +# run: | +# wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ +# && sudo dpkg -i ${{ runner.temp }}/hugo.deb +# - name: Install Dart Sass +# run: sudo snap install dart-sass +### + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive +# Hugo Setup action from mareketplace +# https://github.com/marketplace/actions/hugo-setup + - name: Read .env + id: hugo-version + run: | + echo "NOW=$(date +'%Y-%m-%d_%H:%M:%S_%Z')" >> $GITHUB_ENV + cat ./.env >> $GITHUB_ENV + echo "HUGO_CACHEDIR=${{ runner.temp }}/hugo_cache" >> $GITHUB_ENV + echo "BITS_WEB=${{ runner.temp }}/BITS-${{ github.ref_name }}-webroot" >> $GITHUB_ENV + echo "BITS_FILE=${{ runner.temp }}/BITS-${{ github.ref_name }}-fileshare" >> $GITHUB_ENV + echo "BITS_MD5=${{ runner.temp }}/BITS-${{ github.ref_name }}.md5" >> $GITHUB_ENV + - name: Setup Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: '${{ env.HUGO_VERSION }}' + extended: true +### + - name: Build webroot with Hugo + env: + HUGO_ENVIRONMENT: production + run: | + hugo \ + --cleanDestinationDir \ + --destination $BITS_WEB + - name: Create webroot ZIP + run: | + cd $BITS_WEB && \ + zip -r -9 \ + $BITS_WEB.zip \ + ./* \ + -x CNAME + - name: Build html with Hugo + env: + HUGO_ENVIRONMENT: html + run: | + hugo \ + --cleanDestinationDir \ + --destination $BITS_FILE + - name: Create fileshare ZIP + run: | + cd $BITS_FILE && \ + zip -r -9 \ + $BITS_FILE.zip \ + ./* \ + -x CNAME + - name: Create md5sum file + run: | + cd ${{ runner.temp }} && \ + md5sum ./BITS-*.zip >$BITS_MD5 +# create pre release +### https://github.com/slord399/action-automatic-releases + - name: "Publish Prerelease" + uses: "slord399/action-automatic-releases@v1.0.1" + if: ${{ ! startsWith(github.ref, 'refs/tags/') }} + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: true + title: "Development Build ${{ env.NOW }}" + files: | + ${{ env.BITS_WEB }}.zip + ${{ env.BITS_FILE }}.zip + ${{ env.BITS_MD5 }} +# create release + - name: "Publish Release" + uses: "slord399/action-automatic-releases@v1.0.1" + if: ${{ startsWith(github.ref, 'refs/tags/') }} + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + prerelease: false + title: "BITS ${{ github.ref_name }}" + files: | + ${{ env.BITS_WEB }}.zip + ${{ env.BITS_FILE }}.zip + ${{ env.BITS_MD5 }} + diff --git a/README.md b/README.md index 1e7c963..c1b5ce3 100644 --- a/README.md +++ b/README.md @@ -72,8 +72,6 @@ Mit folgenden Befehlen werden mit hugo aus den Markdown-Textdateien die statisch ``` Die erzeugten HTML-Dateien liegen im Ordner "public". -Die im Repository enthaltene "create-release.bat" erzeugt aus einem Tag automatisch die beiden ZIP-Dateien für die GitHub-Releases. - ## Weitere Infos Hinweise zur Installation der Releases und den sinnvollen lokalen Anpassungen der Inhalte und des Layouts liegen hier: diff --git a/create-release.bat b/create-release.bat deleted file mode 100644 index 06ca98c..0000000 --- a/create-release.bat +++ /dev/null @@ -1,87 +0,0 @@ -@echo off -if "%~1"=="" ( - echo Version TAG nicht angegeben! - echo. - echo Bitte als paramenter angeben. z.B. v6.0.0-beta4 - echo Benutze den Befehl 'git tag' zum Anzeigen der verfuegbaren TAGs - pause - exit 1 -) - -FOR /F "tokens=*" %%a in ('git branch --show-current') do SET CURBR=%%a - -echo TAG %1 wird ausgecheckt... -git checkout %1 -if "%ERRORLEVEL%" == "1" ( - echo Fehler beim Auschecken des TAGs %1. Bitte pruefen! - pause - exit 1 -) -echo Submodule werden aktualisiert -git submodule update --init --recursive -if "%ERRORLEVEL%" == "1" ( - echo Fehler beim aktualisieren der Submodule. Bitte pruefen! - pause - exit 1 -) - -echo. -echo BITS Release wird in den Verzeichnissen '..\BITS-%1-webroot' erstellt... -hugo --cleanDestinationDir --destination ..\BITS-%1-webroot -if "%ERRORLEVEL%" == "1" ( - echo Fehler beim Erstellen der 'webroot' Version. Bitte pruefen! - pause - exit 1 -) -del ..\BITS-%1-webroot\CNAME - -echo. -echo Komprimiere BITS-%1-webroot -"c:\Program Files\7-Zip\7z.exe" -tzip -mx9 a ..\BITS-%1-webroot.zip ..\BITS-%1-webroot\* -if "%ERRORLEVEL%" == "1" ( - echo Fehler beim komprimieren der 'webroot' Version. Bitte pruefen! - pause - exit 1 -) -rd /s/q ..\BITS-%1-webroot\ - -echo. -echo BITS Release wird in den Verzeichnissen '..\BITS-%1-fileshare' erstellt... -hugo --environment html --cleanDestinationDir --destination ..\BITS-%1-fileshare -if "%ERRORLEVEL%" == "1" ( - echo "Fehler beim Erstellen der 'fileshare' Version. Bitte pruefen!" - pause - exit 1 -) -del ..\BITS-%1-fileshare\CNAME - -echo. -echo Komprimiere BITS-%1-fileshare -"c:\Program Files\7-Zip\7z.exe" -tzip -mx9 a ..\BITS-%1-fileshare.zip ..\BITS-%1-fileshare\* -if "%ERRORLEVEL%" == "1" ( - echo Fehler beim komprimieren der 'fileshare' Version. Bitte pruefen! - pause - exit 1 -) -rd /s/q ..\BITS-%1-fileshare\ - -echo. -echo erstelle MD5SUM Hashes -powershell -command "get-filehash ..\BITS-*.zip -algorithm md5 | Foreach-Object {$file = $_.Path -split '\\'; write-host $_.hash $file[-1] }">..\BITS-%1.md5 -rem md5sum ../BITS-*.zip >..\BITS-%1.md5 -if "%ERRORLEVEL%" == "1" ( - echo Fehler beim erstellen der MD5SUM. Bitte pruefen! - pause -) - -echo "vorheriger Branch %CURBR% wird wieder ausgecheckt..." -git checkout %CURBR% -echo Submodule werden auf alten stand gebracht. -git submodule update --init --recursive -if "%ERRORLEVEL%" == "1" ( - echo Fehler beim aktualisieren der Submodule. Bitte pruefen! - pause -) - -echo. -echo fertig.