diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5a161d6aeeaddf8d59f143720307ca8af3650ee0..659a1570e9af546f1a7cc2a67bb9f43c4011d8ef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,20 +3,17 @@ include: ref: master file: docker_hub.gitlab-ci.yml -.build_flutter_base: - extends: .build_image_job_template - variables: - BUILD_ARGS: FLUTTER_VERSION=${VERSION} +variables: + IMAGE_BASENAME: ${IMAGE_PREFIX}/flutter -.build_old_flutter_base: - extends: .build_old_version +.build_flutter_base: variables: BUILD_ARGS: FLUTTER_VERSION=${VERSION} "3.24.5": - extends: .build_flutter_base + extends: + - .build_flutter_base + - .build_image_job_template variables: - DOCKER_BUILDX_PLATFORMS: linux/amd64 - IMAGE_BASENAME: ${IMAGE_PREFIX}/flutter VERSION: 3.24.5 IMAGE_NAME: ${IMAGE_BASENAME}:${VERSION},${IMAGE_BASENAME}:3.24,${IMAGE_BASENAME}:3 diff --git a/.vscode/tasks.json b/.vscode/tasks.json index bc6ca787f9bbf59ed82cfcfbcc20b87e6df4195d..d45ac0c80973473146a2940a0a47b15907852167 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -13,6 +13,19 @@ ".", ], }, + { + "label": "buildx build", + "command": "docker", + "args": [ + "buildx", + "build", + "--build-arg", + "FLUTTER_VERSION=${input:flutterVersion}", + "--platform", + "linux/arm64,linux/amd64", + ".", + ], + }, ], "inputs": [ { diff --git a/Dockerfile b/Dockerfile index dab5002bd39bf3c1d2894b6a4731b7850bd8d020..44840d046faa7cc6259397acc3b4130b8b702536 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,11 +13,32 @@ ARG FLUTTER_DIR="$DEPENDENCY_DIR/${FLUTTER_DIR}" ARG FLUTTER_DOWNLOAD_FILE="flutter.tar.xz" RUN apt update \ - && apt install -y wget xz-utils + && apt install -y wget xz-utils git unzip -RUN mkdir -p ${FLUTTER_DIR} \ - && wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz -O ${FLUTTER_DOWNLOAD_FILE} \ - && tar -xf ${FLUTTER_DOWNLOAD_FILE} --strip-components=1 --directory $FLUTTER_DIR +RUN mkdir -p ${FLUTTER_DIR} + +RUN if [ "$(uname -m)" = "x86_64" ]; then \ + wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz -O ${FLUTTER_DOWNLOAD_FILE} \ + && tar -xf ${FLUTTER_DOWNLOAD_FILE} --strip-components=1 --directory $FLUTTER_DIR; \ + fi + +# There is no official flutter arm64 release, so we must use the github repo +# Flutter on arch currently has warnings because channel and repository source are not set +RUN if [ "$(uname -m)" = "aarch64" ]; then \ + git clone --depth 1 https://github.com/flutter/flutter.git ${FLUTTER_DIR} \ + && cd ${FLUTTER_DIR} \ + && git fetch origin tag ${FLUTTER_VERSION} \ + && git checkout tags/${FLUTTER_VERSION} \ + && DART_SDK_PATH="${FLUTTER_DIR}/bin/cache/dart-sdk" \ + && ENGINE_REALM=$(cat "${FLUTTER_DIR}/bin/internal/engine.realm" | tr -d '[:space:]') \ + && ENGINE_VERSION=$(cat "${FLUTTER_DIR}/bin/internal/engine.version") \ + && DART_ZIP_NAME="dart-sdk-linux-arm64.zip" \ + && wget "https://storage.googleapis.com/flutter_infra_release/flutter/${ENGINE_VERSION}/${DART_ZIP_NAME}" -O ${DART_ZIP_NAME} \ + && unzip -o -q "${DART_ZIP_NAME}" -d "${FLUTTER_DIR}/bin/cache" \ + && /usr/bin/find "${DART_SDK_PATH}" -type d -exec chmod 755 {} \; \ + && /usr/bin/find "${DART_SDK_PATH}" -type f -perm /u+x -exec chmod a+x,a+r {} \; \ + && echo "${ENGINE_VERSION}" > "${FLUTTER_DIR}/bin/cache/engine-dart-sdk.stamp"; \ + fi FROM alpine:3.20.3