Skip to content

add build and release workflow #9

add build and release workflow

add build and release workflow #9

name: Build and Release PlatypusGui
on:
push:
tags:
- 'v*'
jobs:
build:
name: Build and Upload Artifacts
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
# 1. Checkout the repository
- name: Checkout code
uses: actions/checkout@v3
# 2. Set up the environment
- name: Set up CMake
uses: jwlawson/actions-setup-cmake@v1
with:
cmake-version: '3.16'
# Linux setup
- name: Install dependencies on Linux
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libopencv-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libxcb1-dev
# macOS setup
- name: Install dependencies on macOS
if: matrix.os == 'macos-latest'
run: |
brew install qt@5 opencv libxcb
# Windows setup
- name: Install Chocolatey on Windows
if: matrix.os == 'windows-latest'
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force; `
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Install dependencies on Windows
- name: Install dependencies on Windows
if: matrix.os == 'windows-latest'
run: |
choco install opencv qt5-default -y
# 3. Configure CMake
- name: Configure CMake
- uses: seanmiddleditch/gha-setup-ninja@master
run: cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=Release
# 4. Build the project
- name: Build PlatypusGui
run: cmake --build build --config Release -target PlatypusGui
# 5. Archive the build output3
- name: Archive build output
if: matrix.os == 'ubuntu-latest'
run: zip -r PlatypusGui-linux.zip build/PlatypusGui
- name: Archive build output
if: matrix.os == 'macos-latest'
run: zip -r PlatypusGui-mac.zip build/PlatypusGui
- name: Archive build output
if: matrix.os == 'windows-latest'
run: Compress-Archive -Path build\Release\PlatypusGui.exe -DestinationPath PlatypusGui-windows.zip
# 6. Upload artifacts for release
- name: Upload Release Artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.os }}-platypus
path: |
PlatypusGui-linux.zip
PlatypusGui-mac.zip
PlatypusGui-windows.zip