mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-07 09:25:33 +00:00
Merge pull request #13284 from keymanapp/chore/linux/docker
chore(linux): allow to build and use Debian docker image
This commit is contained in:
commit
72ce7727bf
3 changed files with 54 additions and 36 deletions
|
|
@ -1,7 +1,8 @@
|
|||
# Keyman is copyright (C) SIL Global. MIT License.
|
||||
|
||||
ARG UBUNTU_VERSION=latest
|
||||
FROM ubuntu:${UBUNTU_VERSION}
|
||||
ARG DISTRO=ubuntu
|
||||
ARG DISTRO_VERSION=latest
|
||||
FROM ${DISTRO}:${DISTRO_VERSION}
|
||||
|
||||
LABEL org.opencontainers.image.authors="SIL Global."
|
||||
LABEL org.opencontainers.image.url="https://github.com/keymanapp/keyman.git"
|
||||
|
|
@ -21,8 +22,10 @@ ENV DEBCONF_NOWARNINGS=yes
|
|||
# Update to the latest
|
||||
RUN apt-get -q -y update && \
|
||||
apt-get -q -y install ca-certificates curl gnupg meson software-properties-common sudo && \
|
||||
add-apt-repository ppa:keymanapp/keyman && \
|
||||
add-apt-repository ppa:keymanapp/keyman-alpha
|
||||
if [[ "$(lsb_release -is)" == "Ubuntu" ]]; then \
|
||||
add-apt-repository ppa:keymanapp/keyman && \
|
||||
add-apt-repository ppa:keymanapp/keyman-alpha ; \
|
||||
fi
|
||||
RUN apt-get -q -y update && \
|
||||
apt-get -q -y upgrade
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ builder_describe \
|
|||
":core" \
|
||||
":linux" \
|
||||
":web" \
|
||||
"--ubuntu-version=UBUNTU_VERSION The Ubuntu version (default: ${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER})" \
|
||||
"--distro=DISTRO The distribution to use for the base image "\
|
||||
" (debian or ubuntu, default: ubuntu)" \
|
||||
"--distro-version=DISTRO_VERSION The Ubuntu/Debian version (default: ${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER})" \
|
||||
"--no-cache Force rebuild of docker images" \
|
||||
"build Build docker images" \
|
||||
"test Test the docker images by running configure,build,test for all or the specified platforms"
|
||||
|
|
@ -31,11 +33,7 @@ _add_build_args() {
|
|||
local name=$3
|
||||
local value
|
||||
|
||||
if [[ -n "${!var:-}" ]]; then
|
||||
value="${!var}"
|
||||
else
|
||||
value="${!default_var:-}"
|
||||
fi
|
||||
value="${!var:=${!default_var:-}}"
|
||||
|
||||
build_args+=(--build-arg="${var}=${value}")
|
||||
|
||||
|
|
@ -49,11 +47,14 @@ _add_build_args() {
|
|||
_convert_parameters_to_build_args() {
|
||||
build_args=()
|
||||
build_version=
|
||||
local required_node_version
|
||||
local required_node_version keyman_default_distro
|
||||
# shellcheck disable=SC2034
|
||||
required_node_version="$(_print_expected_node_version)"
|
||||
# shellcheck disable=SC2034
|
||||
keyman_default_distro="ubuntu"
|
||||
|
||||
_add_build_args UBUNTU_VERSION KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER ""
|
||||
_add_build_args DISTRO keyman_default_distro ""
|
||||
_add_build_args DISTRO_VERSION KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER ""
|
||||
_add_build_args JAVA_VERSION KEYMAN_VERSION_JAVA java
|
||||
_add_build_args REQUIRED_NODE_VERSION required_node_version node
|
||||
_add_build_args REQUIRED_EMSCRIPTEN_VERSION KEYMAN_MIN_VERSION_EMSCRIPTEN emsdk
|
||||
|
|
@ -63,8 +64,16 @@ _convert_parameters_to_build_args() {
|
|||
fi
|
||||
}
|
||||
|
||||
_check_for_default_values() {
|
||||
if [[ -z "${DISTRO_VERSION:-}" ]] && [[ -z "${JAVA_VERSION:-}" ]]; then
|
||||
is_default_values=true
|
||||
else
|
||||
is_default_values=false
|
||||
fi
|
||||
}
|
||||
|
||||
_is_default_values() {
|
||||
[[ -z "${UBUNTU_VERSION:-}" ]] && [[ -z "${JAVA_VERSION:-}" ]]
|
||||
${is_default_values}
|
||||
}
|
||||
|
||||
build_action() {
|
||||
|
|
@ -72,10 +81,9 @@ build_action() {
|
|||
|
||||
builder_echo debug "Building image for ${platform}"
|
||||
|
||||
_convert_parameters_to_build_args
|
||||
|
||||
if [[ "${platform}" == "base" ]]; then
|
||||
docker pull --platform "amd64" "ubuntu:${UBUNTU_VERSION:-${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER}}"
|
||||
# shellcheck disable=SC2154 # set by _convert_parameters_to_build_args
|
||||
docker pull --platform "amd64" "${DISTRO}:${DISTRO_VERSION}"
|
||||
elif [[ "${platform}" == "linux" ]]; then
|
||||
cp "${KEYMAN_ROOT}/linux/debian/control" "${platform}"
|
||||
fi
|
||||
|
|
@ -103,9 +111,13 @@ test_action() {
|
|||
local platform=$1
|
||||
|
||||
builder_echo debug "Testing image for ${platform}"
|
||||
./run.sh "${platform}" -- ./build.sh configure,build,test:"${platform}"
|
||||
./run.sh --distro "${DISTRO}" --distro-version "${DISTRO_VERSION}" \
|
||||
"${platform}" -- ./build.sh configure,build,test:"${platform}"
|
||||
}
|
||||
|
||||
_check_for_default_values
|
||||
_convert_parameters_to_build_args
|
||||
|
||||
if builder_has_action build; then
|
||||
build_action base
|
||||
BASE_VERSION="${build_version}"
|
||||
|
|
|
|||
|
|
@ -17,37 +17,32 @@ builder_describe \
|
|||
"core" \
|
||||
"linux" \
|
||||
"web" \
|
||||
"--ubuntu-version=UBUNTU_VERSION The Ubuntu version (default: ${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER})"
|
||||
"--distro=DISTRO The distribution (debian or ubuntu, default: ubuntu)" \
|
||||
"--distro-version=DISTRO_VERSION The Ubuntu/Debian version (default: ${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER})"
|
||||
|
||||
builder_parse "$@"
|
||||
|
||||
run_android() {
|
||||
docker run -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core":/home/build/build/core/build \
|
||||
keymanapp/keyman-android-ci:default \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
|
||||
"keymanapp/keyman-android-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
}
|
||||
|
||||
run_core() {
|
||||
docker run -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core":/home/build/build/core/build \
|
||||
keymanapp/keyman-core-ci:default \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
|
||||
"keymanapp/keyman-core-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
}
|
||||
|
||||
run_linux() {
|
||||
if [[ -z "${UBUNTU_VERSION:-}" ]]; then
|
||||
image_version=default
|
||||
else
|
||||
image_version="${UBUNTU_VERSION}-java${KEYMAN_VERSION_JAVA}-node$(_print_expected_node_version)-emsdk${KEYMAN_MIN_VERSION_EMSCRIPTEN}"
|
||||
fi
|
||||
|
||||
mkdir -p "${KEYMAN_ROOT}/linux/build/docker-linux"
|
||||
mkdir -p "${KEYMAN_ROOT}/linux/keyman-system-service/build/docker-linux"
|
||||
mkdir -p "${KEYMAN_ROOT}/linux/build/docker-linux/${build_dir}"
|
||||
mkdir -p "${KEYMAN_ROOT}/linux/keyman-system-service/build/docker-linux/${build_dir}"
|
||||
docker run -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core":/home/build/build/core/build \
|
||||
-v "${KEYMAN_ROOT}/linux/build/docker-linux":/home/build/build/linux/build \
|
||||
-v "${KEYMAN_ROOT}/linux/keyman-system-service/build/docker-linux":/home/build/build/linux/keyman-system-service/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
|
||||
-v "${KEYMAN_ROOT}/linux/build/docker-linux/${build_dir}":/home/build/build/linux/build \
|
||||
-v "${KEYMAN_ROOT}/linux/keyman-system-service/build/docker-linux/${build_dir}":/home/build/build/linux/keyman-system-service/build \
|
||||
-e DESTDIR=/tmp \
|
||||
"keymanapp/keyman-linux-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
|
|
@ -55,12 +50,20 @@ run_linux() {
|
|||
|
||||
run_web() {
|
||||
docker run -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core":/home/build/build/core/build \
|
||||
keymanapp/keyman-web-ci:default \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
|
||||
"keymanapp/keyman-web-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
}
|
||||
|
||||
mkdir -p "${KEYMAN_ROOT}/core/build/docker-core"
|
||||
if [[ -z "${DISTRO_VERSION:-}" ]]; then
|
||||
image_version=default
|
||||
build_dir=default
|
||||
else
|
||||
image_version="${DISTRO:-}-${DISTRO_VERSION}-java${KEYMAN_VERSION_JAVA}-node$(_print_expected_node_version)-emsdk${KEYMAN_MIN_VERSION_EMSCRIPTEN}"
|
||||
build_dir="${DISTRO:-}-${DISTRO_VERSION}"
|
||||
fi
|
||||
|
||||
mkdir -p "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}"
|
||||
|
||||
builder_run_action android run_android
|
||||
builder_run_action core run_core
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue