mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 05:58:27 +02:00
playing with gha
This commit is contained in:
parent
c9c8e5fedd
commit
75b99e71ec
5 changed files with 66 additions and 33 deletions
51
.github/workflows/pr_build.yml
vendored
51
.github/workflows/pr_build.yml
vendored
|
@ -27,14 +27,20 @@ env:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
name: "build (${{matrix.os}}, ${{matrix.build_type}})"
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [windows-latest, macOS-latest, ubuntu-18.04]
|
|
||||||
build_type: [full]
|
|
||||||
include:
|
include:
|
||||||
|
- os: windows-latest
|
||||||
|
build_type: full
|
||||||
|
- os: macOS-latest
|
||||||
|
build_type: full
|
||||||
- os: ubuntu-18.04
|
- os: ubuntu-18.04
|
||||||
build_type: full
|
build_type: full
|
||||||
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
||||||
|
- os: ubuntu-18.04
|
||||||
|
build_type: android
|
||||||
|
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ${{matrix.os}}
|
runs-on: ${{matrix.os}}
|
||||||
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild'
|
if: github.event.action != 'labeled' || github.event.label.name == 'rebuild'
|
||||||
|
@ -65,14 +71,25 @@ jobs:
|
||||||
echo ::set-env name=INSTALLER_EXT::exe
|
echo ::set-env name=INSTALLER_EXT::exe
|
||||||
echo ::set-env name=CMAKE_EXTRA::"-A x64"
|
echo ::set-env name=CMAKE_EXTRA::"-A x64"
|
||||||
fi
|
fi
|
||||||
|
# Android + Quest build variables
|
||||||
|
if [[ "${{ matrix.build_type }}" == "android" ]]; then
|
||||||
|
HIFI_ANDROID_PRECOMPILED="${{runner.workspace}}/dependencies"
|
||||||
|
echo ::set-env name=HIFI_ANDROID_PRECOMPILED::"$HIFI_ANDROID_PRECOMPILED"
|
||||||
|
mkdir $HIFI_ANDROID_PRECOMPILED
|
||||||
|
echo ::set-env name=INSTALLER_EXT::apk
|
||||||
|
fi
|
||||||
# Configuration is broken into two steps because you can't set an env var and also reference it in the same step
|
# 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
|
- name: Configure Build Environment 2
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
|
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
|
||||||
echo ::set-env name=ARTIFACT_PATTERN::Vircadia-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT
|
if [[ "${{ matrix.build_type }}" != "android" ]]; then
|
||||||
# Build type variables
|
echo ::set-env name=ARTIFACT_PATTERN::Vircadia-Alpha-PR${{ github.event.number }}-*.$INSTALLER_EXT
|
||||||
echo ::set-env name=INSTALLER::Vircadia-Alpha-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT
|
# Build type variables
|
||||||
|
echo ::set-env name=INSTALLER::Vircadia-Alpha-$RELEASE_NUMBER-$GIT_COMMIT_SHORT.$INSTALLER_EXT
|
||||||
|
else
|
||||||
|
echo ::set-env name=ARTIFACT_PATTERN::*.$INSTALLER_EXT
|
||||||
|
fi
|
||||||
- name: Clear Working Directory
|
- name: Clear Working Directory
|
||||||
if: startsWith(matrix.os, 'windows')
|
if: startsWith(matrix.os, 'windows')
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@ -98,26 +115,32 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake -E make_directory "${{runner.workspace}}/build"
|
run: cmake -E make_directory "${{runner.workspace}}/build"
|
||||||
- name: Configure CMake
|
- name: Configure CMake
|
||||||
|
if: matrix.build_type != 'android'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA
|
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA
|
||||||
- name: Build Application
|
- name: Build Application
|
||||||
|
if: matrix.build_type == 'full' || matrix.build_type == 'client'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target $APP_NAME $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Domain Server
|
- name: Build Domain Server
|
||||||
|
if: matrix.build_type == 'full'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target domain-server $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target domain-server $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Assignment Client
|
- name: Build Assignment Client
|
||||||
|
if: matrix.build_type == 'full'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Console
|
- name: Build Console
|
||||||
|
if: matrix.build_type == 'full'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA
|
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA
|
||||||
- name: Build Installer
|
- name: Build Installer
|
||||||
|
if: matrix.build_type != 'android'
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
@ -144,6 +167,18 @@ jobs:
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
retry cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA
|
retry cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA
|
||||||
|
- name: Build for Android + Quest
|
||||||
|
if: matrix.build_type == 'android'
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{runner.workspace}}/project-athena
|
||||||
|
run: |
|
||||||
|
echo "Pre-cache the vcpkg managed dependencies"
|
||||||
|
$PYTHON_EXEC prebuild.py --build-root ${{runner.workspace}}/build --android interface
|
||||||
|
cd android
|
||||||
|
# Pre-cache the gradle dependencies
|
||||||
|
./gradlew -m tasks -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
||||||
|
# Build!
|
||||||
|
./build_android.sh
|
||||||
- name: Output system stats
|
- name: Output system stats
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
|
@ -161,4 +196,8 @@ jobs:
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
env:
|
env:
|
||||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||||
run: $PYTHON_EXEC "$GITHUB_WORKSPACE/tools/ci-scripts/upload_to_publish_server.py"
|
run: |
|
||||||
|
if [[ "${{ matrix.build_type }}" == "android" ]]; then
|
||||||
|
cd $GITHUB_WORKSPACE/android
|
||||||
|
fi
|
||||||
|
$PYTHON_EXEC "$GITHUB_WORKSPACE/tools/ci-scripts/upload_to_publish_server.py"
|
|
@ -5,11 +5,11 @@ ANDROID_BUILD_TYPE=release
|
||||||
ANDROID_BUILD_TARGET=assembleRelease
|
ANDROID_BUILD_TARGET=assembleRelease
|
||||||
|
|
||||||
if [[ "$RELEASE_TYPE" == "PR" ]]; then
|
if [[ "$RELEASE_TYPE" == "PR" ]]; then
|
||||||
ANDROID_APK_SUFFIX=PR${RELEASE_NUMBER}-${SHA7}.apk ;
|
ANDROID_APK_SUFFIX=PR${RELEASE_NUMBER}-${GIT_COMMIT_SHORT}.apk ;
|
||||||
elif [[ "${STABLE_BUILD}" == "1" ]]; then
|
elif [[ "${STABLE_BUILD}" == "1" ]]; then
|
||||||
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}.apk ;
|
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}.apk ;
|
||||||
else
|
else
|
||||||
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}-${SHA7}.apk ;
|
ANDROID_APK_SUFFIX=${RELEASE_NUMBER}-${GIT_COMMIT_SHORT}.apk ;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ fi
|
||||||
ANDROID_APP=interface
|
ANDROID_APP=interface
|
||||||
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
||||||
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
||||||
ANDROID_APK_NAME=HighFidelity-Beta-${ANDROID_APK_SUFFIX}
|
ANDROID_APK_NAME=Vircadia-Alpha-${ANDROID_APK_SUFFIX}
|
||||||
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET}
|
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET}
|
||||||
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
||||||
|
|
||||||
|
@ -25,9 +25,9 @@ cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
||||||
ANDROID_APP=questInterface
|
ANDROID_APP=questInterface
|
||||||
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
ANDROID_OUTPUT_DIR=./apps/${ANDROID_APP}/build/outputs/apk/${ANDROID_BUILD_TYPE}
|
||||||
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
ANDROID_OUTPUT_FILE=${ANDROID_APP}-${ANDROID_BUILD_TYPE}.apk
|
||||||
ANDROID_APK_NAME=HighFidelity-Quest-Beta-${ANDROID_APK_SUFFIX}
|
ANDROID_APK_NAME=Vircadia-Quest-Alpha-${ANDROID_APK_SUFFIX}
|
||||||
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET} || true
|
./gradlew -PHIFI_ANDROID_PRECOMPILED=${HIFI_ANDROID_PRECOMPILED} -PVERSION_CODE=${VERSION_CODE} -PRELEASE_NUMBER=${RELEASE_NUMBER} -PRELEASE_TYPE=${RELEASE_TYPE} ${ANDROID_APP}:${ANDROID_BUILD_TARGET} || true
|
||||||
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME} || true
|
cp ${ANDROID_OUTPUT_DIR}/${ANDROID_OUTPUT_FILE} ./${ANDROID_APK_NAME}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -xeuo pipefail
|
set -xeuo pipefail
|
||||||
|
|
||||||
DOCKER_IMAGE_NAME="hifi_androidbuild"
|
DOCKER_IMAGE_NAME="vircadia_androidbuild"
|
||||||
|
|
||||||
docker build --build-arg BUILD_UID=`id -u` -t "${DOCKER_IMAGE_NAME}" -f docker/Dockerfile docker
|
docker build --build-arg BUILD_UID=`id -u` -t "${DOCKER_IMAGE_NAME}" -f ./android/docker/Dockerfile ./android/docker
|
||||||
|
|
||||||
# The Jenkins PR builds use VERSION_CODE, but the release builds use VERSION
|
# The Jenkins PR builds use VERSION_CODE, but the release builds use VERSION
|
||||||
# So make sure we use VERSION_CODE consistently
|
# So make sure we use VERSION_CODE consistently
|
||||||
|
@ -17,7 +17,7 @@ test -z "$STABLE_BUILD" && export STABLE_BUILD=0
|
||||||
docker run \
|
docker run \
|
||||||
--rm \
|
--rm \
|
||||||
--security-opt seccomp:unconfined \
|
--security-opt seccomp:unconfined \
|
||||||
-v "${WORKSPACE}":/home/jenkins/hifi \
|
-v "${WORKSPACE}":/home/gha/project-athena \
|
||||||
-e RELEASE_NUMBER \
|
-e RELEASE_NUMBER \
|
||||||
-e RELEASE_TYPE \
|
-e RELEASE_TYPE \
|
||||||
-e ANDROID_APP \
|
-e ANDROID_APP \
|
||||||
|
@ -33,7 +33,7 @@ docker run \
|
||||||
-e OAUTH_CLIENT_SECRET \
|
-e OAUTH_CLIENT_SECRET \
|
||||||
-e OAUTH_CLIENT_ID \
|
-e OAUTH_CLIENT_ID \
|
||||||
-e OAUTH_REDIRECT_URI \
|
-e OAUTH_REDIRECT_URI \
|
||||||
-e SHA7 \
|
-e GIT_COMMIT_SHORT \
|
||||||
-e STABLE_BUILD \
|
-e STABLE_BUILD \
|
||||||
-e VERSION_CODE \
|
-e VERSION_CODE \
|
||||||
"${DOCKER_IMAGE_NAME}" \
|
"${DOCKER_IMAGE_NAME}" \
|
||||||
|
|
|
@ -57,13 +57,13 @@ RUN apt-get -y install \
|
||||||
|
|
||||||
# --- Gradle
|
# --- Gradle
|
||||||
ARG BUILD_UID=1001
|
ARG BUILD_UID=1001
|
||||||
RUN useradd -ms /bin/bash -u $BUILD_UID jenkins
|
RUN useradd -ms /bin/bash -u $BUILD_UID gha
|
||||||
RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
RUN echo "gha ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
USER jenkins
|
USER gha
|
||||||
WORKDIR /home/jenkins
|
WORKDIR /home/gha
|
||||||
|
|
||||||
# Hifi dependencies
|
# Vircadia dependencies
|
||||||
ENV HIFI_BASE="/home/jenkins/hifi_android"
|
ENV HIFI_BASE="/home/gha/vircadia_android"
|
||||||
ENV HIFI_ANDROID_PRECOMPILED="$HIFI_BASE/dependencies"
|
ENV HIFI_ANDROID_PRECOMPILED="$HIFI_BASE/dependencies"
|
||||||
ENV HIFI_VCPKG_BASE="$HIFI_BASE/vcpkg"
|
ENV HIFI_VCPKG_BASE="$HIFI_BASE/vcpkg"
|
||||||
|
|
||||||
|
@ -71,24 +71,18 @@ RUN mkdir "$HIFI_BASE" && \
|
||||||
mkdir "$HIFI_VCPKG_BASE" && \
|
mkdir "$HIFI_VCPKG_BASE" && \
|
||||||
mkdir "$HIFI_ANDROID_PRECOMPILED"
|
mkdir "$HIFI_ANDROID_PRECOMPILED"
|
||||||
|
|
||||||
# Checkout a relatively recent commit from the main repository and use it to cache the
|
# Download the repo
|
||||||
# gradle and vcpkg dependencies
|
RUN git clone https://github.com/kasenvr/project-athena.git
|
||||||
# This commit ID should be updated whenever someone changes the dependency list
|
|
||||||
# in cmake/ports
|
|
||||||
RUN git clone https://github.com/highfidelity/hifi.git && \
|
|
||||||
cd ~/hifi && \
|
|
||||||
git checkout 796bfb5d6715ff14c2e60f3ee8fac1465b7578c6
|
|
||||||
|
|
||||||
WORKDIR /home/jenkins/hifi
|
WORKDIR /home/gha/project-athena
|
||||||
|
|
||||||
RUN mkdir build
|
RUN mkdir build
|
||||||
|
|
||||||
# Pre-cache the vcpkg managed dependencies
|
# Pre-cache the vcpkg managed dependencies
|
||||||
WORKDIR /home/jenkins/hifi/build
|
WORKDIR /home/gha/project-athena/build
|
||||||
RUN python3 ../prebuild.py --build-root `pwd` --android interface
|
RUN python3 ../prebuild.py --build-root `pwd` --android interface
|
||||||
|
|
||||||
# Pre-cache the gradle dependencies
|
# Pre-cache the gradle dependencies
|
||||||
WORKDIR /home/jenkins/hifi/android
|
WORKDIR /home/gha/project-athena/android
|
||||||
RUN ./gradlew -m tasks -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
RUN ./gradlew -m tasks -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
||||||
#RUN ./gradlew extractDependencies -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
#RUN ./gradlew extractDependencies -PHIFI_ANDROID_PRECOMPILED=$HIFI_ANDROID_PRECOMPILED
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ def parse_args():
|
||||||
if True:
|
if True:
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
else:
|
else:
|
||||||
args = parser.parse_args(['--android', 'questInterface', '--build-root', 'C:/git/hifi/android/apps/questInterface/.externalNativeBuild/cmake/debug/arm64-v8a'])
|
args = parser.parse_args(['--android', 'questInterface', '--build-root', 'C:/git/project-athena/android/apps/questInterface/.externalNativeBuild/cmake/debug/arm64-v8a'])
|
||||||
return args
|
return args
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
Loading…
Reference in a new issue