This commit is contained in:
2025-08-05 18:37:23 -05:00
parent 407213af8c
commit 1dbd1e781f
7 changed files with 26 additions and 44 deletions

28
Jenkinsfile vendored
View File

@@ -1,31 +1,27 @@
pipeline { pipeline {
agent none agent none
environment { DEBUG = "1" }
stages { stages {
stage('Build Docker Image Matrix') { stage('Build in Docker') {
matrix { matrix {
axes { axes {
axis { axis {
name 'DISTRO' name 'DISTRO'
values 'debian-bookworm', 'ubuntu-24.04', 'ubuntu-22.04', values 'ubuntu-22.04', 'ubuntu-24.04',
'archlinux-latest', 'fedora-42' 'debian-bookworm', 'fedora-42'
// 'archlinux-latest'
}
axis {
name 'ARCH'
values 'amd64', 'arm64'
} }
} }
stages { stages {
stage('Build Docker Image') { stage('Build/Run') {
agent { label "linux && amd64" } agent { label "linux && ${ARCH}" }
steps { steps {
sh "./scripts/docker_build_image.sh ${DISTRO}" sh "./scripts/docker_build_image.sh ${DISTRO}"
sh "./scripts/docker_save_image.sh ${DISTRO}" sh "./scripts/docker_run_image.sh ${DISTRO}"
stash includes: "gitignore/docker/*${DISTRO}.tar.zst", name: "${DISTRO}-stash"
}
}
stage('Run Docker Image') {
agent { label "linux && arm64" }
steps {
unstash "${DISTRO}-stash"
sh "./scripts/docker_load_image.sh ${DISTRO}"
sh "./scripts/docker_run_amd64_image_on_arm64.sh ${DISTRO}"
} }
} }
} }

View File

@@ -24,10 +24,11 @@ echo_if_fail() {
local cmd=("$@") local cmd=("$@")
local out="${TMP_DIR}/.stdout-${RANDOM}" local out="${TMP_DIR}/.stdout-${RANDOM}"
local err="${TMP_DIR}/.stderr-${RANDOM}" local err="${TMP_DIR}/.stderr-${RANDOM}"
test -d "${TMP_DIR}" || mkdir -p "${TMP_DIR}"
# set trace to the cmdEvalTrace and open file descriptor # set trace to the cmdEvalTrace and open file descriptor
local cmdEvalTrace="${TMP_DIR}/.cmdEvalTrace-${RANDOM}" local cmdEvalTrace="${TMP_DIR}/.cmdEvalTrace-${RANDOM}"
touch "${cmdEvalTrace}" || ${SUDO} rm -rf "${TMP_DIR}"
test -d "${TMP_DIR}" || mkdir -p "${TMP_DIR}"
exec 5>"${cmdEvalTrace}" exec 5>"${cmdEvalTrace}"
export BASH_XTRACEFD=5 export BASH_XTRACEFD=5

View File

@@ -47,7 +47,6 @@ docker_build_image() {
validate_selected_image "$@" || return 1 validate_selected_image "$@" || return 1
check_docker || return 1 check_docker || return 1
test -d "${DOCKER_DIR}" || mkdir -p "${DOCKER_DIR}" test -d "${DOCKER_DIR}" || mkdir -p "${DOCKER_DIR}"
local platform="${PLATFORM:-linux/amd64}"
for distro in "${DISTROS[@]}"; do for distro in "${DISTROS[@]}"; do
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${distro}")"
echo_info "sourcing package manager for ${image_tag}" echo_info "sourcing package manager for ${image_tag}"
@@ -58,7 +57,6 @@ docker_build_image() {
distroPkgMgr="${DOCKER_DIR}/${distro}-pkg_mgr" distroPkgMgr="${DOCKER_DIR}/${distro}-pkg_mgr"
# get package manager info # get package manager info
docker run --rm \ docker run --rm \
--platform "${platform}" \
-v "${REPO_DIR}":/workdir \ -v "${REPO_DIR}":/workdir \
-w /workdir \ -w /workdir \
"${dockerDistro}" \ "${dockerDistro}" \
@@ -86,7 +84,6 @@ docker_build_image() {
echo_info "building ${image_tag}" echo_info "building ${image_tag}"
docker build \ docker build \
--platform "${platform}" \
-t "${image_tag}" \ -t "${image_tag}" \
-f "${dockerfile}" \ -f "${dockerfile}" \
. || return 1 . || return 1
@@ -100,11 +97,10 @@ FB_FUNC_COMPLETION['docker_save_image']="${VALID_DOCKER_IMAGES[*]}"
docker_save_image() { docker_save_image() {
validate_selected_image "$@" || return 1 validate_selected_image "$@" || return 1
check_docker || return 1 check_docker || return 1
local platform="${PLATFORM:-linux/amd64}"
for distro in "${DISTROS[@]}"; do for distro in "${DISTROS[@]}"; do
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${distro}")"
echo_info "saving docker image for ${image_tag}" echo_info "saving docker image for ${image_tag}"
docker save --platform "${platform}" "${image_tag}" | docker save "${image_tag}" |
zstd -T0 >"${DOCKER_DIR}/$(docker_image_archive_name "${image_tag}")" || zstd -T0 >"${DOCKER_DIR}/$(docker_image_archive_name "${image_tag}")" ||
return 1 return 1
done done
@@ -116,7 +112,6 @@ FB_FUNC_COMPLETION['docker_load_image']="${VALID_DOCKER_IMAGES[*]}"
docker_load_image() { docker_load_image() {
validate_selected_image "$@" || return 1 validate_selected_image "$@" || return 1
check_docker || return 1 check_docker || return 1
local platform="${PLATFORM:-linux/amd64}"
for distro in "${DISTROS[@]}"; do for distro in "${DISTROS[@]}"; do
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${distro}")"
echo_info "loading docker image for ${image_tag}" echo_info "loading docker image for ${image_tag}"
@@ -134,28 +129,14 @@ FB_FUNC_COMPLETION['docker_run_image']="${VALID_DOCKER_IMAGES[*]}"
docker_run_image() { docker_run_image() {
validate_selected_image "$@" || return 1 validate_selected_image "$@" || return 1
check_docker || return 1 check_docker || return 1
local platform="${PLATFORM:-linux/amd64}"
for distro in "${DISTROS[@]}"; do for distro in "${DISTROS[@]}"; do
image_tag="$(set_distro_image_tag "${distro}")" image_tag="$(set_distro_image_tag "${distro}")"
echo_info "running ffmpeg build for ${image_tag}" echo_info "running ffmpeg build for ${image_tag}"
docker run --rm \ docker run --rm \
--platform "${platform}" \
-v "${REPO_DIR}":/workdir \ -v "${REPO_DIR}":/workdir \
-w /workdir \ -w /workdir \
-e DEBUG="${DEBUG}" \
"${image_tag}" \ "${image_tag}" \
./scripts/build.sh || return 1 ./scripts/build.sh || return 1
done done
} }
FB_FUNC_NAMES+=('docker_run_amd64_image_on_arm64')
FB_FUNC_DESCS['docker_run_amd64_image_on_arm64']='run docker image to build ffmpeg for amd64 on arm64'
FB_FUNC_COMPLETION['docker_run_amd64_image_on_arm64']="${VALID_DOCKER_IMAGES[*]}"
docker_run_amd64_image_on_arm64() {
if missing_cmd qemu-x86_64-static; then
determine_pkg_mgr || return 1
${pkg_install} qemu-user-static || return 1
fi
check_docker || return 1
docker run --privileged --rm tonistiigi/binfmt --install all || return 1
docker_run_image "$@"
}

View File

@@ -96,6 +96,12 @@ print_pkg_mgr() {
echo "export req_pkgs=\"$(print_req_pkgs)\"" echo "export req_pkgs=\"$(print_req_pkgs)\""
} }
print_os() {
if [[ -f /etc/os-release ]]; then
source /etc/os-release ; echo "${ID}-${VERSION_ID}"
fi
}
check_for_req_pkgs() { check_for_req_pkgs() {
echo_info "checking for required packages" echo_info "checking for required packages"
local missing_pkgs=() local missing_pkgs=()

View File

@@ -41,7 +41,7 @@ export FB_RUNNING_AS_SCRIPT=1
. main.sh . main.sh
scr_name="$(bash_basename $0)" scr_name="$(bash_basename $0)"
cmd="${scr_name//.sh}" cmd="${scr_name//.sh}"
set -x if [[ $DEBUG == 1 ]]; then set -x ; fi
$cmd $@' >"${ENTRY_SCRIPT}" $cmd $@' >"${ENTRY_SCRIPT}"
chmod +x "${ENTRY_SCRIPT}" chmod +x "${ENTRY_SCRIPT}"
fi fi
@@ -76,9 +76,8 @@ test -f "${HOME}/.bashrc" && source "${HOME}/.bashrc"
src_scripts || return 1 src_scripts || return 1
determine_pkg_mgr || return 1 determine_pkg_mgr || return 1
# pkg_mgr initialized in determine_pkg_mgr
# shellcheck disable=SC2154 # shellcheck disable=SC2154
test "${PREFIX}" == '' && PREFIX="${IGN_DIR}/${pkg_mgr}_sysroot" test "${PREFIX}" == '' && PREFIX="${IGN_DIR}/$(print_os)_sysroot"
if [[ $FB_RUNNING_AS_SCRIPT -eq 0 ]]; then if [[ $FB_RUNNING_AS_SCRIPT -eq 0 ]]; then
print_cmds || return 1 print_cmds || return 1

View File

@@ -1 +0,0 @@
entry.sh

View File

@@ -3,6 +3,6 @@ cd "$(dirname "$(readlink -f $0)")/.."
export FB_RUNNING_AS_SCRIPT=1 export FB_RUNNING_AS_SCRIPT=1
. main.sh . main.sh
scr_name="$(bash_basename $0)" scr_name="$(bash_basename $0)"
cmd="${scr_name//.sh/}" cmd="${scr_name//.sh}"
set -x if [[ $DEBUG == 1 ]]; then set -x ; fi
$cmd $@ $cmd $@