Qt Creator 12 #92
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 } | |
outputs: | |
archive_name: ${{ steps.find_plugin_archive.outputs.archive_name }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.x" | |
- uses: conda-incubator/setup-miniconda@v2 | |
if: runner.os == 'Windows' | |
- 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 | |
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 | |
- name: upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: plugin_archive_artifact_${{ matrix.config.name }} | |
if-no-files-found: error | |
path: | | |
./build/${{ env.QTC_PLUGIN_ARCHIVE }} | |
./archive_name | |
release: | |
name: create release | |
if: contains(github.ref, '/tags/') | |
runs-on: ubuntu-latest | |
needs: build | |
outputs: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
steps: | |
- name: create release | |
uses: actions/create-release@v1 | |
id: create_release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: ${{ github.ref }} | |
draft: false | |
prerelease: false | |
publish: | |
name: publish plugin archive (${{ matrix.name }}) | |
if: contains(github.ref, '/tags/') | |
runs-on: ubuntu-latest | |
needs: [build, release] | |
strategy: | |
matrix: | |
name: | |
- Linux | |
- Windows | |
- macOS | |
steps: | |
- name: download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: plugin_archive_artifact_${{ matrix.name }} | |
path: ./ | |
- name: set archive name | |
shell: bash | |
run: echo "QTC_PLUGIN_ARCHIVE=`cat ./archive_name`" >> $GITHUB_ENV | |
- name: upload archive release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{needs.release.outputs.upload_url}} | |
asset_path: ./build/${{ env.QTC_PLUGIN_ARCHIVE }} | |
asset_name: ${{ env.QTC_PLUGIN_ARCHIVE }} | |
asset_content_type: application/zip |