Click debouncing for context menu #3759
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
| # Copyright 2013-2019 High Fidelity, Inc. | |
| # Copyright 2020-2022 Vircadia contributors. | |
| # Copyright 2021-2025 Overte e.V. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| name: Linux Server CI Build | |
| # Keep in mind that GitHub Actions does not allow reading secrets during PR builds. | |
| on: | |
| pull_request: | |
| types: [labeled] | |
| push: | |
| tags: | |
| # Release tags. E.g. 2024.06.1 | |
| # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet | |
| - "[0-9][0-9][0-9][0-9].[0-9][0-9].**" | |
| env: | |
| BUILD_TYPE: Release | |
| UPLOAD_BUCKET: overte-public | |
| UPLOAD_REGION: fra1 | |
| UPLOAD_ENDPOINT: "https://fra1.digitaloceanspaces.com" | |
| jobs: | |
| build: | |
| # Only run master or tagged builds, or PRs when labeled as "server" | |
| if: github.event.label.name == 'server'|| github.event_name != 'pull_request' | |
| name: "${{matrix.os}}, ${{matrix.arch}}" | |
| strategy: | |
| matrix: | |
| include: | |
| - os: debian-12 | |
| image: docker.io/overte/overte-server-build:0.1.7-debian-12-amd64 | |
| arch: amd64 | |
| qt_source: system | |
| runner: ubuntu-latest | |
| - os: debian-12 | |
| image: docker.io/overte/overte-server-build:0.1.7-debian-12-aarch64 | |
| arch: aarch64 | |
| qt_source: system | |
| runner: ubuntu-24.04-arm | |
| - os: debian-13 | |
| image: docker.io/overte/overte-server-build:0.1.7-debian-13-amd64 | |
| arch: amd64 | |
| qt_source: system | |
| runner: ubuntu-latest | |
| - os: debian-13 | |
| image: docker.io/overte/overte-server-build:0.1.7-debian-13-aarch64 | |
| arch: aarch64 | |
| qt_source: system | |
| runner: ubuntu-24.04-arm | |
| - os: ubuntu-22.04 | |
| image: docker.io/overte/overte-server-build:0.1.7-ubuntu-22.04-amd64 | |
| arch: amd64 | |
| qt_source: system | |
| runner: ubuntu-latest | |
| - os: ubuntu-22.04 | |
| image: docker.io/overte/overte-server-build:0.1.7-ubuntu-22.04-aarch64 | |
| arch: aarch64 | |
| qt_source: system | |
| runner: ubuntu-24.04-arm | |
| - os: ubuntu-24.04 | |
| image: docker.io/overte/overte-server-build:0.1.7-ubuntu-24.04-amd64 | |
| arch: amd64 | |
| qt_source: system | |
| runner: ubuntu-latest | |
| - os: ubuntu-24.04 | |
| image: docker.io/overte/overte-server-build:0.1.7-ubuntu-24.04-aarch64 | |
| arch: aarch64 | |
| qt_source: system | |
| runner: ubuntu-24.04-arm | |
| - os: fedora-41 | |
| image: docker.io/overte/overte-server-build:0.1.7-fedora-41-amd64 | |
| arch: amd64 | |
| qt_source: system | |
| runner: ubuntu-latest | |
| - os: fedora-41 | |
| image: docker.io/overte/overte-server-build:0.1.7-fedora-41-aarch64 | |
| arch: aarch64 | |
| qt_source: system | |
| runner: ubuntu-24.04-arm | |
| - os: fedora-42 | |
| image: docker.io/overte/overte-server-build:0.1.7-fedora-42-amd64 | |
| arch: amd64 | |
| qt_source: system | |
| runner: ubuntu-latest | |
| - os: fedora-42 | |
| image: docker.io/overte/overte-server-build:0.1.7-fedora-42-aarch64 | |
| arch: aarch64 | |
| qt_source: system | |
| runner: ubuntu-24.04-arm | |
| - os: rockylinux-9 | |
| image: docker.io/overte/overte-server-build:0.1.7-rockylinux-9-amd64 | |
| arch: amd64 | |
| qt_source: source | |
| runner: ubuntu-latest | |
| fail-fast: false | |
| runs-on: ${{matrix.runner}} | |
| container: ${{matrix.image}} | |
| steps: | |
| - name: Configure Build Environment 1 | |
| shell: bash | |
| run: | | |
| # Get git commit | |
| if [ "${{github.event_name}}" = "pull_request" ]; then | |
| echo "GIT_COMMIT_SHORT=`echo ${{ github.event.pull_request.head.sha }} | cut -c1-7`" >> $GITHUB_ENV | |
| else # master or tagged | |
| echo "GIT_COMMIT_SHORT=`echo ${{ github.sha }} | cut -c1-7`" >> $GITHUB_ENV | |
| fi | |
| echo "REFNAME=${{ github.ref_name }}" >> $GITHUB_ENV | |
| echo "JOB_NAME=${{matrix.os}}, ${{matrix.arch}}" >> $GITHUB_ENV | |
| echo "CONAN_CPPSTD=gnu17" >> $GITHUB_ENV | |
| echo "CMAKE_BUILD_EXTRA=-- -j$(nproc)" >> $GITHUB_ENV | |
| if [[ "${{ matrix.os }}" =~ "ubuntu" || "${{ matrix.os }}" =~ "debian" ]]; then | |
| echo "INSTALLER_EXT=deb" >> $GITHUB_ENV | |
| echo "DEBEMAIL=julian.gro@overte.org" >> $GITHUB_ENV | |
| echo "DEBFULLNAME=GitHub Actions CI" >> $GITHUB_ENV | |
| else # RPM | |
| if [ "${{ matrix.arch }}" == "amd64" ]; then | |
| echo "INSTALLER_EXT=x86_64.rpm" >> $GITHUB_ENV | |
| else | |
| echo "INSTALLER_EXT=aarch64.rpm" >> $GITHUB_ENV | |
| fi | |
| fi | |
| # Tagged builds. E.g. release or release candidate builds. | |
| if [ "${{github.ref_type}}" == "tag" ]; then | |
| echo "OVERTE_RELEASE_TYPE=PRODUCTION" >> $GITHUB_ENV | |
| else | |
| echo "OVERTE_RELEASE_TYPE=PR" >> $GITHUB_ENV | |
| fi | |
| echo "CMAKE_EXTRA=-DOVERTE_BUILD_SERVER=true -DOVERTE_BUILD_TOOLS=true -DOVERTE_BUILD_CLIENT=false" >> $GITHUB_ENV | |
| # Configuration is broken into multiple steps because you can't set an env var and also reference it in the same step | |
| - name: Configure Build Environment 2 | |
| shell: bash | |
| run: | | |
| # Versioning | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| echo "DEBVERSION=${{ github.event.number }}PR-$GIT_COMMIT_SHORT-${{ matrix.os }}" >> $GITHUB_ENV | |
| echo "RPMVERSION=PR${{ github.event.number }}.$GIT_COMMIT_SHORT" >> $GITHUB_ENV | |
| elif [ "${{ github.ref_name }}" = "master" ]; then | |
| echo "DEBVERSION=${{ github.run_number }}master-$GIT_COMMIT_SHORT-${{ matrix.os }}" >> $GITHUB_ENV | |
| echo "RPMVERSION=master${{ github.run_number }}.$GIT_COMMIT_SHORT" >> $GITHUB_ENV | |
| echo "UPLOAD_PREFIX=build/overte/master" >> $GITHUB_ENV | |
| echo "RELEASE_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV | |
| else # tagged | |
| echo "DEBVERSION=${{ github.ref_name }}-$GIT_COMMIT_SHORT-${{ matrix.os }}" >> $GITHUB_ENV | |
| # We remove all dash characters from RPM versions, because rpmbuild doesn't allow dashes in version numbers. | |
| echo "RPMVERSION=${REFNAME//-}.$GIT_COMMIT_SHORT" >> $GITHUB_ENV | |
| fi | |
| if [ "${{ github.ref_type }}" == "tag" ]; then # tagged | |
| echo "RELEASE_NUMBER=${{ github.ref_name }}" >> $GITHUB_ENV | |
| if [[ "${{ github.ref_name }}" == *"rc"* ]]; then # release candidate | |
| # The uploader already creates a subfolder for each RELEASE_NUMBER. | |
| echo "UPLOAD_PREFIX=build/overte/release-candidate/" >> $GITHUB_ENV | |
| else # release | |
| echo "UPLOAD_PREFIX=build/overte/release/" >> $GITHUB_ENV | |
| fi | |
| fi | |
| - name: Configure Build Environment 3 | |
| shell: bash | |
| run: | | |
| if [[ "${{ matrix.os }}" =~ "ubuntu" || "${{ matrix.os }}" =~ "debian" ]]; then | |
| if [ "${{ matrix.arch }}" == "aarch64" ]; then | |
| echo "ARTIFACT_PATTERN=overte-server_${DEBVERSION}-1_arm64.$INSTALLER_EXT" >> $GITHUB_ENV | |
| else # amd64 | |
| echo "ARTIFACT_PATTERN=overte-server_${DEBVERSION}-1_amd64.$INSTALLER_EXT" >> $GITHUB_ENV | |
| fi | |
| else # RPM | |
| if [ "${{ matrix.os }}" == "rockylinux-9" ]; then | |
| echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.el9.$INSTALLER_EXT" >> $GITHUB_ENV | |
| elif [ "${{ matrix.os }}" == "fedora-40" ]; then | |
| echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc40.$INSTALLER_EXT" >> $GITHUB_ENV | |
| elif [ "${{ matrix.os }}" == "fedora-41" ]; then | |
| echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc41.$INSTALLER_EXT" >> $GITHUB_ENV | |
| elif [ "${{ matrix.os }}" == "fedora-42" ]; then | |
| echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc42.$INSTALLER_EXT" >> $GITHUB_ENV | |
| else | |
| echo "Error! ARTIFACT_PATTERN not set!" | |
| exit 1 # Fail | |
| fi | |
| fi | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: false | |
| fetch-depth: 1 | |
| - name: Prepare Conan Build Environment | |
| uses: ./.github/actions/setup-conan | |
| - name: Install Conan dependencies | |
| uses: ./.github/actions/conan-install | |
| with: | |
| qt_source: ${{matrix.qt_source}} | |
| build_type: ${{env.BUILD_TYPE}} | |
| cppstd: ${{env.CONAN_CPPSTD}} | |
| - name: Upload dependency source backups | |
| shell: bash | |
| env: | |
| # Token for uploading dependency source backups. | |
| CONAN_BUILD_DEPENDENCIES_BACKUP_UPLOAD_TOKEN: ${{ secrets.CONAN_BUILD_DEPENDENCIES_BACKUP_UPLOAD_TOKEN }} | |
| run: conan cache backup-upload || echo "Credentials cannot be accessed on remote Pull Request builds. Continuing…" | |
| - name: Configure CMake | |
| shell: bash | |
| # This syntax requires CMake 3.23 | |
| run: cmake --preset conan-${BUILD_TYPE,,} -DOVERTE_RELEASE_TYPE=$OVERTE_RELEASE_TYPE -DOVERTE_RELEASE_NUMBER=$RELEASE_NUMBER -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT $CMAKE_EXTRA | |
| - name: Build Domain Server | |
| working-directory: build | |
| shell: bash | |
| run: cmake --build . --target domain-server $CMAKE_BUILD_EXTRA | |
| - name: Build Assignment Client | |
| working-directory: build | |
| shell: bash | |
| run: cmake --build . --target assignment-client $CMAKE_BUILD_EXTRA | |
| - name: Build Oven | |
| working-directory: build | |
| shell: bash | |
| run: cmake --build . --target oven $CMAKE_BUILD_EXTRA | |
| - name: Package | |
| working-directory: pkg-scripts | |
| shell: bash | |
| run: | | |
| if [[ "${{ matrix.os }}" = "ubuntu"* || "${{ matrix.os }}" = "debian"* ]]; then # Debian | |
| ./make-deb-server | |
| else # RPM | |
| ./make-rpm-server | |
| fi | |
| - name: Output system stats | |
| if: ${{ always() }} | |
| shell: bash | |
| run: | | |
| echo "Disk usage:" | |
| df -h | |
| - name: Upload artifact to GitHub | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ env.ARTIFACT_PATTERN }} | |
| path: pkg-scripts/${{ env.ARTIFACT_PATTERN }} | |
| - name: Upload artifact to S3 | |
| if: github.event_name != 'pull_request' # PR builds cannot be uploaded to S3 | |
| shell: bash | |
| working-directory: pkg-scripts | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.s3_access_key_id }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.s3_secret_access_key }} | |
| run: python3 $GITHUB_WORKSPACE/tools/ci-scripts/upload.py |