Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
db854cda24 | |||
d306898272 | |||
3b8d5f8a10 | |||
891d82d6d4 | |||
05f017a190 | |||
664c1c9cee | |||
7ad445b609 | |||
fc9c206d38 | |||
7cb18de6d7 | |||
84b527a60a | |||
d25876537c | |||
76d32f621e | |||
59aaea4a9c | |||
ce6e30dd9d | |||
9cc7d205e9 | |||
ce7e192461 | |||
f66243ba57 | |||
c5ceb5d186 |
38
Dockerfile
38
Dockerfile
@ -1,19 +1,31 @@
|
||||
FROM docker.io/debian:12-slim as build
|
||||
FROM docker.io/debian:12-slim AS build
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
sdkmanager \
|
||||
xz-utils \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ADD https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.24.4-stable.tar.xz /flutter.tar.xz
|
||||
RUN tar -C /opt/ --exclude=cache -xJf /flutter.tar.xz
|
||||
# https://docs.flutter.dev/release/archive
|
||||
RUN curl https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.3-stable.tar.xz \
|
||||
| tar --no-same-owner -C /opt/ -xJ
|
||||
# https://developer.android.com/tools/releases/build-tools
|
||||
RUN sdkmanager \
|
||||
"build-tools;35.0.0" \
|
||||
"build-tools;33.0.1" \
|
||||
"build-tools;34.0.0" \
|
||||
"cmdline-tools;9.0" \
|
||||
"platform-tools;35.0.2" \
|
||||
"platform-tools" \
|
||||
"platforms;android-33" \
|
||||
"platforms;android-34" \
|
||||
"platforms;android-35"
|
||||
# https://gradle.org/releases/
|
||||
RUN curl -Lo /gradle.zip \
|
||||
'https://services.gradle.org/distributions/gradle-8.12.1-bin.zip'
|
||||
|
||||
FROM docker.io/debian:12-slim
|
||||
RUN useradd -m app
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN touch /.dockerenv
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
@ -21,10 +33,14 @@ RUN apt-get update \
|
||||
openjdk-17-jdk-headless \
|
||||
unzip \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=build --chown=app:app /opt/ /opt/
|
||||
USER app
|
||||
COPY --from=build /opt/ /opt/
|
||||
ENV GRADLE_ZIP=/gradle.zip
|
||||
COPY --from=build /gradle.zip "$GRADLE_ZIP"
|
||||
ENV PATH="/opt/flutter/bin:$PATH"
|
||||
RUN flutter config --android-sdk /opt/android-sdk/ \
|
||||
&& yes | flutter doctor --android-licenses > /dev/null
|
||||
RUN flutter config --android-sdk /opt/android-sdk/
|
||||
RUN flutter precache --android
|
||||
RUN yes | flutter doctor --android-licenses
|
||||
COPY entrypoint.sh /usr/local/bin/
|
||||
WORKDIR /app/
|
||||
ENTRYPOINT ["flutter"]
|
||||
ENTRYPOINT ["entrypoint.sh"]
|
||||
CMD ["build", "apk"]
|
||||
|
21
README.md
Normal file
21
README.md
Normal file
@ -0,0 +1,21 @@
|
||||
# docker-flutter
|
||||
|
||||
## Action
|
||||
```yaml
|
||||
- uses: icing/flutter@main
|
||||
```
|
||||
|
||||
## Docker image
|
||||
### Examples
|
||||
- Run
|
||||
```bash
|
||||
docker volume create --ignore fluttercache
|
||||
docker run --rm --network host -v "$PWD:/app/" -v "fluttercache:/home/gradle/.gradle/" git.gmoker.com/icing/flutter:main run
|
||||
```
|
||||
|
||||
- Build
|
||||
```bash
|
||||
docker volume create --ignore fluttercache
|
||||
docker run --rm -v "$PWD:/app/" -v "fluttercache:/home/gradle/.gradle/" git.gmoker.com/icing/flutter:main build apk
|
||||
```
|
||||
The apk will be found at `build/app/outputs/flutter-apk/app-release.apk`.
|
3
action.yml
Normal file
3
action.yml
Normal file
@ -0,0 +1,3 @@
|
||||
runs:
|
||||
using: docker
|
||||
image: git.gmoker.com/icing/flutter:main
|
12
entrypoint.sh
Executable file
12
entrypoint.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
PROPS=android/gradle/wrapper/gradle-wrapper.properties
|
||||
BAK=/bak
|
||||
|
||||
cp "$PROPS" "$BAK" || exit 1
|
||||
# shellcheck disable=SC2064
|
||||
trap "cp '$BAK' '$PROPS'" EXIT
|
||||
|
||||
sed -i "/^distributionUrl/s =.\+ =file\\://$GRADLE_ZIP " "$PROPS"
|
||||
|
||||
flutter --no-version-check "$@"
|
Loading…
Reference in New Issue
Block a user