Update all scripts to use GitHub Releases instead of gh-pages #9
Workflow file for this run
This file contains hidden or 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
| # ============================================================================= | |
| # SIDEKICK Release Workflow | |
| # ============================================================================= | |
| # Baut das Projekt automatisch und erstellt ein Release wenn ein Tag gepusht wird. | |
| # | |
| # Verwendung: | |
| # git tag v1.0.0 | |
| # git push origin v1.0.0 | |
| # | |
| # Das erstellt automatisch ein Release mit der gebauten Webapp als ZIP. | |
| # ============================================================================= | |
| name: Build and Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' # Triggered bei Tags wie v1.0.0, v1.2.3, etc. | |
| # Erlaubt manuelles Triggern für Tests | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| name: Build SIDEKICK | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 1. Code auschecken | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| # 2. Node.js einrichten | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| # Kein Caching, da package-lock.json nicht im Repo ist | |
| # 3. Scratch-VM und Scratch-GUI klonen (wie 0-setup.sh) | |
| - name: Clone Scratch repositories | |
| env: | |
| HUSKY: '0' # Disable husky hooks during setup | |
| run: | | |
| echo "Cloning scratch-vm..." | |
| git clone --depth 1 https://github.com/scratchfoundation/scratch-vm.git | |
| echo "Cloning scratch-gui..." | |
| git clone --depth 1 https://github.com/scratchfoundation/scratch-gui.git | |
| # 4. Extensions in scratch-vm kopieren | |
| - name: Copy extensions to scratch-vm | |
| run: | | |
| mkdir -p scratch-vm/src/extensions/scratch3_sidekickmqtt | |
| mkdir -p scratch-vm/src/extensions/scratch3_sidekick | |
| cp -r sidekick-scratch-mqtt-extension/* scratch-vm/src/extensions/scratch3_sidekickmqtt/ | |
| cp -r sidekick-scratch-extension/* scratch-vm/src/extensions/scratch3_sidekick/ | |
| # 5. Scratch-VM Setup und Build | |
| - name: Setup and Build Scratch-VM | |
| working-directory: scratch-vm | |
| env: | |
| NODE_OPTIONS: '--openssl-legacy-provider' | |
| HUSKY: '0' | |
| run: | | |
| npm install | |
| # Skip docs generation (jsdoc has issues), only run webpack | |
| ./node_modules/.bin/webpack --progress | |
| # 6. Player.jsx patchen | |
| - name: Patch player.jsx | |
| run: cp patches/player.jsx scratch-gui/src/playground/player.jsx | |
| # 7. Scratch-GUI Setup und Build | |
| - name: Setup and Build Scratch-GUI | |
| working-directory: scratch-gui | |
| env: | |
| NODE_OPTIONS: '--openssl-legacy-provider' | |
| HUSKY: '0' | |
| run: | | |
| npm install | |
| npm link ../scratch-vm | |
| npm run build | |
| # 8. Release-Paket zusammenstellen | |
| - name: Prepare release package | |
| run: | | |
| mkdir -p release/sidekick | |
| # Webapp (gebaute Scratch-GUI) | |
| cp -r scratch-gui/build/* release/sidekick/ | |
| # Third-party libraries | |
| cp -r sidekick-thirdparty-libraries release/sidekick/ | |
| # Kiosk-Dateien | |
| cp src/kiosk.html release/sidekick/ | |
| cp src/dashboard-qr.png release/sidekick/ | |
| # Videos und Projects Ordner anlegen | |
| mkdir -p release/sidekick/videos | |
| mkdir -p release/sidekick/projects | |
| echo "[]" > release/sidekick/videos/video-list.json | |
| echo "[]" > release/sidekick/projects/project-list.json | |
| # Python-Skripte | |
| mkdir -p release/python | |
| cp RPi/python/*.py release/python/ | |
| # Setup-Skripte | |
| mkdir -p release/scripts | |
| cp RPi/*.sh release/scripts/ | |
| chmod +x release/scripts/*.sh | |
| # Version info | |
| echo "${{ github.ref_name }}" > release/VERSION | |
| # ZIP erstellen | |
| cd release | |
| zip -r ../sidekick-${{ github.ref_name }}.zip . | |
| # 9. Release erstellen (nur bei Tag-Push, nicht bei manuellem Trigger) | |
| - name: Create Release | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: sidekick-${{ github.ref_name }}.zip | |
| generate_release_notes: true | |
| draft: false | |
| # Pre-Release wenn 'test', 'beta', 'alpha' oder 'dev' im Tag-Namen | |
| prerelease: ${{ contains(github.ref_name, 'test') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'alpha') || contains(github.ref_name, 'dev') }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # 10. Artefakt auch als Download verfügbar machen (für Tests) | |
| - name: Upload build artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: sidekick-build | |
| path: release/ | |
| retention-days: 7 | |
| # 11. Build Summary | |
| - name: Build Summary | |
| run: | | |
| echo "========================================" | |
| echo "✅ SIDEKICK Build erfolgreich!" | |
| echo "========================================" | |
| if [[ "${{ github.ref }}" == refs/tags/* ]]; then | |
| echo "📦 Release erstellt: ${{ github.ref_name }}" | |
| echo "🔗 Download verfügbar unter GitHub Releases" | |
| else | |
| echo "🔧 Test-Build (manueller Trigger)" | |
| echo "ℹ️ Kein Release erstellt - nur zum Testen" | |
| echo "💡 Für echtes Release: git tag v1.x.x && git push origin v1.x.x" | |
| fi | |
| echo "========================================" |