mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-01-15 19:06:17 +00:00
updates
This commit is contained in:
28
Jenkinsfile
vendored
28
Jenkinsfile
vendored
@@ -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}"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 "$@"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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=()
|
||||||
|
|||||||
5
main.sh
5
main.sh
@@ -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
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
entry.sh
|
|
||||||
@@ -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 $@
|
||||||
|
|||||||
Reference in New Issue
Block a user