name: Gitea Release on: workflow_call: jobs: create-release: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Install Build Dependencies run: | # System-Level Dependencies echo "Installing system dependencies..." sudo apt-get update sudo apt-get install -y python3-minimal python3-pip curl # Verify Python installation echo "Python version:" python3 --version # Verify pip installation echo "Pip version:" pip3 --version # Install Python packages echo "Installing Python packages..." python3 -m pip install --user platformio python3 -m pip install --user esptool # Add local bin to PATH echo "${HOME}/.local/bin" >> $GITHUB_PATH export PATH="${HOME}/.local/bin:$PATH" # Verify installations echo "PlatformIO version:" pio --version || echo "PlatformIO not found in PATH" echo "Esptool version:" esptool.py version || echo "Esptool not found in PATH" - name: Build Firmware run: | # Ensure PlatformIO is in PATH export PATH="${HOME}/.local/bin:$PATH" echo "Building SPIFFS..." python3 -m platformio run -t buildfs echo "Building firmware..." python3 -m platformio run - name: Merge Firmware Files run: | export PATH="${HOME}/.local/bin:$PATH" python3 -m esptool --chip esp32 merge_bin \ --flash_mode dio \ --flash_freq 40m \ --flash_size 4MB \ -o .pio/build/esp32dev/filaman_full.bin \ 0x1000 .pio/build/esp32dev/bootloader.bin \ 0x8000 .pio/build/esp32dev/partitions.bin \ 0x10000 .pio/build/esp32dev/firmware.bin \ 0x290000 .pio/build/esp32dev/spiffs.bin cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin - name: Create Release shell: bash env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | # Basis-Variablen setzen API_BASE="${GITEA_SERVER_URL}/api/v1" REPO="${GITEA_REPOSITORY}" TAG="${GITEA_REF_NAME}" echo "Creating release for ${TAG}..." # Release erstellen RESPONSE=$(curl -k -f -s \ -X POST \ -H "accept: application/json" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"${TAG}\",\"name\":\"Release ${TAG}\"}" \ "${API_BASE}/repos/${REPO}/releases") # Release ID extrahieren RELEASE_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | cut -d':' -f2) if [ -n "$RELEASE_ID" ]; then echo "Release created with ID: $RELEASE_ID" # Binärdateien hochladen for file in "filaman_full.bin" "filaman_ota.bin"; do echo "Uploading $file..." curl -k -f -s \ -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/octet-stream" \ --data-binary "@.pio/build/esp32dev/$file" \ "${API_BASE}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=$file" done echo "Upload completed" else echo "Failed to create release" echo "$RESPONSE" exit 1 fi