diff --git a/.github/workflows/release-deploy-env.yml b/.github/workflows/release-deploy-env.yml index 071eef4a..95839b97 100644 --- a/.github/workflows/release-deploy-env.yml +++ b/.github/workflows/release-deploy-env.yml @@ -80,7 +80,7 @@ jobs: - name: PlatformIO lib install env: - GITHUB_TAG: ${{ inputs.version }} + GITHUB_TAG: v${{ inputs.version }} run: pio lib install - name: Build firmware diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8010ffc..17e83d81 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,213 +1,78 @@ -name: Release +name: Release build and upload on: push: tags: - - 'v*.*.*' - + - 'v[0-9]+.[0-9]+.[0-9]+' jobs: - build: - + prepare: runs-on: ubuntu-latest - steps: - - name: Check out code from repo - uses: actions/checkout@v4 - - name: Get release version for filenames - id: release_tag - env: - GITHUB_REF: ${{ github.ref }} - run: echo ::set-output name=tag::$(echo ${GITHUB_REF:11}) - - name: Get release version for code - env: - GITHUB_REF: ${{ github.ref }} - run: echo "GITHUB_TAG=$(echo ${GITHUB_REF##*/})" >> $GITHUB_ENV + - name: Check out code from repo + uses: actions/checkout@v4 + - name: Get release version for filenames + id: release_tag + env: + GITHUB_REF: ${{ github.ref }} + run: echo ::set-output name=tag::$(echo ${GITHUB_REF:11}) - - name: Inject secrets into ini file - run: | - sed -i 's/NO_AMS2MQTT_PRICE_KEY/AMS2MQTT_PRICE_KEY="${{secrets.AMS2MQTT_PRICE_KEY}}"/g' platformio.ini - sed -i 's/NO_AMS2MQTT_PRICE_AUTHENTICATION/AMS2MQTT_PRICE_AUTHENTICATION="${{secrets.AMS2MQTT_PRICE_AUTHENTICATION}}"/g' platformio.ini - sed -i 's/NO_AMS2MQTT_SC_KEY/AMS2MQTT_SC_KEY=\\"${{secrets.AMS2MQTT_SC_KEY}}\\"/g' platformio.ini - sed -i 's/NO_ENERGY_SPEEDOMETER_USER/ENERGY_SPEEDOMETER_USER=\\"${{secrets.ENERGY_SPEEDOMETER_USER}}\\"/g' platformio.ini - sed -i 's/NO_ENERGY_SPEEDOMETER_PASS/ENERGY_SPEEDOMETER_PASS=\\"${{secrets.ENERGY_SPEEDOMETER_PASS}}\\"/g' platformio.ini + - name: Create release with release notes + id: create_release + uses: ncipollo/release-action@v1 + with: + name: Release v${{ steps.release_tag.outputs.tag }} + generateReleaseNotes: true - - name: Cache Python dependencies - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('platformio.ini') }} - - name: Cache PlatformIO dependencies - uses: actions/cache@v4 - with: - path: ~/.pio/libdeps - key: ${{ runner.os }}-pio-${{ hashFiles('platformio.ini') }} - - name: Set up Python 3.9 - uses: actions/setup-python@v5 - with: - python-version: 3.9 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio css_html_js_minify + outputs: + version: ${{ steps.release_tag.outputs.tag }} + upload_url: ${{ steps.create_release.outputs.upload_url }} - - name: Set up node - uses: actions/setup-node@v4 - with: - node-version: '19.x' - - name: Build with node - run: | - cd lib/SvelteUi/app - npm ci - npm run build - cd - - env: - CI: false - - - name: PlatformIO lib install - run: pio lib install - - - name: Create release with release notes - id: create_release - uses: ncipollo/release-action@v1 - with: - name: Release v${{ steps.release_tag.outputs.tag }} - generateReleaseNotes: true - - - name: Build esp8266 firmware - run: pio run -e esp8266 - - name: Create esp8266 zip file - run: /bin/sh scripts/esp8266/mkzip.sh - - name: Upload esp8266 binary to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: .pio/build/esp8266/firmware.bin - asset_name: ams2mqtt-esp8266-${{ steps.release_tag.outputs.tag }}.bin - asset_content_type: application/octet-stream - - name: Upload esp8266 zip to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: esp8266.zip - asset_name: ams2mqtt-esp8266-${{ steps.release_tag.outputs.tag }}.zip - asset_content_type: application/zip - - - name: Build esp32 firmware - run: pio run -e esp32 - - name: Create esp32 zip file - run: /bin/sh scripts/esp32/mkzip.sh - - name: Upload esp32 binary to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: .pio/build/esp32/firmware.bin - asset_name: ams2mqtt-esp32-${{ steps.release_tag.outputs.tag }}.bin - asset_content_type: application/octet-stream - - name: Upload esp32 zip to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: esp32.zip - asset_name: ams2mqtt-esp32-${{ steps.release_tag.outputs.tag }}.zip - asset_content_type: application/zip - - - name: Build esp32s2 firmware - run: pio run -e esp32s2 - - name: Create esp32s2 zip file - run: /bin/sh scripts/esp32s2/mkzip.sh - - name: Upload esp32s2 binary to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: .pio/build/esp32s2/firmware.bin - asset_name: ams2mqtt-esp32s2-${{ steps.release_tag.outputs.tag }}.bin - asset_content_type: application/octet-stream - - name: Upload esp32s2 zip to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: esp32s2.zip - asset_name: ams2mqtt-esp32s2-${{ steps.release_tag.outputs.tag }}.zip - asset_content_type: application/zip - - - name: Build esp32s3 firmware - run: pio run -e esp32s3 - - name: Create esp32s3 zip file - run: /bin/sh scripts/esp32s3/mkzip.sh - - name: Upload esp32s3 binary to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: .pio/build/esp32s3/firmware.bin - asset_name: ams2mqtt-esp32s3-${{ steps.release_tag.outputs.tag }}.bin - asset_content_type: application/octet-stream - - name: Upload esp32s3 zip to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: esp32s3.zip - asset_name: ams2mqtt-esp32s3-${{ steps.release_tag.outputs.tag }}.zip - asset_content_type: application/zip - - - name: Build esp32solo firmware - run: pio run -e esp32solo - - name: Create esp32solo zip file - run: /bin/sh scripts/esp32solo/mkzip.sh - - name: Upload esp32solo binary to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: .pio/build/esp32solo/firmware.bin - asset_name: ams2mqtt-esp32solo-${{ steps.release_tag.outputs.tag }}.bin - asset_content_type: application/octet-stream - - name: Upload esp32solo zip to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: esp32solo.zip - asset_name: ams2mqtt-esp32solo-${{ steps.release_tag.outputs.tag }}.zip - asset_content_type: application/zip - - - name: Build esp32c3 firmware - run: pio run -e esp32c3 - - name: Create esp32c3 zip file - run: /bin/sh scripts/esp32c3/mkzip.sh - - name: Upload esp32c3 binary to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: .pio/build/esp32c3/firmware.bin - asset_name: ams2mqtt-esp32c3-${{ steps.release_tag.outputs.tag }}.bin - asset_content_type: application/octet-stream - - name: Upload esp32c3 zip to release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: esp32c3.zip - asset_name: ams2mqtt-esp32c3-${{ steps.release_tag.outputs.tag }}.zip - asset_content_type: application/zip + esp32s2: + needs: prepare + uses: ./.github/workflows/release-deploy-env.yml + secrets: inherit + with: + env: esp32s2 + version: ${{ needs.prepare.outputs.version }} + upload_url: ${{ needs.prepare.outputs.upload_url }} + esp32s3: + needs: prepare + uses: ./.github/workflows/release-deploy-env.yml + secrets: inherit + with: + env: esp32s3 + version: ${{ needs.prepare.outputs.version }} + upload_url: ${{ needs.prepare.outputs.upload_url }} + esp32c3: + needs: prepare + uses: ./.github/workflows/release-deploy-env.yml + secrets: inherit + with: + env: esp32c3 + version: ${{ needs.prepare.outputs.version }} + upload_url: ${{ needs.prepare.outputs.upload_url }} + esp32: + needs: prepare + uses: ./.github/workflows/release-deploy-env.yml + secrets: inherit + with: + env: esp32 + version: ${{ needs.prepare.outputs.version }} + upload_url: ${{ needs.prepare.outputs.upload_url }} + esp32solo: + needs: prepare + uses: ./.github/workflows/release-deploy-env.yml + secrets: inherit + with: + env: esp32solo + version: ${{ needs.prepare.outputs.version }} + upload_url: ${{ needs.prepare.outputs.upload_url }} + esp8266: + needs: prepare + uses: ./.github/workflows/release-deploy-env.yml + secrets: inherit + with: + env: esp8266 + version: ${{ needs.prepare.outputs.version }} + upload_url: ${{ needs.prepare.outputs.upload_url }}