Files
jitsi-meet-deployment/.github/workflows/unstable.yml
Saúl Ibarra Corretgé 17baa95394 fix(ci) avoid OOM when building with QEMU
We seem to be close to the QEMU memory limit in GHA, that's why actions
fail sporadically.

Switch to native builds, aka build amd64 in an amd64 machine and do the
same for arm64.

This means we need to push 2 extra tags: foo-amd64 and foo-arm64 and
then create a manifest to unite them both.

Ref: https://github.com/docker/build-push-action/issues/621
2025-05-27 16:37:23 +02:00

500 lines
19 KiB
YAML

name: Unstable Build
on:
schedule:
- cron: "0 5 * * *"
workflow_dispatch:
jobs:
version:
runs-on: ubuntu-latest
outputs:
base: unstable
date: unstable-${{ steps.date.outputs.date }}
prosody_version: prosody-${{ steps.prosody_version.outputs.version }}
jicofo_version: jicofo-${{ steps.jicofo_version.outputs.version }}
web_version: web-${{ steps.web_version.outputs.version }}
jvb_version: jvb-${{ steps.jvb_version.outputs.version }}
jibri_version: jibri-${{ steps.jibri_version.outputs.version }}
jigasi_version: jigasi-${{ steps.jigasi_version.outputs.version }}
steps:
- name: Get current date
id: date
run: echo "date=$(date +%F)">> $GITHUB_OUTPUT
- name: Prosody gpg key
id: prosody_gpg_key
run: curl --location --silent --show-error https://prosody.im/files/prosody-debian-packages.key | sudo dd of=/etc/apt/trusted.gpg.d/prosody.gpg
- name: Prosody repo
uses: myci-actions/add-deb-repo@11
with:
repo: deb https://packages.prosody.im/debian bookworm main
repo-name: prosody
keys-asc: https://prosody.im/files/prosody-debian-packages.key
- name: Jitsi repo
uses: myci-actions/add-deb-repo@11
with:
repo: deb https://download.jitsi.org/ unstable/
repo-name: jitsi
keys-asc: https://download.jitsi.org/jitsi-key.gpg.key
- name: Get current jicofo versions
id: jicofo_version
run: echo "version=$( apt-cache show jitsi-meet | head -10 | grep '^Depends:' | tr ',' '\n' | grep jicofo | cut -d'=' -f2 | tr -d ')' | awk '{print $1}' )" >> $GITHUB_OUTPUT
- name: Get current jitsi-meet-web versions
id: web_version
run: echo "version=$( apt-cache show jitsi-meet | head -10 | grep '^Depends:' | tr ',' '\n' | grep 'jitsi-meet-web ' | cut -d'=' -f2 | tr -d ')' | awk '{print $1}' )" >> $GITHUB_OUTPUT
- name: Get current jvb versions
id: jvb_version
run: echo "version=$( apt-cache show jitsi-meet | head -10 | grep '^Pre-Depends:'| tr ',' '\n' | grep 'jitsi-videobridge2' | cut -d'=' -f2 | tr -d ')' | awk '{print $1}' )" >> $GITHUB_OUTPUT
- name: Get current prosody versions
id: prosody_version
run: echo "version=$( apt-cache madison prosody | awk '{print $3;}' | head -1 | cut -d'-' -f1 )" >> $GITHUB_OUTPUT
- name: Get current jibri version
id: jibri_version
run: echo "version=$( apt-cache show jibri | head -10 | grep Version | awk '{print $2}' )" >> $GITHUB_OUTPUT
- name: Get current jigasi version
id: jigasi_version
run: echo "version=$( apt-cache show jigasi | head -10 | grep Version | awk '{print $2}' )" >> $GITHUB_OUTPUT
base-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: version
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./base
tags: |
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
build-args: |
JITSI_RELEASE=unstable
cache-from: type=gha
cache-to: type=gha,mode=max
base:
runs-on: ubuntu-latest
needs: [version, base-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.date }}
sources: |
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}-arm64
base-java-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: [version, base]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./base-java
tags: |
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
cache-from: type=gha
cache-to: type=gha,mode=max
base-java:
runs-on: ubuntu-latest
needs: [version, base-java-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.date }}
sources: |
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}-arm64
jibri-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./jibri
tags: |
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.jibri_version }}-${{ matrix.config.arch }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
cache-from: type=gha
cache-to: type=gha,mode=max
jibri:
runs-on: ubuntu-latest
needs: [version, jibri-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.date }}
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.jibri_version }}
sources: |
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}-arm64
jicofo-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./jicofo
tags: |
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.jicofo_version }}-${{ matrix.config.arch }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
cache-from: type=gha
cache-to: type=gha,mode=max
jicofo:
runs-on: ubuntu-latest
needs: [version, jicofo-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.date }}
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.jicofo_version }}
sources: |
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}-arm64
jigasi-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./jigasi
tags: |
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.jigasi_version }}-${{ matrix.config.arch }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
cache-from: type=gha
cache-to: type=gha,mode=max
jigasi:
runs-on: ubuntu-latest
needs: [version, jigasi-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.date }}
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.jigasi_version }}
sources: |
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}-arm64
jvb-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./jvb
tags: |
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.jvb_version }}-${{ matrix.config.arch }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
cache-from: type=gha
cache-to: type=gha,mode=max
jvb:
runs-on: ubuntu-latest
needs: [version, jvb-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.date }}
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.jvb_version }}
sources: |
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}-arm64
prosody-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: [version, base]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./prosody
tags: |
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.prosody_version }}-${{ matrix.config.arch }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
cache-from: type=gha
cache-to: type=gha,mode=max
prosody:
runs-on: ubuntu-latest
needs: [version, prosody-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.date }}
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.prosody_version }}
sources: |
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}-arm64
web-arch:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-24.04, arch: amd64 }
- { os: ubuntu-24.04-arm, arch: arm64 }
needs: [version, base]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
context: ./web
tags: |
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.web_version }}-${{ matrix.config.arch }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
cache-from: type=gha
cache-to: type=gha,mode=max
web:
runs-on: ubuntu-latest
needs: [version, web-arch]
steps:
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create Docker Manifest
uses: int128/docker-manifest-create-action@v2
with:
tags: |
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.date }}
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.web_version }}
sources: |
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}-amd64
${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}-arm64