MBHaxe/.circleci/config.yml
RandomityGuy 5057ca6b72 update ci
2026-04-06 19:09:36 +01:00

125 lines
5.7 KiB
YAML

# Use the latest 2.1 version of CircleCI pipeline process engine.
# See: https://circleci.com/docs/2.0/configuration-reference
version: 2.1
orbs:
android: circleci/android@2.3.0 # The Windows orb give you everything you need to start using the Windows executor.
# Define a job to be invoked later in a workflow.
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
jobs:
build:
executor:
name: android/android-machine
tag: 2021.10.1
# Checkout the code as the first step. This is a dedicated CircleCI step.
# The python orb's install-packages step will install the dependencies from a Pipfile via Pipenv by default.
# Here we're making sure we use just use the system-wide pip. By default it uses the project root's requirements.txt.
# Then run your tests!
# CircleCI will report the results back to your VCS provider.
steps:
- add_ssh_keys:
fingerprints:
- "82:42:56:a0:57:43:95:4e:00:c0:8c:c1:7f:70:74:47"
- checkout:
path: ~/MBHaxe
- run:
name: Decode Android key store
command: echo $BASE64_KEYSTORE | base64 -d | tee keystore ~/MBHaxe/keystore > /dev/null
- run:
name: Install dependencies
command: |
set -eux
download_url="https://github.com/HaxeFoundation/haxe/releases/download/4.3.4/haxe-4.3.4-linux64.tar.gz"
echo "Downloading [$download_url]..."
mkdir /tmp/haxe
curl -fsSL --retry 3 --retry-delay 5 "$download_url" -o /tmp/haxe.tar.gz
tar xzvf /tmp/haxe.tar.gz -C /tmp/haxe --strip-components=1
sudo apt-get update
sudo apt install neko
export PATH=/tmp/haxe/:"$PATH"
export HAXE_STD_PATH=/tmp/haxe/std
haxelib setup ~/haxelib
haxelib list
- run:
name: Install Android NDK
command: |-
#!/bin/bash
echo y | sdkmanager "ndk;18.1.5063045"
android_ndk_home=""
if [[ -d "${HOME}/android-sdk/ndk/18.1.5063045" ]]; then
android_ndk_home="$HOME/android-sdk/ndk/18.1.5063045"
elif [[ -d "/opt/android/sdk/ndk/18.1.5063045" ]]; then
android_ndk_home="/opt/android/sdk/ndk/18.1.5063045"
else
echo "Android NDK did not install successfully"
exit 1
fi
echo "export ANDROID_NDK_HOME=$android_ndk_home" >> "$BASH_ENV"
echo "Android NDK was installed at \"$android_ndk_home\"."
echo y | sdkmanager "platforms;android-31"
- run:
name: Install haxe dependencies
command: |
export PATH=/tmp/haxe/:"$PATH"
export HAXE_STD_PATH=/tmp/haxe/std
mkdir ~/deps
cd ~/deps
git clone https://github.com/RandomityGuy/hashlink
git clone https://github.com/RandomityGuy/hxDatachannel
haxelib git heaps https://github.com/RandomityGuy/heaps
haxelib dev hlopenal ~/deps/hashlink/libs/openal
haxelib dev hlsdl ~/deps/hashlink/libs/sdl
haxelib dev hashlink ~/deps/hashlink/other/haxelib
haxelib git zyheaps https://github.com/rainyt/zyheaps
haxelib install colyseus-websocket
haxelib dev datachannel ~/deps/hxDatachannel
- run:
name: Prepare directories
command: |
cd ~/deps
git clone https://github.com/RandomityGuy/MBHaxeAndroidLibs
cd ~/MBHaxe/Export/android
cp -R ~/deps/MBHaxeAndroidLibs/* app/
cd ~/deps/MBHaxeAndroidLibs/src/main/cpp/openal-soft
mv CMakeLists.txt CMakeLists-copy.txt
mv 'CMakeLists 2.txt' CMakeLists.txt
cmake .
cmake --build .
cp -pf ~/deps/MBHaxeAndroidLibs/src/main/cpp/openal-soft/native-tools/bsincgen ~/MBHaxe/Export/android/app/src/main/cpp/openal-nativetools
cp -pf ~/deps/MBHaxeAndroidLibs/src/main/cpp/openal-soft/native-tools/bin2h ~/MBHaxe/Export/android/app/src/main/cpp/openal-nativetools
- run:
name: Compile MBHaxe
command: |
export PATH=/tmp/haxe/:"$PATH"
cd ~/MBHaxe
sed -i '5i -lib datachannel' Export/android/app/src/main/build.hxml
sed -i '5i -lib colyseus-websocket' Export/android/app/src/main/build.hxml
haxe Export/android/app/src/main/build.hxml
mkdir -p Export/android/app/src/main/assets/data
cp -rf data/* Export/android/app/src/main/assets/data
cd Export/android
chmod +x gradlew
./gradlew
cp -pf ~/deps/MBHaxeAndroidLibs/src/main/cpp/openal-soft/CMakeLists-copy.txt ~/deps/MBHaxeAndroidLibs/src/main/cpp/openal-soft/CMakeLists.txt
./gradlew assembleRelease
- run:
name: Sign APK
command: |
cd ~/MBHaxe
sudo apt install apksigner
echo $RELEASE_STORE_PASSWORD | apksigner sign --ks ~/MBHaxe/keystore Export/android/app/build/outputs/apk/release/app-release-unsigned.apk
- run:
name: Upload to Artifact Storage
command: |
scp -o StrictHostKeyChecking=no -i $KEYPATH -P $PORT ~/MBHaxe/Export/android/app/build/outputs/apk/release/app-release-unsigned.apk $REMOTEDIR/MBHaxe-Gold.apk
# Invoke jobs via workflows
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
workflows:
build-android:
jobs:
- build