From c3c28ef06ab89ab3398f4706392d5f97d5ad5244 Mon Sep 17 00:00:00 2001 From: Conrad Date: Mon, 19 May 2025 22:09:47 +0200 Subject: [PATCH] major: first build for janus docker --- .github/workflows/ci.yml | 102 +++++++++++++++++++++++++++++++++++++++ Dockerfile | 46 ++++++++++++++++++ README.md | 3 +- 3 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml create mode 100644 Dockerfile diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..88081d7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,102 @@ +name: Tag & Build + +on: + push: + branches: + - dev + - master + - renovate/** + paths-ignore: + - "**/.gitignore" + - "**/.vscode/**" + - "**/README.md" + - "**/CHANGELOG.md" + - "**/docs/**" + workflow_dispatch: + pull_request: + branches: + - dev + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + tag: + runs-on: ubuntu-latest + if: (github.ref_name == 'master' || github.ref_name == 'dev') && github.event_name == 'push' + permissions: + contents: write # for the tags + outputs: + version: ${{ steps.git_version.outputs.version }} + + steps: + - uses: actions/checkout@v4 + with: + fetch-tags: true + ref: ${{ github.ref }} + fetch-depth: 0 + + - name: setup git + run: | + git config --local user.email "15138480+creyD@users.noreply.github.com" + git config --local user.name "creyD" + + - name: set version format + id: version_format + run: | + if [[ ${{ github.ref_name }} == 'master' ]]; then + echo "version_format=\${major}.\${minor}.\${patch}" >> $GITHUB_OUTPUT + else + echo "version_format=\${major}.\${minor}.\${patch}rc\${increment}" >> $GITHUB_OUTPUT + fi + + - name: Git Version + uses: PaulHatch/semantic-version@v5.4.0 + id: git_version + with: + tag_prefix: "" + major_pattern: "breaking:" + minor_pattern: "feat:" + enable_prerelease_mode: false + version_format: ${{ steps.version_format.outputs.version_format }} + + - name: Create & Push Tag + run: | + git tag ${{ steps.git_version.outputs.version }} + git push origin ${{ steps.git_version.outputs.version }} + + build_and_push: + runs-on: ubuntu-latest + permissions: write-all + if: github.event_name == 'push' + needs: tag + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{ github.ref_name }} + tags: latest + + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + build-args: | + VERSION=${{ needs.tag.outputs.version }}-${{ github.ref_name }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f2e9c41 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +# unmodified from https://github.com/strukturag/nextcloud-spreed-signaling/blob/master/docker/janus/Dockerfile +FROM alpine:3 + +RUN apk add --no-cache curl autoconf automake libtool pkgconf build-base \ + glib-dev libconfig-dev libnice-dev jansson-dev openssl-dev zlib libsrtp-dev \ + gengetopt libwebsockets-dev git curl-dev libogg-dev + +# usrsctp +# 03 Nov 2024 +ARG USRSCTP_VERSION=b28f0b55b00bde67f6be80d6623e2775b88026b8 + +RUN cd /tmp && \ + git clone https://github.com/sctplab/usrsctp && \ + cd usrsctp && \ + git checkout $USRSCTP_VERSION && \ + ./bootstrap && \ + ./configure --prefix=/usr && \ + make -j$(nproc) && make install + +# libsrtp +ARG LIBSRTP_VERSION=2.6.0 +RUN cd /tmp && \ + wget https://github.com/cisco/libsrtp/archive/v$LIBSRTP_VERSION.tar.gz && \ + tar xfv v$LIBSRTP_VERSION.tar.gz && \ + cd libsrtp-$LIBSRTP_VERSION && \ + ./configure --prefix=/usr --enable-openssl && \ + make shared_library -j$(nproc) && \ + make install && \ + rm -fr /libsrtp-$LIBSRTP_VERSION && \ + rm -f /v$LIBSRTP_VERSION.tar.gz + +# JANUS +ARG JANUS_VERSION=1.3.0 +RUN mkdir -p /usr/src/janus && \ + cd /usr/src/janus && \ + curl -L https://github.com/meetecho/janus-gateway/archive/v$JANUS_VERSION.tar.gz | tar -xz && \ + cd /usr/src/janus/janus-gateway-$JANUS_VERSION && \ + ./autogen.sh && \ + ./configure --disable-rabbitmq --disable-mqtt --disable-boringssl && \ + make -j$(nproc) && \ + make install && \ + make configs + +WORKDIR /usr/src/janus/janus-gateway-$JANUS_VERSION + +CMD [ "janus" ] diff --git a/README.md b/README.md index 2b916db..d462a0d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # janus -Janus docker config for nextcloud talk + +Janus docker config for nextcloud talk unmodified from https://github.com/strukturag/nextcloud-spreed-signaling/blob/master/docker/janus/Dockerfile and prebuild within the github action workflow.