Publish Firmware #13
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
name: Publish Firmware | |
on: | |
release: | |
types: [published] | |
workflow_run: | |
workflows: | |
- "Semantic Release" | |
types: | |
- completed | |
permissions: | |
contents: write | |
env: | |
FIRMWARE_FILES_LIST: firmware-files.txt | |
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 | |
check-esphome-names: | |
name: Check for Duplicate ESPHome Names | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: pip install pyyaml | |
- name: Check for duplicate ESPHome names | |
run: python3 scripts/check-esphome-names.py ${{ env.FIRMWARE_FILES_LIST }} | |
read-firmware-files: | |
name: Read Firmware Files List | |
runs-on: ubuntu-latest | |
outputs: | |
files: ${{ steps.read-files.outputs.files }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Read firmware files list | |
id: read-files | |
run: | | |
echo "files<<EOF" >> $GITHUB_OUTPUT | |
cat ${{ env.FIRMWARE_FILES_LIST }} | grep -v '^#' | grep -v '^$' | tee -a $GITHUB_OUTPUT | |
echo "EOF" >> $GITHUB_OUTPUT | |
build-firmware: | |
name: Build Firmware | |
needs: | |
- set-release-version | |
- check-esphome-names | |
- read-firmware-files | |
uses: esphome/workflows/.github/workflows/build.yml@2025.4.0 | |
with: | |
files: ${{ needs.read-firmware-files.outputs.files }} | |
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 | |
- read-firmware-files | |
uses: esphome/workflows/.github/workflows/upload-to-gh-release.yml@2025.4.0 | |
with: | |
version: ${{ needs.set-release-version.outputs.release_version }} |