diff --git a/.github/workflows/firmware_build_only.yml b/.github/workflows/firmware_build_only.yml index 8935069..2798392 100644 --- a/.github/workflows/firmware_build_only.yml +++ b/.github/workflows/firmware_build_only.yml @@ -4,8 +4,11 @@ on: workflow_call: outputs: artifact_name: - description: "Name of the uploaded artifact" + description: "Name of the uploaded nightly artifact" value: ${{ jobs.build.outputs.artifact_name }} + release_artifact_name: + description: "Name of the uploaded release artifact" + value: ${{ jobs.build.outputs.release_artifact_name }} action_date: description: "Build date timestamp" value: ${{ jobs.build.outputs.action_date }} @@ -19,6 +22,7 @@ jobs: runs-on: ubuntu-latest outputs: artifact_name: nightly_firmware + release_artifact_name: release_firmware action_date: ${{ steps.set_env.outputs.action_date }} release_version: ${{ steps.set_env.outputs.release_version }} steps: @@ -70,20 +74,8 @@ jobs: knot_esp32_nightly_${{ env.ACTION_DATE }}.uf2 knot_esp32_nightly.uf2 - - name: Zipping artifacts for Github Release - uses: vimtor/action-zip@v1 - if: ${{ env.RELEASE_VERSION != '' }} - with: - files: knot_esp32_release_${{ env.ACTION_DATE }}.uf2 - dest: knot_release.zip - - - name: Release - uses: softprops/action-gh-release@v1 - if: ${{ env.RELEASE_VERSION != '' }} + - name: Upload release artifacts + uses: actions/upload-artifact@v4 with: - tag_name: ${{ env.RELEASE_VERSION }} - name: Knot ${{ env.RELEASE_VERSION }} (${{ env.ACTION_DATE }}) - files: knot_release.zip - draft: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + name: release_firmware + path: knot_esp32_release_${{ env.ACTION_DATE }}.uf2 diff --git a/.github/workflows/firmware_release_production.yml b/.github/workflows/firmware_release_production.yml new file mode 100644 index 0000000..affa6f3 --- /dev/null +++ b/.github/workflows/firmware_release_production.yml @@ -0,0 +1,49 @@ +name: "Firmware Production Release" + +on: + workflow_call: + inputs: + release_version: + description: "Git tag version for the release" + required: true + type: string + action_date: + description: "Build date timestamp" + required: true + type: string + workflow_dispatch: + inputs: + release_version: + description: "Git tag version for the release" + required: true + type: string + action_date: + description: "Build date timestamp" + required: true + type: string + +jobs: + create-production-release: + runs-on: ubuntu-latest + steps: + - name: Download release artifacts + uses: actions/download-artifact@v4 + with: + name: release_firmware + path: release/ + + - name: Zip artifacts for Github Release + uses: vimtor/action-zip@v1 + with: + files: release/knot_esp32_release_${{ inputs.action_date }}.uf2 + dest: knot_release.zip + + - name: Create Production Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ inputs.release_version }} + name: Knot ${{ inputs.release_version }} (${{ inputs.action_date }}) + files: knot_release.zip + draft: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/firmware_workflow.yml b/.github/workflows/firmware_workflow.yml index 8348bd6..e8df20c 100644 --- a/.github/workflows/firmware_workflow.yml +++ b/.github/workflows/firmware_workflow.yml @@ -13,6 +13,16 @@ jobs: name: Build Firmware uses: ./.github/workflows/firmware_build_only.yml + publish-production: + name: Publish Production Release + if: needs.build.outputs.release_version != '' + needs: build + uses: ./.github/workflows/firmware_release_production.yml + with: + release_version: ${{ needs.build.outputs.release_version }} + action_date: ${{ needs.build.outputs.action_date }} + secrets: inherit + publish-nightly: name: Publish Nightly Release if: github.ref == 'refs/heads/main'