ci(desktop): stop uploading build artifacts on every run #442
Workflow file for this run
This file contains hidden or 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
| #------------------------------------------------------------------------------- | |
| # Workflow configuration | |
| #------------------------------------------------------------------------------- | |
| name: "Desktop CI builds" | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| #------------------------------------------------------------------------------- | |
| # Define application name & version | |
| #------------------------------------------------------------------------------- | |
| env: | |
| APP_NAME: "Theengs" | |
| APP_VERSION: "1.6.0" | |
| QT_VERSION: "6.10.3" | |
| #------------------------------------------------------------------------------- | |
| # Workflow jobs | |
| #------------------------------------------------------------------------------- | |
| jobs: | |
| ## GNU/Linux build ########################################################### | |
| build-linux: | |
| name: "Linux CI build" | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| # Checkout repository (and submodules) | |
| - name: Checkout repository (and submodules) | |
| uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 # needed so `git describe` can read the TheengsDecoder submodule tag | |
| # Install dependencies (from package manager) | |
| - name: Install dependencies (from package manager) | |
| run: | | |
| sudo apt-get install libgl1-mesa-dev libxkbcommon-x11-dev libx11-xcb-dev libzstd-dev -y; | |
| sudo apt-get install cmake ninja-build pkgconf libtool -y; | |
| sudo apt-get install libfuse2 appstream -y; | |
| sudo apt-get install libsecret-1-dev -y; # QtKeychain Linux backend (secure storage) | |
| # Install Qt | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.QT_VERSION }} | |
| modules: qtconnectivity qtcharts qtwebsockets | |
| # Setup env | |
| - name: Setup env | |
| run: | | |
| qmake --version | |
| cmake --version | |
| ninja --version | |
| # Derive marketing version from tag (no-op on non-tag pushes) | |
| - name: Resolve version from tag | |
| run: bash scripts/ci-resolve-version.sh linux | |
| # Build dependencies (from contribs script) | |
| - name: Build dependencies (from contribs script) | |
| run: | | |
| cd contribs/ | |
| python3 contribs_builder_qt.py --targets=linux --software qtmqtt --qt-directory ${{env.QT_ROOT_DIR}}/../.. --qt-version ${{env.QT_VERSION}} | |
| # Build application | |
| - name: Build application | |
| run: | | |
| cmake -B build/ -DCMAKE_BUILD_TYPE=Release -G Ninja | |
| cmake --build build/ --config Release | |
| # Deploy application | |
| - name: Deploy application | |
| run: ./deploy_linux.sh -p | |
| ## macOS build ############################################################### | |
| build-mac: | |
| name: "macOS CI build" | |
| runs-on: macos-15 | |
| steps: | |
| # Checkout repository (and submodules) | |
| - name: Checkout repository (and submodules) | |
| uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 # needed so `git describe` can read the TheengsDecoder submodule tag | |
| # Install dependencies (from package manager) | |
| #- name: Install dependencies (from package manager) | |
| # run: | | |
| # brew install qt6 cmake ninja | |
| # Install Qt | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.QT_VERSION }} | |
| modules: qtconnectivity qtcharts qtwebsockets | |
| # Setup env | |
| - name: Setup env | |
| run: | | |
| qmake --version | |
| cmake --version | |
| ninja --version | |
| # Setup certificate(s) | |
| - name: Setup certificate(s) | |
| if: env.MACOS_CERTIFICATE | |
| env: | |
| MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} | |
| MACOS_CERTIFICATE_NAME: ${{ secrets.MACOS_CERTIFICATE_NAME }} | |
| MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} | |
| MACOS_CI_KEYCHAIN_PASSWORD: ${{ secrets.MACOS_CI_KEYCHAIN_PASSWORD }} | |
| run: | | |
| # Turn our base64-encoded certificate(s) back to a regular file(s) | |
| echo "$MACOS_CERTIFICATE" | base64 --decode > certificate.p12 | |
| # Create a temporary headless keychain, import certificate, ... | |
| security create-keychain -p "$MACOS_CI_KEYCHAIN_PASSWORD" build.keychain | |
| security set-keychain-settings -lut 21600 build.keychain | |
| security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PASSWORD" build.keychain | |
| security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PASSWORD" -T /usr/bin/codesign | |
| security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PASSWORD" build.keychain | |
| security list-keychains -s build.keychain "$(security list-keychains | tr -d '\"')" | |
| security default-keychain -s build.keychain | |
| # Derive marketing version from tag (no-op on non-tag pushes) | |
| - name: Resolve version from tag | |
| run: bash scripts/ci-resolve-version.sh macos | |
| # Build dependencies (from contribs script) | |
| - name: Build dependencies (from contribs script) | |
| run: | | |
| cd contribs/ | |
| python3 contribs_builder_qt.py --targets=macos --software qtmqtt --qt-directory ${{env.QT_ROOT_DIR}}/../.. --qt-version ${{env.QT_VERSION}} | |
| # Build application | |
| - name: Build application | |
| run: | | |
| export CMAKE_BUILD_PARALLEL_LEVEL=`sysctl -n hw.logicalcpu` | |
| cmake -B build/ -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" | |
| cmake --build build/ --config Release | |
| # Deploy application | |
| - name: Deploy application | |
| env: | |
| MACOS_CERTIFICATE_NAME: ${{ secrets.MACOS_CERTIFICATE_NAME }} | |
| run: ./deploy_macos.sh -c -p | |
| ## Windows build ############################################################# | |
| build-windows: | |
| name: "Windows CI build" | |
| runs-on: windows-2022 | |
| steps: | |
| # Checkout repository (and submodules) | |
| - name: Checkout repository (and submodules) | |
| uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 # needed so `git describe` can read the TheengsDecoder submodule tag | |
| # Configure MSVC | |
| - name: Configure MSVC | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: x86_64 | |
| # Install NSIS (already installed in 'windows-2022') | |
| #- name: Install NSIS | |
| # run: | | |
| # Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') | |
| # scoop bucket add extras | |
| # scoop install nsis | |
| # Install Qt | |
| - name: Install Qt | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: ${{ env.QT_VERSION }} | |
| modules: qtconnectivity qtcharts qtwebsockets | |
| arch: 'win64_msvc2022_64' | |
| # Setup env | |
| - name: Setup env | |
| run: | | |
| qmake --version | |
| cmake --version | |
| # Derive marketing version from tag (no-op on non-tag pushes) | |
| - name: Resolve version from tag | |
| shell: bash | |
| run: bash scripts/ci-resolve-version.sh windows | |
| # Build dependencies (from contribs script) | |
| - name: Build dependencies (from contribs script) | |
| run: | | |
| cd contribs/ | |
| python3 contribs_builder_qt.py --targets=msvc2022 --software qtmqtt --qt-directory ${{env.QT_ROOT_DIR}}/../.. --qt-version ${{env.QT_VERSION}} | |
| # Build application | |
| - name: Build application | |
| run: | | |
| cmake -B build/ -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" | |
| cd build/ | |
| nmake | |
| # Deploy application | |
| - name: Deploy application | |
| run: sh deploy_windows.sh -c -p |