change cache and update workflows #11
This file contains 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: 🤖 Android Builds | |
on: | |
push: | |
branches: [ master, github_actions ] | |
pull_request: | |
branches: [ master ] | |
# Global Cache Settings | |
env: | |
GODOT_BASE_BRANCH: "4.0" | |
SCONS_CACHE_LIMIT: 4096 | |
jobs: | |
linux-editor: | |
runs-on: "ubuntu-20.04" | |
name: Ubuntu | |
steps: | |
- name: Set up Java 17 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: temurin | |
java-version: 17 | |
# Clone Godot | |
- uses: actions/checkout@v2 | |
with: | |
repository: godotengine/godot | |
# Clone our module under the correct directory | |
- uses: actions/checkout@v2 | |
with: | |
path: modules/rwkv | |
# init submodules in the rwkv module | |
- name: Init submodules | |
run: | | |
cd modules/rwkv | |
git submodule update --init --recursive | |
cd ../.. | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: 1.3.204.0 | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
# Setup custom buildroot so we may use an old but compatible GLIBC version, while keeping recent toolchain. | |
# This allows to make production builds that are compatible with older Linux distros. | |
# TODO Enhancement: cache buildroot so future runs can use it? | |
# TODO Enhancement: make buildroot setup a self-contained step. There are bits of setup elsewhere. | |
# Currently I also setup `PATH` in the Compilation step because modifications | |
# do not persist between steps (?). I also placed this step after checkout because the checkout step changes | |
# the working directory for all following steps. | |
# TODO Bug: pkg-config wrongly points to lib instead of lib64 for arch-dependent header. | |
# Using `sed` to patch it as a workaround. | |
# See https://github.com/godotengine/buildroot/issues/6 | |
- name: Setup buildroot | |
run: | | |
wget https://download.tuxfamily.org/godotengine/toolchains/linux/x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 | |
tar -xjf x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 | |
cd x86_64-godot-linux-gnu_sdk-buildroot | |
sed -i x86_64-godot-linux-gnu/sysroot/usr/lib/pkgconfig/dbus-1.pc -e "s@/lib@/lib64@g" | |
./relocate-sdk.sh | |
cd .. | |
# [Already provided by the custom buildroot] | |
# Azure repositories are not reliable, we need to prevent azure giving us packages. | |
# - name: Make apt sources.list use the default Ubuntu repositories | |
# run: | | |
# sudo rm -f /etc/apt/sources.list.d/* | |
# sudo cp -f misc/ci/sources.list /etc/apt/sources.list | |
# sudo apt-get update | |
# [Already provided by the custom buildroot] | |
# Install all packages (except scons) | |
# - name: Configure dependencies | |
# run: | | |
# sudo apt-get install build-essential pkg-config libx11-dev libxcursor-dev \ | |
# libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm | |
# Upload cache on completion and check it out now | |
- name: Load .scons_cache directory | |
id: android-cache | |
uses: actions/cache@v2 | |
with: | |
path: ${{github.workspace}}/.scons_cache/32/ | |
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}-32 | |
restore-keys: | | |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}-32 | |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}} | |
${{github.job}}-${{env.GODOT_BASE_BRANCH}} | |
- name: Load .scons_cache directory | |
id: android-cache-64 | |
uses: actions/cache@v2 | |
with: | |
path: ${{github.workspace}}/.scons_cache/64/ | |
key: ${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}-64 | |
restore-keys: | | |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}-64 | |
${{github.job}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}} | |
${{github.job}}-${{env.GODOT_BASE_BRANCH}} | |
# [Already provided by the custom buildroot] | |
# Use python 3.x release (works cross platform; best to keep self contained in it's own step) | |
# - name: Set up Python 3.x | |
# uses: actions/setup-python@v2 | |
# with: | |
# # Semantic version range syntax or exact version of a Python version | |
# python-version: '3.x' | |
# # Optional - x64 or x86 architecture, defaults to x64 | |
# architecture: 'x64' | |
# [Already provided by the custom buildroot] | |
# Setup scons, print python version and scons version info, so if anything is broken it won't run the build. | |
# - name: Configuring Python packages | |
# run: | | |
# python -c "import sys; print(sys.version)" | |
# python -m pip install scons | |
# python --version | |
# scons --version | |
# We should always be explicit with our flags usage here since it's gonna be sure to always set those flags | |
- name: Compilation64 | |
env: | |
SCONS_CACHE: ${{github.workspace}}/.scons_cache/64/ | |
run: | | |
PATH=${GITHUB_WORKSPACE}/x86_64-godot-linux-gnu_sdk-buildroot/bin:$PATH | |
scons arch=arm64 platform=android target=template_release | |
- name: Compilation32 | |
env: | |
SCONS_CACHE: ${{github.workspace}}/.scons_cache/32/ | |
run: | | |
PATH=${GITHUB_WORKSPACE}/x86_64-godot-linux-gnu_sdk-buildroot/bin:$PATH | |
scons arch=arm32 platform=android target=template_release | |
- name: Generate Godot templates | |
run: | | |
PATH=${GITHUB_WORKSPACE}/x86_64-godot-linux-gnu_sdk-buildroot/bin:$PATH | |
scons --version | |
cd platform/android/java | |
./gradlew generateGodotTemplates | |
cd ../../.. | |
ls -l bin/ | |
# Make build available | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: build | |
path: bin/ |