mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-09 00:57:43 +00:00
chore(linux): allow to build and use Debian docker image
This commit is contained in:
parent
a8adb33d9a
commit
1dde4c3f1f
3 changed files with 42 additions and 24 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"
|
||||
|
|
@ -49,11 +51,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
|
||||
|
|
@ -64,7 +69,7 @@ _convert_parameters_to_build_args() {
|
|||
}
|
||||
|
||||
_is_default_values() {
|
||||
[[ -z "${UBUNTU_VERSION:-}" ]] && [[ -z "${JAVA_VERSION:-}" ]]
|
||||
[[ -z "${DISTRO_VERSION:-}" ]] && [[ -z "${JAVA_VERSION:-}" ]]
|
||||
}
|
||||
|
||||
build_action() {
|
||||
|
|
@ -75,7 +80,7 @@ build_action() {
|
|||
_convert_parameters_to_build_args
|
||||
|
||||
if [[ "${platform}" == "base" ]]; then
|
||||
docker pull --platform "amd64" "ubuntu:${UBUNTU_VERSION:-${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER}}"
|
||||
docker pull --platform "amd64" "${DISTRO:-ubuntu}:${DISTRO_VERSION:-${KEYMAN_DEFAULT_VERSION_UBUNTU_CONTAINER}}"
|
||||
elif [[ "${platform}" == "linux" ]]; then
|
||||
cp "${KEYMAN_ROOT}/linux/debian/control" "${platform}"
|
||||
fi
|
||||
|
|
@ -103,7 +108,8 @@ 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}"
|
||||
}
|
||||
|
||||
if builder_has_action build; then
|
||||
|
|
|
|||
|
|
@ -16,44 +16,53 @@ 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() {
|
||||
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:default \
|
||||
"keymanapp/keyman-linux-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
}
|
||||
|
||||
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