Files
jitsi-meet-deployment/.github/workflows/unstable.yml
Saúl Ibarra Corretgé b3abfc0b0b ci: split unstable build and test workflows (#1601)
* ci: split unstable build and test workflows

In order to make multi-arch builds the buildx action will use the
docker-container driver, which does not support loading images, and thus
the jvb image won't be built based on the "base-java" image, in turn based
on the "base" image. That works only when pushing.

If we setup buildx to use the "docker" driver it will just build for the
current architecture, but it will properly load images and the base
images will be used correctly.

One downside is that jobs cannot be run in parallel, but it seems to be Fast Enough (R) for now.
2023-09-12 10:29:30 +02:00

318 lines
12 KiB
YAML

name: Unstable Build
on:
schedule:
- cron: "0 6 * * *"
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 bullseye 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:
runs-on: ubuntu-latest
needs: version
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./base
tags: |
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.date }}
build-args: |
JITSI_RELEASE=unstable
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
base-java:
runs-on: ubuntu-latest
needs: [version, base]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./base-java
tags: |
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}
${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.date }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
jibri:
runs-on: ubuntu-latest
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./jibri
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 }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
jicofo:
runs-on: ubuntu-latest
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./jicofo
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 }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
jigasi:
runs-on: ubuntu-latest
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./jigasi
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 }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
jvb:
runs-on: ubuntu-latest
needs: [version, base-java]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./jvb
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 }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
prosody:
runs-on: ubuntu-latest
needs: [version, base]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./prosody
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 }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
web:
runs-on: ubuntu-latest
needs: [version, base]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
context: ./web
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 }}
build-args: |
JITSI_REPO=${{ secrets.JITSI_REPO }}
BASE_TAG=${{ needs.version.outputs.base }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max