Workflow um Build-Stage erweitern #185
@@ -29,6 +29,13 @@ jobs:
|
|||||||
- name: Install Android SDK command-line tools and components
|
- name: Install Android SDK command-line tools and components
|
||||||
run: |
|
run: |
|
||||||
export ANDROID_SDK_ROOT="$HOME/android-sdk"
|
export ANDROID_SDK_ROOT="$HOME/android-sdk"
|
||||||
|
# If SDK already present (e.g., mounted from host or cached), skip install
|
||||||
|
if [ -x "$ANDROID_SDK_ROOT/platform-tools/adb" ] || [ -x "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" ]; then
|
||||||
|
echo "Found existing Android SDK at $ANDROID_SDK_ROOT -- skipping download/install."
|
||||||
|
ls -la $ANDROID_SDK_ROOT || true
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
if command -v sudo >/dev/null 2>&1; then
|
if command -v sudo >/dev/null 2>&1; then
|
||||||
sudo apt-get update && sudo apt-get install -y unzip
|
sudo apt-get update && sudo apt-get install -y unzip
|
||||||
else
|
else
|
||||||
@@ -36,11 +43,58 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools
|
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools
|
||||||
cd $ANDROID_SDK_ROOT
|
cd $ANDROID_SDK_ROOT
|
||||||
wget https://dl.google.com/android/repository/commandlinetools-linux_latest.zip -O cmdline-tools.zip
|
# Allow overriding the download URL via environment variable (useful for mirrors)
|
||||||
|
default_urls=(
|
||||||
|
"https://dl.google.com/android/repository/commandlinetools-linux_latest.zip"
|
||||||
|
"https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip"
|
||||||
|
"https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip"
|
||||||
|
"https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip"
|
||||||
|
"https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip"
|
||||||
|
)
|
||||||
|
urls=()
|
||||||
|
if [ -n "$ANDROID_CMDLINE_TOOLS_URL" ]; then
|
||||||
|
urls+=("$ANDROID_CMDLINE_TOOLS_URL")
|
||||||
|
fi
|
||||||
|
urls+=("${default_urls[@]}")
|
||||||
|
|
||||||
|
downloaded=false
|
||||||
|
for url in "${urls[@]}"; do
|
||||||
|
echo "Trying $url"
|
||||||
|
# Check existence (print server response if not found)
|
||||||
|
if wget -q --spider "$url" 2>&1 | tee /dev/stderr | grep -q "HTTP/1.1 200\|HTTP/2 200"; then
|
||||||
|
echo "Downloading $url"
|
||||||
|
if wget --show-progress --progress=bar:force:noscroll:giga "$url" -O cmdline-tools.zip; then
|
||||||
|
downloaded=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "URL not available or returned non-200: $url"
|
||||||
|
echo "Server response:"
|
||||||
|
wget -S --spider "$url" 2>&1 || true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$downloaded" != "true" ]; then
|
||||||
|
echo "ERROR: Could not download Android command-line tools from known URLs."
|
||||||
|
echo "Tried: ${urls[*]}"
|
||||||
|
echo "If you are running this locally with 'act' or another restricted runner, ensure the runner has network access or set ANDROID_CMDLINE_TOOLS_URL to a reachable mirror."
|
||||||
|
echo "Examples for local 'act' runs:"
|
||||||
|
echo " - Pre-download commandlinetools zip and mount into the container as: -v /path/to/cmdline-tools.zip:",
|
||||||
|
echo " and set ANDROID_SDK_ROOT to /github/home/android-sdk (or pass ANDROID_CMDLINE_TOOLS_URL to point to the mounted file)"
|
||||||
|
echo " - Or set ANDROID_CMDLINE_TOOLS_URL to a working URL: e.g. export ANDROID_CMDLINE_TOOLS_URL=\"file:///github/home/cmdline-tools.zip\""
|
||||||
|
exit 8
|
||||||
|
fi
|
||||||
unzip -q cmdline-tools.zip -d $ANDROID_SDK_ROOT/cmdline-tools
|
unzip -q cmdline-tools.zip -d $ANDROID_SDK_ROOT/cmdline-tools
|
||||||
# move the extracted folder into a 'latest' folder (sdkmanager expects this layout)
|
# move the extracted folder into a 'latest' folder (sdkmanager expects this layout)
|
||||||
if [ -d "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" ]; then
|
if [ -d "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" ]; then
|
||||||
mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest || true
|
mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest || true
|
||||||
|
else
|
||||||
|
# Some zips extract a folder named 'cmdline-tools' already under different structure; try to normalize
|
||||||
|
for d in $ANDROID_SDK_ROOT/cmdline-tools/*; do
|
||||||
|
if [ -d "$d/bin" ]; then
|
||||||
|
mv "$d" $ANDROID_SDK_ROOT/cmdline-tools/latest || true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH
|
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH
|
||||||
# Install essential SDK components (adjust platform version/build-tools as needed)
|
# Install essential SDK components (adjust platform version/build-tools as needed)
|
||||||
@@ -84,9 +138,7 @@ jobs:
|
|||||||
|
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
if: false
|
||||||
RUNNER_TOOL_CACHE: /toolcache
|
|
||||||
if: f
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|||||||
Reference in New Issue
Block a user