123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- ARG BUILDER_IMAGE=debian:bookworm-20240513
- FROM ${BUILDER_IMAGE} AS builder
- ARG MAINTAINER_NAME="Andrey Volk"
- ARG MAINTAINER_EMAIL="andrey@signalwire.com"
- # Credentials
- ARG REPO_DOMAIN=freeswitch.signalwire.com
- ARG REPO_USERNAME=user
- ARG BUILD_NUMBER=42
- ARG GIT_SHA=0000000000
- ARG DATA_DIR=/data
- ARG CODENAME=bookworm
- ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
- MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
- SHELL ["/bin/bash", "-c"]
- RUN apt-get -q update && \
- DEBIAN_FRONTEND=noninteractive apt-get -yq install \
- apt-transport-https \
- build-essential \
- ca-certificates \
- cmake \
- curl \
- debhelper \
- devscripts \
- dh-autoreconf \
- dos2unix \
- doxygen \
- git \
- graphviz \
- libglib2.0-dev \
- libssl-dev \
- lsb-release \
- pkg-config \
- wget
- RUN update-ca-certificates --fresh
- RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
- chmod +x ~/.env
- RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
- deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
- deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
- EOF
- RUN git config --global --add safe.directory '*' \
- && git config --global user.name "${MAINTAINER_NAME}" \
- && git config --global user.email "${MAINTAINER_EMAIL}"
- # Bootstrap and Build
- COPY . ${DATA_DIR}
- WORKDIR ${DATA_DIR}
- RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
- RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
- RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
- RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
- printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
- printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
- printf "password " >> /etc/apt/auth.conf && \
- cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
- sha512sum /run/secrets/REPO_PASSWORD && \
- curl \
- --fail \
- --netrc-file /etc/apt/auth.conf \
- --output ${GPG_KEY} \
- https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
- file ${GPG_KEY} && \
- apt-get --quiet update && \
- mk-build-deps \
- --install \
- --remove debian/control \
- --tool "apt-get --yes --no-install-recommends" && \
- apt-get --yes --fix-broken install && \
- rm -f /etc/apt/auth.conf
- ENV DEB_BUILD_OPTIONS="parallel=1"
- RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
- --force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
- RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
- RUN dpkg-source \
- --diff-ignore=.* \
- --compression=xz \
- --compression-level=9 \
- --build \
- . \
- && debuild -b -us -uc \
- && mkdir OUT \
- && mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
- # Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
- FROM scratch
- COPY --from=builder /data/OUT/ /
|