mirror of
https://github.com/levogevo/ffmpeg-builder.git
synced 2026-01-15 19:06:17 +00:00
multiarch image
This commit is contained in:
17
Jenkinsfile
vendored
17
Jenkinsfile
vendored
@@ -17,7 +17,21 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
stages {
|
stages {
|
||||||
stage('Build/Run') {
|
stage('Build Multiarch Image') {
|
||||||
|
agent { label "linux && amd64" }
|
||||||
|
steps {
|
||||||
|
withCredentials([string(
|
||||||
|
credentialsId: 'DOCKER_REGISTRY',
|
||||||
|
variable: 'DOCKER_REGISTRY'),
|
||||||
|
usernamePassword(credentialsId: 'DOCKER_REGISTRY_CRED',
|
||||||
|
passwordVariable: 'DOCKER_REGISTRY_PASS',
|
||||||
|
usernameVariable: 'DOCKER_REGISTRY_USER'
|
||||||
|
)]) {
|
||||||
|
sh "./scripts/docker_build_multiarch_image.sh ${DISTRO}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Run Multiarch Image') {
|
||||||
agent { label "linux && ${ARCH}" }
|
agent { label "linux && ${ARCH}" }
|
||||||
steps {
|
steps {
|
||||||
withCredentials([string(
|
withCredentials([string(
|
||||||
@@ -27,7 +41,6 @@ pipeline {
|
|||||||
passwordVariable: 'DOCKER_REGISTRY_PASS',
|
passwordVariable: 'DOCKER_REGISTRY_PASS',
|
||||||
usernameVariable: 'DOCKER_REGISTRY_USER'
|
usernameVariable: 'DOCKER_REGISTRY_USER'
|
||||||
)]) {
|
)]) {
|
||||||
sh "./scripts/docker_build_image.sh ${DISTRO}"
|
|
||||||
sh "./scripts/docker_run_image.sh ${DISTRO}"
|
sh "./scripts/docker_run_image.sh ${DISTRO}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ echo_platform() {
|
|||||||
local platKernel platCpu
|
local platKernel platCpu
|
||||||
platKernel="$(uname)"
|
platKernel="$(uname)"
|
||||||
platKernel="${platKernel,,}"
|
platKernel="${platKernel,,}"
|
||||||
if [[ "${HOSTTYPE}" == 'x86_64' ]]; then
|
if [[ ${HOSTTYPE} == 'x86_64' ]]; then
|
||||||
platCpu='amd64'
|
platCpu='amd64'
|
||||||
else
|
else
|
||||||
platCpu='arm64'
|
platCpu='arm64'
|
||||||
@@ -60,6 +60,8 @@ 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}"
|
||||||
|
PLATFORM="${PLATFORM:-$(echo_platform)}"
|
||||||
|
|
||||||
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}"
|
||||||
@@ -97,25 +99,27 @@ docker_build_image() {
|
|||||||
|
|
||||||
} >"${dockerfile}"
|
} >"${dockerfile}"
|
||||||
|
|
||||||
echo_info "building ${image_tag}"
|
docker buildx build \
|
||||||
docker build \
|
--platform "${PLATFORM}" \
|
||||||
--platform "$(echo_platform)" \
|
|
||||||
-t "${image_tag}" \
|
-t "${image_tag}" \
|
||||||
-f "${dockerfile}" \
|
-f "${dockerfile}" \
|
||||||
. || return 1
|
. || return 1
|
||||||
|
|
||||||
# if a docker registry is defined, push to it
|
# if a docker registry is defined, push to it
|
||||||
if [[ "${DOCKER_REGISTRY}" != '' ]]; then
|
if [[ ${DOCKER_REGISTRY} != '' ]]; then
|
||||||
docker tag "${image_tag}" "${DOCKER_REGISTRY}/${image_tag}"
|
|
||||||
docker login \
|
docker login \
|
||||||
-u "${DOCKER_REGISTRY_USER}" \
|
-u "${DOCKER_REGISTRY_USER}" \
|
||||||
-p "${DOCKER_REGISTRY_PASS}" \
|
-p "${DOCKER_REGISTRY_PASS}" \
|
||||||
"${DOCKER_REGISTRY}"
|
"${DOCKER_REGISTRY}"
|
||||||
docker push \
|
|
||||||
--platform "$(echo_platform)" \
|
docker buildx build \
|
||||||
"${DOCKER_REGISTRY}/${image_tag}"
|
--push \
|
||||||
|
--platform "${PLATFORM}" \
|
||||||
|
-t "${DOCKER_REGISTRY}/${image_tag}" \
|
||||||
|
-f "${dockerfile}" \
|
||||||
|
. || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker system prune -f
|
docker system prune -f
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -161,23 +165,21 @@ docker_run_image() {
|
|||||||
|
|
||||||
for distro in "${DISTROS[@]}"; do
|
for distro in "${DISTROS[@]}"; do
|
||||||
image_tag="$(set_distro_image_tag "${distro}")"
|
image_tag="$(set_distro_image_tag "${distro}")"
|
||||||
|
|
||||||
# if a docker registry is defined, pull from it
|
# if a docker registry is defined, pull from it
|
||||||
if [[ "${DOCKER_REGISTRY}" != '' ]]; then
|
if [[ ${DOCKER_REGISTRY} != '' ]]; then
|
||||||
docker login \
|
docker login \
|
||||||
-u "${DOCKER_REGISTRY_USER}" \
|
-u "${DOCKER_REGISTRY_USER}" \
|
||||||
-p "${DOCKER_REGISTRY_PASS}" \
|
-p "${DOCKER_REGISTRY_PASS}" \
|
||||||
"${DOCKER_REGISTRY}"
|
"${DOCKER_REGISTRY}"
|
||||||
|
|
||||||
docker pull \
|
docker pull \
|
||||||
--platform "$(echo_platform)" \
|
|
||||||
"${DOCKER_REGISTRY}/${image_tag}"
|
"${DOCKER_REGISTRY}/${image_tag}"
|
||||||
docker tag "${DOCKER_REGISTRY}/${image_tag}" "${image_tag}"
|
docker tag "${DOCKER_REGISTRY}/${image_tag}" "${image_tag}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo_info "running ffmpeg build for ${image_tag}"
|
echo_info "running ffmpeg build for ${image_tag}"
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
--platform "$(echo_platform)" \
|
|
||||||
-v "${REPO_DIR}":/workdir \
|
-v "${REPO_DIR}":/workdir \
|
||||||
-w /workdir \
|
-w /workdir \
|
||||||
-e DEBUG="${DEBUG}" \
|
-e DEBUG="${DEBUG}" \
|
||||||
@@ -185,3 +187,18 @@ docker_run_image() {
|
|||||||
./scripts/build.sh || return 1
|
./scripts/build.sh || return 1
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FB_FUNC_NAMES+=('docker_build_multiarch_image')
|
||||||
|
FB_FUNC_DESCS['docker_build_multiarch_image']='build multiarch docker image'
|
||||||
|
FB_FUNC_COMPLETION['docker_build_multiarch_image']="${VALID_DOCKER_IMAGES[*]}"
|
||||||
|
docker_build_multiarch_image() {
|
||||||
|
validate_selected_image "$@" || return 1
|
||||||
|
check_docker || return 1
|
||||||
|
PLATFORM='linux/amd64,linux/arm64'
|
||||||
|
docker buildx create \
|
||||||
|
--use \
|
||||||
|
--platform="${PLATFORM}" \
|
||||||
|
--name my-multiplatform-builder \
|
||||||
|
--driver=docker-container
|
||||||
|
docker_build_image "$@"
|
||||||
|
}
|
||||||
|
|||||||
4
main.sh
4
main.sh
@@ -40,8 +40,8 @@ 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/}"
|
||||||
if [[ $DEBUG == 1 ]]; then set -x ; fi
|
if [[ $DEBUG == 1 ]]; then set -x; fi
|
||||||
$cmd $@' >"${ENTRY_SCRIPT}"
|
$cmd $@' >"${ENTRY_SCRIPT}"
|
||||||
chmod +x "${ENTRY_SCRIPT}"
|
chmod +x "${ENTRY_SCRIPT}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
1
scripts/docker_build_multiarch_image.sh
Symbolic link
1
scripts/docker_build_multiarch_image.sh
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
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/}"
|
||||||
if [[ $DEBUG == 1 ]]; then set -x ; fi
|
if [[ $DEBUG == 1 ]]; then set -x; fi
|
||||||
$cmd $@
|
$cmd $@
|
||||||
|
|||||||
Reference in New Issue
Block a user