name: Build Cordova Android App
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install required dependencies
run: |
sudo apt-get update
sudo apt-get install -y wget unzip
- name: Set up Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Set up Node.js 20
uses: actions/setup-node@v4
with:
node-version: '20.18.3'
- name: Install Gradle 7.4.2
run: |
wget https://services.gradle.org/distributions/gradle-7.4.2-bin.zip -O gradle.zip
sudo mkdir -p /opt/gradle
sudo unzip -d /opt/gradle gradle.zip
echo "export PATH=/opt/gradle/gradle-7.4.2/bin:$PATH" >> $GITHUB_ENV
rm gradle.zip
- name: Set up Android SDK
run: |
sudo mkdir -p /opt/android-sdk/cmdline-tools/latest
cd /opt/android-sdk/cmdline-tools
sudo wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O cmdline-tools.zip
sudo unzip cmdline-tools.zip -d latest
sudo rm cmdline-tools.zip
# 환경 변수 설정 및 즉시 적용
echo "export ANDROID_HOME=/opt/android-sdk" >> $GITHUB_ENV
echo "export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH" >> $GITHUB_ENV
export ANDROID_HOME=/opt/android-sdk
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH
- name: Install Android SDK packages
run: |
yes | sdkmanager --licenses
sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
- name: Install Cordova
run: npm install -g cordova
- name: Create Cordova project
run: |
cordova create myapp
cd myapp
cordova platform add android
- name: Build Cordova Android app
run: |
cd myapp
cordova build android
name: Build Cordova Android App
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Set up Node.js 20
uses: actions/setup-node@v4
with:
node-version: '20.18.3'
- name: Install Gradle 7.4.2
run: |
wget https://services.gradle.org/distributions/gradle-7.4.2-bin.zip -O gradle.zip
sudo mkdir -p /opt/gradle
sudo unzip -d /opt/gradle gradle.zip
echo "export PATH=/opt/gradle/gradle-7.4.2/bin:$PATH" >> $GITHUB_ENV
rm gradle.zip
- name: Set up Android SDK
run: |
sudo mkdir -p /opt/android-sdk/cmdline-tools
cd /opt/android-sdk/cmdline-tools
sudo wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O cmdline-tools.zip
sudo unzip cmdline-tools.zip
sudo mv cmdline-tools latest
sudo rm cmdline-tools.zip
echo "export ANDROID_HOME=/opt/android-sdk" >> $GITHUB_ENV
echo "export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH" >> $GITHUB_ENV
- name: Install Android SDK packages
run: |
yes | sdkmanager --licenses
sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
- name: Install Cordova
run: npm install -g cordova
- name: Create Cordova project
run: |
cordova create myapp
cd myapp
cordova platform add android
- name: Build Cordova Android app
run: |
cd myapp
cordova build android
# Base image
FROM node:20.18.3-bullseye
# Set environment variables
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV ANDROID_HOME=/opt/android-sdk
ENV PATH="${JAVA_HOME}/bin:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${PATH}"
# Install required dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
openjdk-17-jdk \
unzip \
wget \
gradle=7.4.2-1 \
&& rm -rf /var/lib/apt/lists/*
# Install Android SDK
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools && \
cd ${ANDROID_HOME}/cmdline-tools && \
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O cmdline-tools.zip && \
unzip cmdline-tools.zip && \
mv cmdline-tools latest && \
rm cmdline-tools.zip
# Accept Android SDK licenses
RUN yes | sdkmanager --licenses
# Install required Android SDK packages
RUN sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
# Install Cordova
RUN npm install -g cordova
# Create a Cordova project
WORKDIR /app
RUN cordova create myapp && cd myapp && cordova platform add android
# Set workdir
WORKDIR /app/myapp
# Build the Cordova Android app
CMD ["cordova", "build", "android"]
설명
1. 기반 이미지: Node.js 20.18.3 (Debian Bullseye)를 사용합니다.
2. 필수 패키지 설치: openjdk-17-jdk, unzip, wget, gradle 7.4.2를 설치합니다.
3. Android SDK 설치:
• cmdline-tools를 다운로드 및 설치합니다.
• sdkmanager를 사용하여 Android SDK 35의 필수 패키지(platform-tools, platforms;android-35, build-tools;35.0.0)를 설치합니다.
• sdkmanager --licenses로 라이선스를 자동으로 동의합니다.
4. Cordova 설치: npm install -g cordova를 통해 글로벌로 설치합니다.
5. Cordova 프로젝트 생성 및 플랫폼 추가: cordova create myapp 후 cordova platform add android 실행.
6. 앱 빌드: 컨테이너 실행 시 cordova build android 명령어를 실행합니다.
이 Dockerfile을 사용하면 Cordova Android 앱을 쉽게 빌드할 수 있습니다.
docker build -t cordova-android . 후
docker run --rm cordova-android 명령어로 실행하면 됩니다.
댓글