* 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.
318 lines
12 KiB
YAML
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
|