Skip to content

Merge pull request #47 from FreakinSoftMania/dev #184

Merge pull request #47 from FreakinSoftMania/dev

Merge pull request #47 from FreakinSoftMania/dev #184

Workflow file for this run

# The workflow for building the stable (regular) version of WinUEFI
name: Build EXE application, installer and disk image
on:
push:
branches: [ '*' ]
tags: [ 'v*' ]
pull_request:
workflow_dispatch:
jobs:
set_version:
name: Set version variable
runs-on: self-hosted
outputs:
version: ${{ steps.set_version_branch.outputs.version || steps.set_version_tag.outputs.version || steps.set_version_pr.outputs.version || steps.set_version_manual.outputs.version }}
steps:
- name: Set VERSION for branch
id: set_version_branch
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/')
run: echo "::set-output name=version::${{ github.sha }}"
- name: Set VERSION for tag
id: set_version_tag
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: echo "::set-output name=version::${{ github.ref_name }}"
- name: Set VERSION for pull request
id: set_version_pr
if: github.event_name == 'pull_request'
run: echo "::set-output name=version::${{ github.sha }}"
- name: Set VERSION for manual dispatch
id: set_version_manual
if: github.event_name == 'workflow_dispatch'
run: echo "::set-output name=version::${{ github.sha }}"
build_exe:
name: Build EXE
runs-on: windows-latest
needs: set_version
strategy:
matrix:
config:
- { arch: amd64, arch_name: x64, arch_name_full: "64-bit" }
- { arch: i386, arch_name: x86, arch_name_full: "32-bit" }
env:
VERSION: ${{ needs.set_version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Make build directory
run: mkdir build
shell: cmd
- name: Build BAT to EXE application
run: |
"${{ github.workspace }}\bin\bat_to_exe\bat_to_exe.exe" /bat "${{ github.workspace }}\src\WinUEFI-console.bat" /exe "${{ github.workspace }}\build\WinUEFI-${{ matrix.config.arch }}-console.exe" /${{ matrix.config.arch_name }} /icon "${{ github.workspace }}\src\logo.ico" /uac-admin /productversion "${{ env.VERSION }}" /internalname "WinUEFI ${{ matrix.config.arch_name_full }}"
"${{ github.workspace }}\bin\bat_to_exe\bat_to_exe.exe" /bat "${{ github.workspace }}\src\WinUEFI.bat" /exe "${{ github.workspace }}\build\WinUEFI-${{ matrix.config.arch }}.exe" /${{ matrix.config.arch_name }} /invisible /icon "${{ github.workspace }}\src\logo.ico" /uac-admin /productversion "${{ env.VERSION }}" /internalname "WinUEFI ${{ matrix.config.arch_name_full }}"
shell: cmd
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: WinUEFI
path: build/*.exe
build_installer:
name: Build installer
needs: [set_version, build_exe]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name : Make build directory
run: mkdir build
shell: cmd
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: WinUEFI
path: build
- name: Build the EXE installer
run: |
set VERSION=${{ needs.set_version.outputs.version }}
"%programfiles(x86)%\Inno Setup 6\iscc.exe" "${{ github.workspace }}\src\WinUEFI-setup.iss"
shell: cmd
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: WinUEFI
path: build/WinUEFI-setup.exe
build_disk_images:
name: Build disk images (.ISO and .IMG)
needs: [set_version, build_exe, build_installer]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: WinUEFI
path: build
- name: Copy setup
run: copy "${{ github.workspace }}\build\WinUEFI-setup.exe" "${{ github.workspace }}\src\ISO\autorun.exe"
shell: cmd
- name: Create .ISO disk image
run: '"${{ github.workspace }}\bin\ImgBurn\ImgBurn.exe" /MODE BUILD /BUILDINPUTMODE STANDARD /BUILDOUTPUTMODE IMAGEFILE /SRC "${{ github.workspace }}\src\ISO" /DEST "${{ github.workspace }}\build\WinUEFI-setup.iso" /FILESYSTEM "ISO9660 + Joliet" /VOLUMELABEL_ISO9660 "WinUEFI Setup" /VOLUMELABEL_JOLIET "WinUEFI-Setup" /OVERWRITE YES /ROOTFOLDER YES /START /CLOSE /NOIMAGEDETAILS'
shell: cmd
- name: Create .IMG disk image
run: '"${{ github.workspace }}\bin\ImgBurn\ImgBurn.exe" /MODE BUILD /BUILDINPUTMODE STANDARD /BUILDOUTPUTMODE IMAGEFILE /SRC "${{ github.workspace }}\src\ISO" /DEST "${{ github.workspace }}\build\WinUEFI-setup.img" /FILESYSTEM "ISO9660 + Joliet" /VOLUMELABEL_ISO9660 "WinUEFI Setup" /VOLUMELABEL_JOLIET "WinUEFI-Setup" /OVERWRITE YES /ROOTFOLDER YES /START /CLOSE /NOIMAGEDETAILS'
shell: cmd
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: WinUEFI
path: |
build/*.iso
build/*.img
build/*.mds
build/*.dvd
get_checksums_and_release:
name: Get file checksums
needs: [set_version, build_exe, build_installer, build_disk_images]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: WinUEFI
path: build
- name: Generate checksums
uses: jmgilman/actions-generate-checksum@v1
with:
output: build/checksums.txt
patterns: |
build/*.exe
build/*.iso
build/*.img
build/*.mds
build/*.dvd
src/*.bat
src/*.ps1
src/*.py
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: WinUEFI
path: build/checksums.txt
- uses: marvinpinto/action-automatic-releases@latest
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
prerelease: false
title: "WinUEFI ${{ needs.set_version.outputs.version }}"
files: |
build/*.txt
build/*.exe
build/*.iso
build/*.img
build/*.mds
build/*.dvd
src/*.bat
src/*.ps1
src/*.py