Build UE Android Docker image #10
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
| name: Build UE Android Docker image | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| ue_version: | |
| description: Select Unreal Engine version | |
| required: true | |
| type: choice | |
| options: | |
| - 4.27 | |
| - 5.1 | |
| - 5.2 | |
| - 5.3 | |
| - 5.4 | |
| - 5.5 | |
| - 5.6 | |
| ue_repo: | |
| description: Set Unreal Engine repository | |
| required: true | |
| type: string | |
| default: 'https://github.com/getsentry/UnrealEngine.git' | |
| clean_disk: | |
| description: Clean up disk space before Docker build | |
| required: true | |
| type: boolean | |
| default: true | |
| env: | |
| REGISTRY: ghcr.io | |
| jobs: | |
| build: | |
| name: 'Build for UE ${{ inputs.ue_version }} (Android)' | |
| runs-on: ubuntu-latest-32-cores | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # Building docker images for Android requires extra disk space for SDK/NDK | |
| - name: Clean up disk space before Docker build | |
| if: ${{ inputs.clean_disk == true }} | |
| run: | | |
| # time df -h | |
| sudo time swapoff -a | |
| sudo time rm -f /swapfile | |
| sudo time rm -rf /usr/local/lib/android | |
| sudo time rm -rf /usr/share/dotnet | |
| sudo time rm -rf /usr/share/swift | |
| sudo time rm -rf /usr/local/share/powershell | |
| sudo time rm -rf /usr/local/.ghcup | |
| sudo time rm -rf /usr/local/lib/node_modules | |
| sudo time rm -rf /usr/local/share/boost | |
| sudo time rm -rf /usr/lib/google-cloud-sdk | |
| sudo time rm -rf /usr/lib/jvm | |
| sudo time rm -rf /opt/pipx | |
| sudo time rm -rf /opt/ghc | |
| sudo time rm -rf "$AGENT_TOOLSDIRECTORY" | |
| sudo time apt-get clean | |
| sudo time rm -rf /var/lib/apt/lists/* | |
| # time docker rmi $(docker image ls -aq) | |
| # time du --max-depth=3 --threshold=100M -h /usr /opt /var 2>/dev/null | sort -hr | |
| df -h | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.12.8' | |
| architecture: 'x64' | |
| - name: Clone and install ue4-docker from master | |
| run: | | |
| git clone https://github.com/adamrehn/ue4-docker.git /tmp/ue4-docker | |
| cd /tmp/ue4-docker | |
| pip install . | |
| - name: Configure unreal-docker | |
| run: | | |
| ue4-docker setup | |
| - name: Build Unreal Engine Docker image with Android support | |
| env: | |
| UE_REPO: ${{ inputs.ue_repo }} | |
| UE_VERSION: ${{ inputs.ue_version }} | |
| DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
| DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }} | |
| run: | | |
| ue4-docker build custom -repo="$UE_REPO" -branch="$UE_VERSION" \ | |
| -basetag ubuntu22.04 \ | |
| -suffix "$UE_VERSION" \ | |
| -username="$DOCKER_USERNAME" \ | |
| -password="$DOCKER_TOKEN" \ | |
| --linux \ | |
| --target minimal \ | |
| --exclude debug \ | |
| --exclude templates \ | |
| --exclude ddc \ | |
| --prerequisites-dockerfile="./docker/ue-android-prerequisites-$UE_VERSION.dockerfile" \ | |
| --opt gitdependencies_args="--exclude=Mac --exclude=Win32 --exclude=Win64" \ | |
| --opt buildgraph_args="-set:HostPlatformOnly=false -set:WithAndroid=true" | |
| - name: Log in to GitHub package registry | |
| uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Tag and push Docker image with pre-built Unreal Engine | |
| env: | |
| UE_VERSION: ${{ inputs.ue_version }} | |
| run: | | |
| docker tag "adamrehn/ue4-minimal:custom-$UE_VERSION" "$REGISTRY/getsentry/unreal-docker:$UE_VERSION-android" | |
| docker push "$REGISTRY/getsentry/unreal-docker:$UE_VERSION-android" |