Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 35 additions & 58 deletions .github/workflows/build-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@ on:
jobs:
build:
name: Build ${{ matrix.arch }}
runs-on: ubuntu-latest
runs-on: ${{ matrix.runner }}
strategy:
matrix:
arch: [arm64, amd64]
include:
- arch: amd64
runner: ubuntu-latest
- arch: arm64
runner: ubuntu-24.04-arm
steps:
- name: Checkout ceracoder
uses: actions/checkout@v4
Expand All @@ -26,68 +30,41 @@ jobs:
repository: CERALIVE/srt
path: srt

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Build ceracoder for ${{ matrix.arch }}
- name: Install build dependencies
run: |
PLATFORM="linux/${{ matrix.arch }}"

# Create a combined context with both repos
mkdir -p build-context
cp -r srt build-context/
cp -r ceracoder build-context/
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
git \
libssl-dev \
pkg-config \
tclsh \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base

docker buildx build \
--platform "$PLATFORM" \
--load \
-t ceracoder-builder:${{ matrix.arch }} \
-f - build-context <<'DOCKERFILE'
FROM debian:bookworm-slim AS srt-builder
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
git \
libssl-dev \
pkg-config \
tclsh \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /srt
COPY srt/ .
RUN cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DENABLE_APPS=OFF \
-DENABLE_BONDING=ON \
-DENABLE_ENCRYPTION=ON \
&& cmake --build build -j$(nproc) \
&& cmake --install build
- name: Build SRT
run: |
cd srt
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DENABLE_APPS=OFF \
-DENABLE_BONDING=ON \
-DENABLE_ENCRYPTION=ON
cmake --build build -j$(nproc)
sudo cmake --install build

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y \
build-essential \
git \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base \
libssl-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
COPY --from=srt-builder /usr/include/srt /usr/include/srt
COPY --from=srt-builder /usr/lib/*-linux-gnu*/libsrt* /usr/lib/
COPY --from=srt-builder /usr/lib/*-linux-gnu*/pkgconfig/srt.pc /usr/lib/pkgconfig/
RUN ldconfig
WORKDIR /build
COPY ceracoder/ .
RUN make ceracoder
DOCKERFILE
- name: Build ceracoder
run: |
cd ceracoder
make ceracoder

- name: Verify binary was built
run: |
docker run --rm ceracoder-builder:${{ matrix.arch }} ls -la /build/ceracoder
ls -la ceracoder/ceracoder
file ceracoder/ceracoder

- name: Build Summary
run: |
Expand Down
58 changes: 22 additions & 36 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,51 +66,37 @@ jobs:
build:
name: Build (${{ matrix.arch }})
needs: calculate-version
runs-on: ubuntu-latest
runs-on: ${{ matrix.runner }}
strategy:
matrix:
arch: [arm64, amd64]
include:
- arch: amd64
runner: ubuntu-latest
- arch: arm64
runner: ubuntu-24.04-arm
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build in Docker (${{ matrix.arch }})
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
pkg-config \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libsrt-dev

- name: Build (${{ matrix.arch }})
run: |
mkdir -p build-output

cat > Dockerfile.build << 'DOCKERFILE'
FROM debian:bookworm

RUN apt-get update && apt-get install -y \
build-essential \
cmake \
pkg-config \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libsrt-dev \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /src
COPY . .

RUN cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
RUN cmake --build build -j$(nproc)
RUN DESTDIR=/output cmake --install build
DOCKERFILE

docker buildx build \
--platform linux/${{ matrix.arch }} \
--output type=local,dest=build-output \
-f Dockerfile.build \
.
mkdir -p build-output/usr
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build -j$(nproc)
DESTDIR=$PWD/build-output cmake --install build

- name: Install FPM
run: |
Expand Down