Skip to content

Explicitly writing filenames #173

Explicitly writing filenames

Explicitly writing filenames #173

Workflow file for this run

name: build
on:
push:
branches: [ "master", "develop" ]
tags:
- 'v*'
pull_request:
branches: [ "master", "develop" ]
env:
BUILD_TYPE: Release
PROGNAME: pico-sst39sf0x0-programmer
FIRMWARE: pico-sst39sf0x0-programmer-firmware
FIRMWARE2: pico2-sst39sf0x0-programmer-firmware
EXEC: pico-sst39sf0x0-programmer.exe
jobs:
#
# (optional) Create release
#
create-release:
runs-on: ubuntu-latest
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
#
# Windows
#
build-gui-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: '6.7.0'
target: 'desktop'
arch: 'win64_msvc2019_64'
tools: 'tools_opensslv3_x64'
modules: 'qtserialport'
cache: true
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -S ${{github.workspace}}/gui -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Upload executable
uses: actions/upload-artifact@v4
with:
name: ${{env.EXEC}}
path: ${{github.workspace}}/build/Release/${{env.EXEC}}
# create Windows installer
create-installer-windows:
runs-on: windows-latest
needs: build-gui-windows
permissions: write-all
steps:
- uses: actions/checkout@v3
- name: Download built executable
uses: actions/download-artifact@v4
with:
name: ${{env.EXEC}}
path: gui/packaging/data/
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: pip install jinja2
- name: Install Qt (windeployqt)
uses: jurplel/install-qt-action@v3
with:
version: '6.7.0'
host: windows
target: 'desktop'
arch: 'win64_msvc2019_64'
tools: 'tools_opensslv3_x64'
modules: 'qtserialport'
cache: true
- name: Run windeployqt
run: |
& "${{ env.Qt6_DIR }}\bin\windeployqt.exe" gui\packaging\data\${{ env.EXEC }} --release --force
- name: Copy icon
run: copy gui\assets\icon\eeprom_icon.ico gui\packaging\data\
- name: Generate Inno Setup script
run: python gui/packaging/package.py
- name: Install Inno Setup
run: |
Invoke-WebRequest -Uri "https://jrsoftware.org/download.php/ispack.exe" -OutFile "ispack.exe"
Start-Process -Wait -FilePath ".\ispack.exe" -ArgumentList "/verysilent", "/norestart"
shell: powershell
- name: Build installer
shell: cmd
run: |
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" gui\packaging\setup.iss
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: installer-artifact
path: gui/packaging/installer/${{env.PROGNAME}}-installer-win64.exe
# deploy Windows installer
deploy-installer-windows:
runs-on: ubuntu-latest
needs: [create-installer-windows, create-release]
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: installer-artifact
path: ./
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{env.PROGNAME}}-installer-win64.exe
asset_name: ${{env.PROGNAME}}-installer-win64.exe
asset_content_type: application/vnd.microsoft.portable-executable
#
# Ubuntu
#
build-gui-ubuntu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install packages
run: sudo apt update && sudo apt install -y qtbase5-dev qt5-qmake libqt5serialport5-dev cmake
- name: Configure CMake
run: mkdir ${{github.workspace}}/build && cd ${{github.workspace}}/build && qmake ../gui
- name: Build
run: cd ${{github.workspace}}/build && make -j
#
# PICO firmware
#
build-firmware:
runs-on: ubuntu-latest
container:
image: ghcr.io/ifilot/pico:v0.2.0
steps:
- uses: actions/checkout@v3
- name: Compile firmware
shell: bash
run: |
mkdir build && cd build
cmake ../firmware
make -j
- name: Upload firmware .uf2 file
uses: actions/upload-artifact@v4
with:
name: ${{env.FIRMWARE}}.uf2
path: ./build/${{env.FIRMWARE}}.uf2
deploy-firmware:
runs-on: ubuntu-latest
needs: [build-firmware, create-release]
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{env.FIRMWARE}}.uf2
path: ./
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{env.FIRMWARE}}.uf2
asset_name: ${{env.FIRMWARE}}.uf2
asset_content_type: application/octet-stream
#
# PICO2 firmware
#
build-firmware-pico2:
runs-on: ubuntu-latest
container:
image: ghcr.io/ifilot/pico:v0.2.0
steps:
- uses: actions/checkout@v3
- name: Compile firmware
shell: bash
run: |
mkdir build && cd build
cmake -DPICO_PLATFORM=rp2350-arm-s -DPICO_BOARD=pico2 ../firmware
make -j
cp -v ${{env.FIRMWARE}}.uf2 ${{env.FIRMWARE2}}.uf2
- name: Upload firmware .uf2 file
uses: actions/upload-artifact@v4
with:
name: ${{env.FIRMWARE2}}.uf2
path: ./build/${{env.FIRMWARE2}}.uf2
deploy-firmware-pico2:
runs-on: ubuntu-latest
needs: [build-firmware-pico2, create-release]
permissions: write-all
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{env.FIRMWARE2}}.uf2
path: ./
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{env.FIRMWARE2}}.uf2
asset_name: ${{env.FIRMWARE2}}.uf2
asset_content_type: application/octet-stream