Skip to content

Commit

Permalink
Update image description from docker/README.md if needed.
Browse files Browse the repository at this point in the history
  • Loading branch information
sobomax committed Jun 23, 2023
1 parent 30fcd1b commit 7b89a7b
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 1 deletion.
9 changes: 8 additions & 1 deletion .github/workflows/dockerhub.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: Push to DockerHub
on: [push, pull_request]

env:
DOCKER_REPO: sippylabs/rtpproxy
PLATFORMS: linux/amd64,linux/i386,linux/arm/v7,linux/arm64
BASE_IMAGE: debian:12-slim

Expand Down Expand Up @@ -41,7 +42,7 @@ jobs:
id: meta
uses: docker/metadata-action@v3
with:
images: sippylabs/rtpproxy
images: ${{ env.DOCKER_REPO }}
tags: |
type=schedule
type=ref,event=branch
Expand Down Expand Up @@ -82,6 +83,12 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ env.PLATFORMS }}

- name: Update DockerHub repo description
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: sh -x docker/update_description.sh docker/README.md

- name: Extract ccaches
run: |
rm -rf ccache
Expand Down
30 changes: 30 additions & 0 deletions docker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Official images of the RTPproxy Project

[![Clean Build@GitHub](https://github.com/sippy/rtpproxy/actions/workflows/cleanbuild.yml/badge.svg?branch=master)](https://github.com/sippy/rtpproxy/actions/workflows/cleanbuild.yml?query=branch%3Amaster++)
[![All-inclusive Build@GitHub](https://github.com/sippy/rtpproxy/actions/workflows/depsbuild.yml/badge.svg?branch=master)](https://github.com/sippy/rtpproxy/actions/workflows/depsbuild.yml?query=branch%3Amaster++)
[![Functional Testing@GitHub](https://github.com/sippy/rtpproxy/actions/workflows/functesting.yml/badge.svg?branch=master)](https://github.com/sippy/rtpproxy/actions/workflows/functesting.yml?query=branch%3Amaster++)
[![Glitching@GitHub](https://github.com/sippy/rtpproxy/actions/workflows/glitching.yml/badge.svg?branch=master)](https://github.com/sippy/rtpproxy/actions/workflows/glitching.yml?query=branch%3Amaster++)
[![OSSFuzz@GitHub](https://github.com/sippy/rtpproxy/actions/workflows/cifuzz.yml/badge.svg?branch=master)](https://github.com/sippy/rtpproxy/actions/workflows/cifuzz.yml?query=branch%3Amaster++)
[![Coverage Status](https://coveralls.io/repos/github/sippy/rtpproxy/badge.svg?branch=master)](https://coveralls.io/github/sippy/rtpproxy?branch=master)
[![Coverity](https://scan.coverity.com/projects/8841/badge.svg)](https://scan.coverity.com/projects/sippy-rtpproxy)

## About

The RTPproxy is a extremely reliable and reasonably high-performance software
proxy for RTP streams that can work together with [OpenSIPS](https://opensips.org),
[Kamailio](https://kamailio.org) or [Sippy B2BUA](https://github.com/sippy/b2bua).

Originally created for handling NAT scenarios, back in 2004-2005, it can also act
as a generic real time datagram relay as well as gateway Real-Time Protocol (RTP)
sessions between IPv4 and IPv6 networks.

The RTPproxy supports many advanced features and is controllable over
multitude of Layer 4 protocols, including Unix Domain, UDP, UDPv6, TCP and TCPv6.

The software allows building scalable distributed SIP networks. The rtpproxy module
included into the OpenSIPS or Kamailio SIP Proxy software allows using multiple
RTPproxy instances running on remote machines for fault-tolerance and
load-balancing purposes.

The image is updated on every commit to the https://github.com/sippy/rtpproxy/
repository.
41 changes: 41 additions & 0 deletions docker/update_description.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/sh

set -e

md5sum_q() {
md5sum "${@}" | awk '{print $1}'
}

# Get the JWT token
TOKEN="$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${DOCKER_USERNAME}'", "password": "'${DOCKER_PASSWORD}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)"
if [ -z "${TOKEN}" -o "${TOKEN}" = "null" ]
then
echo "ERROR: Invalid or no JWT TOKEN returned!" 1>&2
exit 1
fi

BCSUM1="`jq -r .nonce < /dev/null | md5sum_q`"
BCSUM2="`echo | md5sum_q`"

OLDCSUM="`curl -s -H "Authorization: JWT ${TOKEN}" "https://hub.docker.com/v2/repositories/${DOCKER_REPO}/" | jq -r .full_description | md5sum_q`"
NEWCSUM="`md5sum_q "${1}"`"
if [ "${OLDCSUM}" = "${NEWCSUM}" ]
then
# description is up to date already
exit 0
fi
if [ "${OLDCSUM}" = "${BCSUM1}" -o "${OLDCSUM}" = "${BCSUM2}" ]
then
echo "ERROR: Empty description read!" 1>&2
exit 1
fi

MYNAME="`basename "${0}"`"
DESCRIPTION_FILE="`mktemp -t ${MYNAME}.XXXXXXX`"
echo '{"full_description": "' > "${DESCRIPTION_FILE}"
perl -0777 -p -e 's|\n\z||' "${1}" | perl -p -e 's|\n|\\n\n|' >> "${DESCRIPTION_FILE}"
echo '"}' >> "${DESCRIPTION_FILE}"

# Update the description on DockerHub
curl -X PATCH -H "Content-Type: application/json" -H "Authorization: JWT ${TOKEN}" -d @"${DESCRIPTION_FILE}" https://hub.docker.com/v2/repositories/${REPO_USER}/${REPO_NAME}/
rm "${DESCRIPTION_FILE}"

0 comments on commit 7b89a7b

Please sign in to comment.