name: Unstable Build on: pull_request: 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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./base tags: | jitsi/base:${{ needs.version.outputs.base }} jitsi/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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./base-java tags: | jitsi/base-java:${{ needs.version.outputs.base }} jitsi/base-java:${{ needs.version.outputs.date }} build-args: | JITSI_REPO=jitsi 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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./jibri tags: | jitsi/jibri:${{ needs.version.outputs.base }} jitsi/jibri:${{ needs.version.outputs.date }} jitsi/jibri:${{ needs.version.outputs.jibri_version }} build-args: | JITSI_REPO=jitsi 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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./jicofo tags: | jitsi/jicofo:${{ needs.version.outputs.base }} jitsi/jicofo:${{ needs.version.outputs.date }} jitsi/jicofo:${{ needs.version.outputs.jicofo_version }} build-args: | JITSI_REPO=jitsi 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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./jigasi tags: | jitsi/jigasi:${{ needs.version.outputs.base }} jitsi/jigasi:${{ needs.version.outputs.date }} jitsi/jigasi:${{ needs.version.outputs.jigasi_version }} build-args: | JITSI_REPO=jitsi 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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./jvb tags: | jitsi/jvb:${{ needs.version.outputs.base }} jitsi/jvb:${{ needs.version.outputs.date }} jitsi/jvb:${{ needs.version.outputs.jvb_version }} build-args: | JITSI_REPO=jitsi 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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./prosody tags: | jitsi/prosody:${{ needs.version.outputs.base }} jitsi/prosody:${{ needs.version.outputs.date }} jitsi/prosody:${{ needs.version.outputs.prosody_version }} build-args: | JITSI_REPO=jitsi 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 if: ${{ github.event_name != 'pull_request' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v2 if: ${{ github.event_name != 'pull_request' }} 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 - name: Dryrun uses: docker/build-push-action@v2 if: ${{ github.event_name == 'pull_request' }} with: context: ./web tags: | jitsi/web:${{ needs.version.outputs.base }} jitsi/web:${{ needs.version.outputs.date }} jitsi/web:${{ needs.version.outputs.web_version }} build-args: | JITSI_REPO=jitsi BASE_TAG=${{ needs.version.outputs.base }} platforms: linux/amd64,linux/arm64 cache-from: type=gha cache-to: type=gha,mode=max