name: Build qView on: push: pull_request: workflow_dispatch: inputs: isRelease: type: boolean description: 'Is this a release build?' required: false default: false appleNotarize: type: boolean description: 'Notarize with Apple?' required: false default: false jobs: build: strategy: matrix: include: - runner: 'ubuntu-22.04' qtVersion: '5.15.2' - runner: 'ubuntu-22.04' qtVersion: '5.9' osSuffix: '_qt5.9' skipPlugins: 'true' - runner: 'macos-14' qtVersion: '6.8.3' qtModules: 'qtimageformats' buildArch: 'Universal' - runner: 'macos-13' qtVersion: '5.15.2' osSuffix: '_legacy' - runner: 'windows-2022' qtVersion: '6.8.3' qtArch: 'win64_msvc2022_64' osSuffix: '_64' qtModules: 'qtimageformats' - runner: 'windows-2022' qtVersion: '6.8.3' qtArch: 'win64_msvc2022_arm64_cross_compiled' osSuffix: '_arm64' qtModules: 'qtimageformats' buildArch: 'Arm64' - runner: 'windows-2022' qtVersion: '5.15.2' qtArch: 'win32_msvc2019' osSuffix: '_32' buildArch: 'X86' runs-on: ${{ matrix.runner }} steps: - name: Set environment variables shell: bash run: | echo "qtArch=${{ matrix.qtArch }}" >> $GITHUB_ENV echo "buildArch=${{ matrix.buildArch }}" >> $GITHUB_ENV if [ "${{ inputs.isRelease }}" != "true" ]; then buildNum=$(date '+%Y-%m-%d').$GITHUB_RUN_ATTEMPT echo "nightlyDefines=NIGHTLY=$buildNum" >> $GITHUB_ENV echo "nightlyString=-nightly" >> $GITHUB_ENV echo "buildNumString=$buildNum" >> $GITHUB_ENV fi - uses: actions/checkout@v4 - name: Install Qt uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qtVersion }} arch: ${{ matrix.qtArch }} cache: true modules: ${{ matrix.qtModules }} - name: Build qView shell: pwsh run: dist/scripts/build.ps1 - name: Deploy qView env: APPLE_NOTARIZE_REQUESTED: ${{ inputs.appleNotarize }} APPLE_DEVID_APP_CERT_DATA: ${{ secrets.APPLE_DEVID_APP_CERT_DATA }} APPLE_DEVID_APP_CERT_PASS: ${{ secrets.APPLE_DEVID_APP_CERT_PASS }} APPLE_ID_USER: ${{ secrets.APPLE_ID_USER }} APPLE_ID_PASS: ${{ secrets.APPLE_ID_PASS }} shell: pwsh run: | if ("${{ matrix.skipPlugins }}" -ne "true") { Invoke-Expression "& 'dist/scripts/download-plugins.ps1'" } if ($IsWindows) { Invoke-Expression "& 'dist/scripts/windeployqt.ps1' ${{ env.buildNumString }}" } elseif ($IsMacOS) { bash dist/scripts/macdeploy.sh ${{ env.buildNumString }} } else { bash dist/scripts/linuxdeployqt.sh ${{ env.buildNumString }} } - name: 'Upload Artifact' uses: actions/upload-artifact@v4 with: name: qView${{ env.nightlyString }}-${{ runner.os }}${{ matrix.osSuffix }}-${{ env.buildNumString }} path: bin nightly-release: needs: build if: github.ref_name == 'master' && github.event_name == 'push' runs-on: ubuntu-latest steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: List downloaded files run: ls -l artifacts/ - name: Package artifacts for release run: | mkdir release_files cd artifacts for dir in */; do zip -r "../release_files/$(basename "$dir").zip" "$dir" done cd .. ls -l release_files/ - name: Update "Nightly" Release uses: andelf/nightly-release@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: nightly name: "qView Nightly" prerelease: true body: | Latest automatic build from the master branch. Might be broken. files: release_files/*.zip