Skip to content

add build and release workflow #18

add build and release workflow

add build and release workflow #18

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
- name: Get Ninja
uses: seanmiddleditch/gha-setup-ninja@master
# 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
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
# 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
if : matrix.os == 'windows-latest'
run: |
setx OPENCV_DIR "C:\tools\opencv"

Check failure on line 61 in .github/workflows/build-and-release.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build-and-release.yml

Invalid workflow file

You have an error in your yaml syntax on line 61
setx PATH "%PATH%;%OPENCV_DIR%\bin"
cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR="C:\tools\opencv"
# 3. Configure CMake
- name: Configure CMake
if : matrix.os != 'windows-latest'
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