Skip to content

update actions

update actions #128

Workflow file for this run

name: ROS Qt Creator plugin build and archive release
on: [push, pull_request]
jobs:
build:
name: build (${{ matrix.config.name }})
runs-on: ${{ matrix.config.os }}
strategy:
matrix:
config:
- { name: "Linux", os: ubuntu-20.04 }
- { name: "Windows", os: windows-latest }
- { name: "macOS", os: macos-latest }
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: install Microsoft Visual C++ (Windows)
uses: ilammy/msvc-dev-cmd@v1
if: runner.os == 'Windows'
- name: install Linux system dependencies
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install libgl1-mesa-dev ninja-build libqtermwidget5-0-dev libutf8proc-dev
- name: install Windows system dependencies
if: runner.os == 'Windows'
run: |
choco install ninja
- name: install macOS system dependencies
if: runner.os == 'macOS'
run: brew install ninja qt5
- name: install yaml-cpp
shell: bash
run: |
git clone --depth 1 https://github.com/jbeder/yaml-cpp.git extern/yaml-cpp --branch yaml-cpp-0.7.0
cd extern/yaml-cpp
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DYAML_CPP_BUILD_TESTS=OFF
$(which sudo) cmake --build build --target install
- name: set build environment variables (Windows)
if: runner.os == 'Windows'
shell: bash
run: |
echo "YAML_DIR='C:/Program Files (x86)/YAML_CPP/share/cmake/yaml-cpp/'" >> $GITHUB_ENV
- name: install Qt and Qt Creator
shell: bash
run: |
pip install pyyaml requests py7zr tqdm_loggable
python setup.py --export_variables
cat env >> $GITHUB_ENV
- name: install qtermwidget
if: runner.os == 'macOS'
shell: bash
run: |
git clone https://github.com/lxqt/lxqt-build-tools.git extern/lxqt-build-tools
cd extern/lxqt-build-tools
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DQt5Core_DIR=$(brew --prefix qt5)/lib/cmake/Qt5Core
cmake --build build --target install
cd ../..
git clone https://github.com/lxqt/qtermwidget.git extern/qtermwidget
cd extern/qtermwidget
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DQt5Core_DIR=$(brew --prefix qt5)/lib/cmake/Qt5Core -DQt5Widgets_DIR=$(brew --prefix qt5)/lib/cmake/Qt5Widgets -DQt5LinguistTools_DIR=$(brew --prefix qt5)/lib/cmake/Qt5LinguistTools
cmake --build build --target install
- name: build plugin
run: |
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="${{ env.QTC_PATH }};${{ env.QT_PATH }}" -Dyaml-cpp_DIR=${{ env.YAML_DIR }} -DBUILD_ROSTERMINAL=OFF
cmake --build build --target package
- name: find plugin archive
id: find_plugin_archive
shell: bash
run: |
find build/ -maxdepth 1 -name 'ROSProjectManager-*-*-*.zip' -print0 | xargs -0 basename -a > ./archive_name
echo "QTC_PLUGIN_ARCHIVE=`cat ./archive_name`" >> $GITHUB_ENV
echo "QTC_PLUGIN_ARCHIVE: `cat ./archive_name`"
file ./build/`cat ./archive_name`
file ./build/ROSProjectManager-*-*-*.zip
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: plugin_archive_artifact_${{ matrix.config.name }}
if-no-files-found: error
path: |
./build/ROSProjectManager-*-*-*.zip
release:
name: create release
if: contains(github.ref, '/tags/')
runs-on: ubuntu-latest
needs: build
steps:
- name: download artifact
uses: actions/download-artifact@v4
with:
pattern: plugin_archive_artifact_*
merge-multiple: true
path: ./
- name: create release
uses: ncipollo/release-action@v1
id: create_release
with:
artifacts: ROSProjectManager-*-*-*.zip