From efc0c00d07286ac3f5915da8529ebba99a482c31 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 3 Dec 2019 13:41:57 -0800 Subject: [PATCH] Merge more of Austin's master_build.yml --- .github/workflows/cmake.yml | 269 ++++++++++++++++++++---------------- 1 file changed, 151 insertions(+), 118 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 877f92d4a2..ee3f479502 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -11,38 +11,30 @@ on: # - stable env: - CI_BUILD: Github + APP_NAME: interface + APP_SYMBOLS_PATH: interface\Release BUILD_TYPE: Release - RELEASE_TYPE: PR + BUCKET_NAME: hifi-gh-builds + CI_BUILD: Github + CMAKE_BACKTRACE_URL: https://highfidelity.sp.backtrace.io:6098 + CMAKE_BACKTRACE_TOKEN: ${{ secrets.backtrace_token }} + CMAKE_BACKTRACE_SYMBOLS_TOKEN: ${{ secrets.backtrace_symbols_token }} + GIT_COMMIT: ${{ github.sha }} + RELEASE_TYPE: PRODUCTION RELEASE_NUMBER: ${{ github.event.number }} VERSION_CODE: ${{ github.event.number }} GIT_PR_COMMIT: ${{ github.sha }} - # FIXME should be a shortened version of the SHA - GIT_PR_COMMIT_SHORT: ${{ github.sha }} HIFI_VCPKG_BOOTSTRAP: true + OCULUS_APP_ID: '1255907384473836' AWS_ACCESS_KEY_ID: ${{ secrets.aws_access_key_id }} - # Settings for uploading - APP_NAME: interface - #APP_NAME: gpu-frame-player - BUCKET_NAME: hifi-public - UPLOAD_PREFIX: austin/builds - # OSX specific variables DEVELOPER_DIR: /Applications/Xcode_11.2.app/Contents/Developer MACOSX_DEPLOYMENT_TARGET: '10.11' # WIN32 specific variables PreferredToolArchitecture: X64 - BS_USERNAME: gustavo@highfidelity.io - BS_PASSWORD: ${MASKED_BUGSPLAT_PASSWORD} - CMAKE_BACKTRACE_URL: https://highfidelity.sp.backtrace.io:6098 - GA_TRACKING_ID: UA-39558647-8 - OCULUS_APP_ID: '1255907384473836' - # CMAKE_BACKTRACE_TOKEN: ${MASKED_CMAKE_BACKTRACE_TOKEN} - # CMAKE_BACKTRACE_SYMBOLS_TOKEN: ${MASKED_BACKTRACE_UPLOAD_TOKEN} - LINUX_DOCKER_IMAGE_NAME: "linux-hifi-gha:${{ github.event.number }}" # Mac OS @@ -74,109 +66,150 @@ env: #STABLE_BUILD=0 jobs: - build: - strategy: - matrix: - os: [windows-latest, macOS-latest, ubuntu-latest] + build: + strategy: + matrix: + os: [windows-latest, macOS-latest, ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Checkout - uses: actions/checkout@v1 - with: - submodules: true - fetch-depth: 1 - - name: Install python modules - run: pip install awscli boto3 PyGithub - - name: Create Build Environment - run: cmake -E make_directory ${{runner.workspace}}/build + runs-on: ${{ matrix.os }} + if: github.event.action != 'labeled' || github.event.label.name == 'rebuild' + steps: + - name: Configure Build Environment 1 + shell: bash + run: | + echo ::set-env name=UPLOAD_PREFIX::master/$RELEASE_NUMBER + echo ::set-env name=GIT_COMMIT_SHORT::`echo $GIT_COMMIT | cut -c1-7` + # Linux build variables + if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then + echo ::set-env name=INSTALLER_EXT::tgz + fi + # Mac build variables + if [ "${{ matrix.os }}" = "macOS-latest" ]; then + echo ::set-env name=INSTALLER_EXT::dmg + fi + # Windows build variables + if [ "${{ matrix.os }}" = "windows-latest" ]; then + echo ::set-env name=INSTALLER_EXT::exe + fi + # Configuration is broken into two 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: | + echo ::set-env name=ARTIFACT_PATTERN::HighFidelity-Beta-*.$INSTALLER_EXT + # Build type variables + if [ "${{ matrix.build_type }}" = "full" ]; then + echo ::set-env name=CLIENT_ONLY::FALSE + echo ::set-env name=INSTALLER::HighFidelity-Beta-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT + else + echo ::set-env name=CLIENT_ONLY::TRUE + echo ::set-env name=INSTALLER::HighFidelity-Beta-Interface-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT + fi + # Linux build variables + if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then + echo ::set-env name=CLIENT_ONLY::FALSE + echo ::set-env name=PYTHON_EXEC::python3 + echo ::set-env name=CMAKE_EXTRA::-DBUILD_TOOLS:BOOLEAN=FALSE + fi + # Mac build variables + if [ "${{ matrix.os }}" = "macOS-latest" ]; then + echo ::set-env name=PYTHON_EXEC::python3 + echo ::set-env name=CMAKE_EXTRA::"-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -G Xcode" + fi + # Windows build variables + if [ "${{ matrix.os }}" = "windows-latest" ]; then + echo ::set-env name=PYTHON_EXEC::python + echo ::set-env name=CMAKE_EXTRA::"-A x64" + echo ::set-env name=HF_PFX_PASSPHRASE::${{secrets.pfx_key}} + echo "::set-env name=HF_PFX_FILE::${{runner.workspace}}\build\codesign.pfx" + fi + - name: Checkout + uses: actions/checkout@v1 + with: + submodules: true + fetch-depth: 1 + - name: Install python modules + run: $PYTHON_EXEC -m pip install boto3 PyGithub + - name: Create Build Environment + run: cmake -E make_directory ${{runner.workspace}}/build - #build_full_mac: - - name: Configure CMake (macOS) - if: matrix.os == 'macOS-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild') - working-directory: ${{runner.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -G Xcode -DVCPKG_APPLOCAL_DEPS=OFF - - name: Build Console (macOS) - if: matrix.os == 'macOS-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild') - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target packaged-server-console - - name: Build Application (macOS) - if: matrix.os == 'macOS-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild') - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target $APP_NAME - - name: Build Domain Server (macOS) - if: matrix.os == 'macOS-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target domain-server - - name: Build Assignment Client (macOS) - if: matrix.os == 'macOS-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target assignment-client - - name: Build Installer (macOS) - if: matrix.os == 'macOS-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild') - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target package + - name: Install apt packages (Linux) + if: matrix.os == 'ubuntu-latest' + run: sudo apt install -y mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 + - name: Configure CMake + working-directory: ${{runner.workspace}}/build + run: | + echo '${{ toJson(env) }}' + uname + cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCLIENT_ONLY:BOOLEAN=$CLIENT_ONLY $CMAKE_EXTRA +# macOS + - name: Build Console (macOS) + if: matrix.os == 'macOS-latest' + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target packaged-server-console + - name: Build Application (macOS) + if: matrix.os == 'macOS-latest' + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target $APP_NAME + - name: Build Domain Server (macOS) + if: matrix.os == 'macOS-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target domain-server + - name: Build Assignment Client (macOS) + if: matrix.os == 'macOS-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target assignment-client + - name: Build Installer (macOS) + if: matrix.os == 'macOS-latest' + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target package - #build_full_win32: +#build_full_win32: - - name: Configure CMake (Windows) - if: matrix.os == 'windows-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -A x64 - - name: Build Console (Windows) - if: matrix.os == 'windows-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target packaged-server-console - - name: Build Application (Windows) - if: matrix.os == 'windows-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target $APP_NAME - - name: Build Domain Server (Windows) - if: matrix.os == 'windows-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target domain-server - - name: Build Assignment Client (Windows) - if: matrix.os == 'windows-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target assignment-client - - name: Build Installer (Windows) - if: matrix.os == 'windows-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . --config $BUILD_TYPE --target package - #build_full_linux: + - name: Build Console (Windows) + if: matrix.os == 'windows-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target packaged-server-console + - name: Build Application (Windows) + if: matrix.os == 'windows-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target $APP_NAME + - name: Build Domain Server (Windows) + if: matrix.os == 'windows-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target domain-server + - name: Build Assignment Client (Windows) + if: matrix.os == 'windows-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target assignment-client + - name: Build Installer (Windows) + if: matrix.os == 'windows-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target package +#build_full_linux: - - name: Install apt packages (Linux) - if: matrix.os == 'ubuntu-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-linux' || github.event.label.name == 'rebuild') - run: sudo apt install -y mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 - - name: Configure CMake (Linux) - if: matrix.os == 'ubuntu-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-linux' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_TOOLS:BOOLEAN=false - - name: Build (Linux) - if: matrix.os == 'ubuntu-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-linux' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - # Parallel make: - run: cmake --build . -- -j3 - - name: Build Ubuntu Docker (Linux) - if: matrix.os == 'ubuntu-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-linux' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: | - cp $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/hifi.conf . - docker build -t $LINUX_DOCKER_IMAGE_NAME -f $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/Dockerfile ./ - - name: Export Docker image (Linux) - if: matrix.os == 'ubuntu-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-linux' || github.event.label.name == 'rebuild') - shell: bash - working-directory: ${{runner.workspace}}/build - run: docker save -o ${{runner.workspace}}/build/hifi_docker_image.tar $LINUX_DOCKER_IMAGE_NAME + - name: Build (Linux) + if: matrix.os == 'ubuntu-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + # Parallel make: + run: cmake --build . -- -j3 + - name: Build Ubuntu Docker (Linux) + if: matrix.os == 'ubuntu-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: | + cp $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/hifi.conf . + docker build -t $LINUX_DOCKER_IMAGE_NAME -f $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/Dockerfile ./ + - name: Export Docker image (Linux) + if: matrix.os == 'ubuntu-latest' + shell: bash + working-directory: ${{runner.workspace}}/build + run: docker save -o ${{runner.workspace}}/build/hifi_docker_image.tar $LINUX_DOCKER_IMAGE_NAME