Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
sobomax committed Oct 11, 2024
1 parent b6e5577 commit a9a616a
Show file tree
Hide file tree
Showing 2 changed files with 157 additions and 86 deletions.
214 changes: 133 additions & 81 deletions .github/workflows/rtp.io.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

env:
COMPILER: clang-18
GHCR_REPO: ghcr.io/${{ github.repository_owner }}/opensips
DKR_OPTIONS: --cap-add=SYS_PTRACE --privileged --sysctl net.ipv6.conf.all.disable_ipv6=0

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build_test_rtp_io:
Expand All @@ -19,93 +24,95 @@ jobs:
runs-on: ubuntu-latest
container:
image: sippylabs/rtpproxy:latest
options: --privileged --sysctl net.ipv6.conf.all.disable_ipv6=0
options: ${DKR_OPTIONS}
env:
COMPILER: clang-18
BUILD_OS: ubuntu-latest
PYTHON_VERSION: 3.12
BUILD_OS: ubuntu-latest

steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Install git
run: |
apt-get update
apt-get install -y git lsb-release gnupg2 wget
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Checkout VoIPTests repo
uses: actions/checkout@v4
with:
repository: 'sippy/voiptests'
path: dist/voiptests

- name: Checkout RTPProxy repo
uses: actions/checkout@v4
with:
repository: 'sippy/rtpproxy'
path: dist/rtpproxy

- name: Install dependencies
run: |
sh -x scripts/build/reset_sources.sh
sh -x scripts/build/install_depends.sh
- name: Build
run: |
KEEP_MODULES="dialog sipmsgops sl tm rr maxfwd rtp.io rtpproxy textops"
SKIP_MODULES="usrloc event_routing clusterer rtp_relay"
mkdir tmp
cd modules
mv ${KEEP_MODULES} ${SKIP_MODULES} ../tmp
rm -rf *
cd ../tmp
mv ${KEEP_MODULES} ${SKIP_MODULES} ../modules
cd ..
rmdir tmp
EXCLUDE_MODULES_ADD="${SKIP_MODULES}" sh -x scripts/build/do_build.sh
- name: Build rtp.io module
run: |
apt-get install -y libsrtp2-dev
ONE_MODULE=rtp.io LDFLAGS=-flto CFLAGS=-flto sh -x scripts/build/do_build.sh
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}

- name: Define PYTHON_CMD
run: |
PYTHON_VER="`echo ${{ env.PYTHON_VERSION }} | sed 's|-dev$||'`"
echo "PYTHON_CMD=python${PYTHON_VER}" >> $GITHUB_ENV
- name: Test rtp.io module
env:
MM_TYPE: opensips
MM_BRANCH: master
MM_ROOT: ../..
RTPP_BRANCH: DOCKER
RTPPC_TYPE: rtp.io
RTPPROXY_DIST: ../../dist/rtpproxy
run: |
export CC="${COMPILER}"
cd dist/rtpproxy
./configure
cd ../../dist/voiptests
python -m pip install -r requirements.txt
DEBIAN_FRONTEND=noninteractive apt-get install -y gpp
sh -x ./test_run.sh
build_test_rtp_io_dock:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Install git
run: |
apt-get update
apt-get install -y git lsb-release gnupg2 wget
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Checkout VoIPTests repo
uses: actions/checkout@v4
with:
repository: 'sippy/voiptests'
path: dist/voiptests

- name: Checkout RTPProxy repo
uses: actions/checkout@v4
with:
repository: 'sippy/rtpproxy'
path: dist/rtpproxy

- name: Install dependencies
run: |
sh -x scripts/build/reset_sources.sh
sh -x scripts/build/install_depends.sh
- name: Build
run: |
KEEP_MODULES="dialog sipmsgops sl tm rr maxfwd rtp.io rtpproxy textops"
SKIP_MODULES="usrloc event_routing clusterer rtp_relay"
mkdir tmp
cd modules
mv ${KEEP_MODULES} ${SKIP_MODULES} ../tmp
rm -rf *
cd ../tmp
mv ${KEEP_MODULES} ${SKIP_MODULES} ../modules
cd ..
rmdir tmp
EXCLUDE_MODULES_ADD="${SKIP_MODULES}" sh -x scripts/build/do_build.sh
- name: Build rtp.io module
run: |
apt-get install -y libsrtp2-dev
ONE_MODULE=rtp.io LDFLAGS=-flto CFLAGS=-flto sh -x scripts/build/do_build.sh
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}

- name: Define PYTHON_CMD
run: |
PYTHON_VER="`echo ${{ env.PYTHON_VERSION }} | sed 's|-dev$||'`"
echo "PYTHON_CMD=python${PYTHON_VER}" >> $GITHUB_ENV
- name: Test rtp.io module
env:
MM_TYPE: opensips
MM_BRANCH: master
MM_ROOT: ../..
RTPP_BRANCH: DOCKER
RTPPC_TYPE: rtp.io
RTPPROXY_DIST: ../../dist/rtpproxy
run: |
export CC="${COMPILER}"
cd dist/rtpproxy
./configure
cd ../../dist/voiptests
python -m pip install -r requirements.txt
DEBIAN_FRONTEND=noninteractive apt-get install -y gpp
sh -x ./test_run.sh
build_rtp_io_dock:
name: Build OpenSIPS+rtp.io Container
runs-on: ubuntu-latest
permissions:
packages: write
env:
BASE_IMAGE: ghcr.io/sippy/rtpproxy:latest
COMPILER: clang-18
BUILD_OS: ubuntu-latest
PYTHON_VERSION: 3.12
BASE_IMAGE: ghcr.io/sippy/rtpproxy:latest-debian_12-slim
outputs:
test_matrix: ${{ steps.set-env.outputs.test_matrix }}
build_image: ${{ steps.set-env.outputs.build_image }}

steps:
- uses: actions/checkout@v4
Expand All @@ -131,19 +138,64 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set dynamic environment
id: set-env
run: |
PLATFORMS="`docker manifest inspect ${{ env.BASE_IMAGE }} | \
jq -r '.manifests[] | "\(.platform.os)/\(.platform.architecture)\(if .platform.variant != null then "/\(.platform.variant)" else "" end)"' | \
sort -u | grep -v unknown | paste -sd ','`"
echo "Platforms: ${PLATFORMS}"
GIT_BRANCH="${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}"
BUILD_IMAGE="${{ env.GHCR_REPO }}:rtp.io-${GIT_BRANCH}"
echo "PLATFORMS=${PLATFORMS}" >> $GITHUB_ENV
echo "GIT_BRANCH=${GIT_BRANCH}" >> $GITHUB_ENV
echo "BUILD_IMAGE=${BUILD_IMAGE}" >> $GITHUB_ENV
TEST_MATRIX="`echo ${PLATFORMS} | tr ',' '\n' | jq -R . | jq -s . | tr '\n' ' '`"
echo "test_matrix=${TEST_MATRIX}" >> $GITHUB_OUTPUT
echo "build_image=${BUILD_IMAGE}" >> $GITHUB_OUTPUT
- name: Build Docker image
uses: docker/build-push-action@v6
env:
CACHE_SPEC: "type=registry,ref=${{ env.BUILD_IMAGE }}-buildcache"
with:
context: .
file: ./docker/Dockerfile.rtp.io
build-args: |
BASE_IMAGE=${{ env.BASE_IMAGE }}
platforms: ${{ env.PLATFORMS }}
cache-from: ${{ env.CACHE_SPEC }}
cache-to: ${{ env.CACHE_SPEC }},mode=max
tags: ${{ env.BUILD_IMAGE }}
push: true

test_rtp_io_dock:
name: Test OpenSIPS+rtp.io
needs: build_rtp_io_dock
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test_platform: ${{ fromJSON(needs.build_rtp_io_dock.outputs.test_matrix) }}
env:
PLATFORM: ${{ matrix.test_platform }}
BUILD_IMAGE: ${{ needs.build_rtp_io_dock.outputs.build_image }}

steps:
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v3
with:
platforms: ${{ env.PLATFORM }}

- name: Test ${{ env.PLATFORM }}
run: |
docker pull ${BUILD_IMAGE}
docker run --platform ${PLATFORM} --name test ${DKR_OPTIONS} ${BUILD_IMAGE}
29 changes: 24 additions & 5 deletions docker/Dockerfile.rtp.io
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,40 @@ USER root
# Set Environment Variables
ENV DEBIAN_FRONTEND=noninteractive

WORKDIR /tmp
WORKDIR /src

ARG COMPILER=clang-18
ARG BUILD_OS=ubuntu-latest
RUN --mount=type=bind,source=scripts/build,target=scripts/build \
sh -x scripts/build/install_depends.sh
RUN apt-get install -y gpp python-is-python3 python3-pip
RUN --mount=type=bind,source=dist/voiptests/requirements.txt,target=requirements.txt \
python -m pip install --break-system-packages -U -r requirements.txt

COPY --exclude=.git --exclude=.github . .

RUN pwd
RUN ls -l
COPY --exclude=.git --exclude=.github --exclude=docker --exclude=dist \
. .

ARG KEEP_MODULES="dialog sipmsgops sl tm rr maxfwd rtp.io rtpproxy textops"
ARG SKIP_MODULES="usrloc event_routing clusterer rtp_relay"
RUN mkdir tmp && cd modules && mv ${KEEP_MODULES} ${SKIP_MODULES} ../tmp && \
rm -rf * && cd ../tmp && mv ${KEEP_MODULES} ${SKIP_MODULES} ../modules && \
cd .. && rmdir tmp
RUN EXCLUDE_MODULES_ADD="${SKIP_MODULES}" sh -x scripts/build/do_build.sh
RUN apt-get install -y libsrtp2-dev lld-18
RUN env ONE_MODULE=rtp.io LDFLAGS="-flto -fuse-ld=lld" CFLAGS=-flto \
sh -x scripts/build/do_build.sh
ARG CC=${COMPILER}
COPY --exclude=.git --exclude=.github dist/rtpproxy dist/rtpproxy
RUN cd dist/rtpproxy && ./configure

COPY --exclude=.git --exclude=.github dist/voiptests dist/voiptests

ENV MM_TYPE=opensips
ENV MM_BRANCH=master
ENV MM_ROOT=../..
ENV RTPP_BRANCH=DOCKER
ENV RTPPC_TYPE=rtp.io
ENV RTPPROXY_DIST=../../dist/rtpproxy
ENV ALICE_ARGS="-4"
WORKDIR dist/voiptests
ENTRYPOINT [ "sh", "-x", "./test_run.sh" ]

0 comments on commit a9a616a

Please sign in to comment.