Change to matrix-style workflow

This commit is contained in:
Simon Walton 2019-12-02 17:59:03 -08:00
parent c38fe5b2aa
commit d9950490fe

View file

@ -43,6 +43,8 @@ env:
# CMAKE_BACKTRACE_TOKEN: ${MASKED_CMAKE_BACKTRACE_TOKEN} # CMAKE_BACKTRACE_TOKEN: ${MASKED_CMAKE_BACKTRACE_TOKEN}
# CMAKE_BACKTRACE_SYMBOLS_TOKEN: ${MASKED_BACKTRACE_UPLOAD_TOKEN} # CMAKE_BACKTRACE_SYMBOLS_TOKEN: ${MASKED_BACKTRACE_UPLOAD_TOKEN}
LINUX_DOCKER_IMAGE_NAME: "linux-hifi-gha:${{ github.event.number }}"
# Mac OS # Mac OS
#PLATFORM_CMAKE_GENERATOR=Xcode #PLATFORM_CMAKE_GENERATOR=Xcode
#PLATFORM_BUILD_ARGUMENTS=--config Release --target package #PLATFORM_BUILD_ARGUMENTS=--config Release --target package
@ -72,36 +74,15 @@ env:
#STABLE_BUILD=0 #STABLE_BUILD=0
jobs: jobs:
build_client_mac: build:
runs-on: macOS-latest strategy:
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild' matrix:
steps: os: [windows-latest, macOS-latest, ubuntu-latest]
- uses: actions/checkout@v1
with:
submodules: true
fetch-depth: 1
- name: Install python modules
run: pip3 install awscli boto3 PyGithub
- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=OFF -DCLIENT_ONLY:BOOLEAN=TRUE -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -G Xcode -DVCPKG_APPLOCAL_DEPS=OFF
- name: Build Console
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console
- name: Build Application
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME
- name: Build Installer
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target package
build_full_mac: runs-on: ${{ matrix.os }}
runs-on: macOS-latest
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild-mac' || github.event.label.name == 'rebuild'
steps: steps:
- uses: actions/checkout@v1 - name: Checkout
uses: actions/checkout@v1
with: with:
submodules: true submodules: true
fetch-depth: 1 fetch-depth: 1
@ -109,124 +90,90 @@ jobs:
run: pip3 install awscli boto3 PyGithub run: pip3 install awscli boto3 PyGithub
- name: Create Build Environment - name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
#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 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 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 - 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 working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console run: cmake --build . --config $BUILD_TYPE --target packaged-server-console
- name: Build Application - 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 working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME run: cmake --build . --config $BUILD_TYPE --target $APP_NAME
- name: Build Domain Server - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target domain-server run: cmake --build . --config $BUILD_TYPE --target domain-server
- name: Build Assignment Client - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target assignment-client run: cmake --build . --config $BUILD_TYPE --target assignment-client
- name: Build Installer - 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 working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target package run: cmake --build . --config $BUILD_TYPE --target package
build_client_win32: #build_full_win32:
runs-on: windows-latest
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild'
steps:
- 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
- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCLIENT_ONLY:BOOLEAN=TRUE -A x64
- name: Build Console
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console
- name: Build Application
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME
- name: Build Installer
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target package
build_full_win32: - name: Configure CMake (Windows)
runs-on: windows-latest if: matrix.os == 'windows-latest' && (github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild')
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild-win' || github.event.label.name == 'rebuild'
steps:
- 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
- name: Configure CMake
shell: bash shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -A x64 run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -A x64
- name: Build Console - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console run: cmake --build . --config $BUILD_TYPE --target packaged-server-console
- name: Build Application - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME run: cmake --build . --config $BUILD_TYPE --target $APP_NAME
- name: Build Domain Server - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target domain-server run: cmake --build . --config $BUILD_TYPE --target domain-server
- name: Build Assignment Client - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target assignment-client run: cmake --build . --config $BUILD_TYPE --target assignment-client
- name: Build Installer - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake --build . --config $BUILD_TYPE --target package run: cmake --build . --config $BUILD_TYPE --target package
build_full_linux: #build_full_linux:
runs-on: ubuntu-latest
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild-linux' || github.event.label.name == 'rebuild'
env:
DOCKER_IMAGE_NAME: "linux-hifi-gha:${{ github.event.number }}"
steps:
- uses: actions/checkout@v1
with:
submodules: true
fetch-depth: 1
- name: Install python modules
run: pip install awscli boto3 PyGithub
- name: Install apt packages
run: sudo apt install -y mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake (Linux) - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_TOOLS:BOOLEAN=false run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_TOOLS:BOOLEAN=false
- name: Build - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
# Parallel make: # Parallel make:
run: cmake --build . -- -j3 run: cmake --build . -- -j3
- name: Build Ubuntu Docker - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: | run: |
cp $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/hifi.conf . cp $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/hifi.conf .
docker build -t $DOCKER_IMAGE_NAME -f $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/Dockerfile ./ docker build -t $LINUX_DOCKER_IMAGE_NAME -f $GITHUB_WORKSPACE/tools/ci-scripts/linux-gha/Dockerfile ./
- name: Export Docker image - 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 shell: bash
working-directory: ${{runner.workspace}}/build working-directory: ${{runner.workspace}}/build
run: docker save -o ${{runner.workspace}}/build/hifi_docker_image.tar $DOCKER_IMAGE_NAME run: docker save -o ${{runner.workspace}}/build/hifi_docker_image.tar $LINUX_DOCKER_IMAGE_NAME