mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 00:15:32 +00:00
maint(common): on Windows build as root inside docker container
This fixes a permission problem when we run docker from git bash. On Windows we want to build as _root_ inside of the docker container. This gives the necessary permissions due to the way the Windows user is mapped to git bash/mingw and the docker container. On Linux however we want to build as _build_ user inside the container so that files we create are owned by the host user. See https://github.com/keymanapp/keyman/pull/14154#issuecomment-2970577312 for further explanation.
This commit is contained in:
parent
45f60b56de
commit
72d8b705ff
3 changed files with 23 additions and 5 deletions
|
|
@ -37,6 +37,15 @@ RUN echo "build ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|||
|
||||
RUN <<EOF cat > /usr/bin/bashwrapper
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
if [[ "${DOCKER_RUN_AS_ROOT:-}" == "1" ]] && [[ "$(id -u)" != "0" ]] ; then
|
||||
# On Windows run as root so that the permissions are correct
|
||||
# (root in Docker container is mapped to current user on Windows,
|
||||
# whereas when Docker is run on Linux root is mapped to root)
|
||||
sudo -u root -i "$0" "$@"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
export KEYMAN_USE_NVM=1
|
||||
export DOCKER_RUNNING=true
|
||||
EOF
|
||||
|
|
|
|||
|
|
@ -81,3 +81,11 @@ docker_wrapper() {
|
|||
docker "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
setup_docker() {
|
||||
if [[ "${MSYSTEM:-}" == "MINGW64" ]]; then
|
||||
DOCKER_RUN_ARGS="--env DOCKER_RUN_AS_ROOT=1"
|
||||
else
|
||||
DOCKER_RUN_ARGS=
|
||||
fi
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ builder_parse "$@"
|
|||
|
||||
check_for_default_values
|
||||
convert_parameters_to_args
|
||||
setup_docker
|
||||
|
||||
if is_default_values; then
|
||||
image_version=default
|
||||
|
|
@ -37,21 +38,21 @@ else
|
|||
fi
|
||||
|
||||
run_android() {
|
||||
docker_wrapper run -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
docker_wrapper run ${DOCKER_RUN_ARGS} -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-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_wrapper run -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
docker_wrapper run ${DOCKER_RUN_ARGS} -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
|
||||
"keymanapp/keyman-core-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
}
|
||||
|
||||
run_developer() {
|
||||
docker_wrapper run -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
docker_wrapper run ${DOCKER_RUN_ARGS} -it --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
|
||||
"keymanapp/keyman-developer-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
|
|
@ -60,7 +61,7 @@ run_developer() {
|
|||
run_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_wrapper run -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
docker_wrapper run ${DOCKER_RUN_ARGS} -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/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 \
|
||||
|
|
@ -70,7 +71,7 @@ run_linux() {
|
|||
}
|
||||
|
||||
run_web() {
|
||||
docker_wrapper run -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
docker_wrapper run ${DOCKER_RUN_ARGS} -it --privileged --rm -v "${KEYMAN_ROOT}":/home/build/build \
|
||||
-v "${KEYMAN_ROOT}/core/build/docker-core/${build_dir}":/home/build/build/core/build \
|
||||
"keymanapp/keyman-web-ci:${image_version}" \
|
||||
"${builder_extra_params[@]}"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue