Skip to content

Publish Firmware

Publish Firmware #7

name: Publish Firmware
on:
release:
types: [published]
workflow_run:
workflows:
- "Semantic Release"
types:
- completed
permissions:
contents: write
jobs:
set-release-version:
name: Extract Release Version
runs-on: ubuntu-latest
# Only run if workflow_run was successful or if it's a direct release trigger
if: github.event_name == 'release' || github.event.workflow_run.conclusion == 'success'
outputs:
release_version: ${{ steps.set-version.outputs.release_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Extract release-version
id: set-version
run: |
if [ "${{ github.event.release.tag_name }}" != "" ]; then
# Direct release trigger
echo "Release version from event: ${{ github.event.release.tag_name }}"
echo "release_version=${{ github.event.release.tag_name }}" | tee -a $GITHUB_OUTPUT
else
# Workflow run trigger - get the latest release tag
echo "Fetching latest release tag..."
LATEST_TAG=$(git describe --tags --abbrev=0)
echo "release_version=${LATEST_TAG}" | tee -a $GITHUB_OUTPUT
fi
build-firmware:
name: Build Firmware
needs: set-release-version
uses: esphome/workflows/.github/workflows/build.yml@2025.4.0
with:
files: |
buderus-km271.yaml
buderus-km271_en.yaml
buderus-km271_en_noimprov.yaml
buderus-km271-hc2-rw.yaml
buderus-km271-writable-espidf.yaml
buderus-km271-writable-8MB.yaml
components/km271_wifi/km271-for-friends.yaml
components/km271_wifi/km271_hc1_only.yaml
esphome-version: 2025.7.2
combined-name: buderus-km271
release-version: ${{ needs.set-release-version.outputs.release_version }}
upload-to-release:
name: Upload to Release
needs:
- build-firmware
- set-release-version
uses: esphome/workflows/.github/workflows/upload-to-gh-release.yml@2025.4.0
with:
version: ${{ needs.set-release-version.outputs.release_version }}