amilcarlucas/MethodicConfigurator

View on GitHub
.github/workflows/windows_build.yml

Summary

Maintainability
Test Coverage
name: Windows Installer

on:
  release:
     types: [published]
  workflow_dispatch:
  push:

concurrency:
  group: ci-${{github.workflow}}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    runs-on: 'windows-latest'
    strategy:
      matrix:
        python-version: ['3.12']
        
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install dependencies
        run: |
          python -m pip install -U wheel setuptools pip
          python -m pip install -U pywin32 lxml pymavlink pyserial Pillow
          python -m pip install -U pyinstaller packaging

      - name: Download Inno Setup installer
        run: curl -L -o installer.exe http://files.jrsoftware.org/is/6/innosetup-6.2.0.exe

      - name: Install Inno Setup
        run: ./installer.exe /verysilent /allusers /dir=inst

      - name: Build MethodicConfigurator
        run: |
          python -m pip install . --user
          python -m pip list

      - name: Prepare installer
        run: |
          cd MethodicConfigurator
          copy ..\\windows\\ardupilot_methodic_configurator.spec
          pyinstaller --clean ardupilot_methodic_configurator.spec
          del ardupilot_methodic_configurator.spec

      - name: Build installer
        run: |
          cd  windows
          $env:VERSION=$(python return_version.py)
          python return_version.py > version.txt
          ISCC.exe /dMyAppVersion=$env:VERSION ardupilot_methodic_configurator.iss
          ls Output

      - name: Archive build
        uses: actions/upload-artifact@v4
        with:
           name: MethodicConfiguratorInstaller
           path: windows/Output
           retention-days: 7

      - name: Pre Release
        uses: "marvinpinto/action-automatic-releases@latest"
        if: github.ref == 'refs/heads/master'
        with:
          automatic_release_tag: "latest"
          prerelease: true
          title: "Development Build"
          files: windows/Output/*.*
          repo_token: "${{ secrets.GITHUB_TOKEN }}"

      - name: Release
        uses: "marvinpinto/action-automatic-releases@latest"
        if: startsWith(github.ref, 'refs/tags/v')
        with:
          prerelease: false
          files: windows/Output/*.*
          repo_token: "${{ secrets.GITHUB_TOKEN }}"