В одном из своих проектов на основе docker я компилирую Mod security для сборки образа для двух BASE_ARCH
с QEMU .
- AMD 64 : работает как шарм, задание gitlab CI создает образ за 17 минут
- ARM64 / V8 : превышение максимальной продолжительности gitlab (1 час), задание CI не выполняется (но я почти уверен, что оно будет успешным, если у него будет больше времени)
Вот docker_arm
job
docker_arm:
stage: build
image: docker:19.03.1
services:
- docker:dind
before_script:
- echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
- apk update
- apk add -q qemu
- echo 'Building $CI_PROJECT_NAME'
script:
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- docker build --build-arg BASE_ARCH=arm64v8 -t $CI_PROJECT_NAME:arm64v8-latest ./src
- docker tag $CI_PROJECT_NAME:arm64v8-latest $CI_REGISTRY/zar3bski/$CI_PROJECT_NAME:arm64v8-latest
- docker push $CI_REGISTRY/zar3bski/$CI_PROJECT_NAME:arm64v8-latest
Мне было интересно, могу ли я настроить G ++ или qemu , чтобы ускорить работу, чтобы это задание могло пройти. Я знаю, что, поскольку QEMU имитирует архитектуру ARM64 / V8, я никогда не получу нативной производительности. Все, что я ищу, - это успешная работа (даже если для этого потребуется 40 минут). По вашему мнению, какой из следующих вариантов с большей вероятностью обеспечит стабильный конвейер:
- Оптимизация QEMU
- Оптимизация G ++
- с использованием другой базы ARM
docker:19.03.1
для создания образа (возможно ли это только в Gitlab?)
Edit
Кажется невозможным запустить image: arm64v8/docker:19.03.1
на общих бегунах Gitlab