name: Package on: release: types: [ created ] jobs: # Debian package for ubuntu. ubuntu: strategy: matrix: os: [ ubuntu-20.04, ubuntu-22.04 ] component: [ cli, gui ] include: - os: ubuntu-20.04 qt: qt5-default=5.12.8+dfsg-0ubuntu2.1 - os: ubuntu-22.04 qt: qtbase5-dev=5.15.3+dfsg-2ubuntu0.2 - component: cli build-opts: --cli --no-gui -t Release --pkg-type deb - component: gui build-opts: --no-cli --gui -t Release --pkg-type deb name: DEB ${{matrix.os}} (${{matrix.component}}) runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v3 - name: Qt if: startsWith(matrix.component, 'gui') shell: bash run: | sudo apt-get update sudo apt-get install ${{matrix.qt}} - name: Package id: package run: | ./build.sh ${{matrix.build-opts}} FILE=$(ls build/*.deb | head -1) echo "filename=$FILE" >> "$GITHUB_OUTPUT" echo "name=$(basename $FILE)" >> "$GITHUB_OUTPUT" - name: Upload uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_name: ${{ steps.package.outputs.name }} asset_path: ${{ steps.package.outputs.filename }} asset_content_type: application/x-deb # RPM package for redhat based systems. rpm: strategy: matrix: container: - name: "fedora:36" deps: gcc-12.2.1-4.fc36.x86_64 gcc-c++-12.2.1-4.fc36.x86_64 cmake-3.26.3-1.fc36.x86_64 openssl1.1-devel-1.1.1q-1.fc36.x86_64 qt: qt5-qtbase-devel-5.15.3-1.fc36.x86_64 - name: "fedora:37" deps: gcc-12.3.1-1.fc37.x86_64 gcc-c++-12.3.1-1.fc37.x86_64 cmake-3.27.1-1.fc37.x86_64 openssl-devel-3.0.9-1.fc37.x86_64 qt: qt5-qtbase-devel-5.15.9-3.fc37.x86_64 - name: "fedora:38" deps: gcc-13.2.1-1.fc38.x86_64 gcc-c++-13.2.1-1.fc38.x86_64 cmake-3.26.2-1.fc38.x86_64 openssl-devel-1:3.0.9-2.fc38.x86_64 qt: qt5-qtbase-devel-5.15.10-5.fc38.x86_64 component: [ cli, gui ] include: - component: cli build-opts: --cli --no-gui -t Release --pkg-type rpm - component: gui build-opts: --no-cli --gui -t Release --pkg-type rpm name: RPM ${{matrix.container.name}} (${{matrix.component}}) runs-on: ubuntu-latest container: ${{ matrix.container.name }} steps: - uses: actions/checkout@v3 - name: Dependancies run: | sudo dnf install -y util-linux rpmdevtools git ${{ matrix.container.deps }} - name: Qt if: startsWith(matrix.component, 'gui') shell: bash run: | sudo dnf install -y ${{ matrix.container.qt }} - name: Package id: package run: | ./build.sh ${{matrix.build-opts}} FILE=$(ls build/*.rpm | head -1) echo "filename=$FILE" >> "$GITHUB_OUTPUT" echo "name=$(basename $FILE)" >> "$GITHUB_OUTPUT" - name: Upload uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_name: ${{ steps.package.outputs.name }} asset_path: ${{ steps.package.outputs.filename }} asset_content_type: application/octet-stream # Windows installer windows: strategy: matrix: arch: [ Win32, x64 ] include: - arch: Win32 qt-arch: win32_msvc2015 - arch: x64 qt-arch: win64_msvc2015_64 name: Windows (${{matrix.arch}}) runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Qt uses: jurplel/install-qt-action@v3 with: arch: ${{ matrix.qt-arch }} version: '5.11.0' - name: Configure run: cmake -A ${{matrix.arch}} -DCOMPONENT_GUI=ON -DCOMPONENT_CLI=ON -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build - name: Package id: package run: | cmake --build build --config Release --target package $FILE=(ls build/*.exe) echo "filename=$FILE" >> "$GITHUB_OUTPUT" echo "name=$(([io.fileinfo]"$FILE").basename)" >> "$GITHUB_OUTPUT" - name: Upload uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_name: ${{ steps.package.outputs.name }} asset_path: ${{ steps.package.outputs.filename }} asset_content_type: application/vnd.microsoft.portable-executable