unstable.yml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. name: Unstable Build
  2. on:
  3. schedule:
  4. - cron: "0 5 * * *"
  5. workflow_dispatch:
  6. jobs:
  7. version:
  8. runs-on: ubuntu-latest
  9. outputs:
  10. base: unstable
  11. date: unstable-${{ steps.date.outputs.date }}
  12. prosody_version: prosody-${{ steps.prosody_version.outputs.version }}
  13. jicofo_version: jicofo-${{ steps.jicofo_version.outputs.version }}
  14. web_version: web-${{ steps.web_version.outputs.version }}
  15. jvb_version: jvb-${{ steps.jvb_version.outputs.version }}
  16. jibri_version: jibri-${{ steps.jibri_version.outputs.version }}
  17. jigasi_version: jigasi-${{ steps.jigasi_version.outputs.version }}
  18. steps:
  19. - name: Get current date
  20. id: date
  21. run: echo "date=$(date +%F)">> $GITHUB_OUTPUT
  22. - name: Prosody gpg key
  23. id: prosody_gpg_key
  24. run: curl --location --silent --show-error https://prosody.im/files/prosody-debian-packages.key | sudo dd of=/etc/apt/keyrings/prosody.gpg
  25. - name: Prosody dsa1024 key support
  26. run: echo 'APT::Key::Assert-Pubkey-Algo ">=rsa2048,ed25519,ed448,dsa1024";' | sudo tee /etc/apt/apt.conf.d/99weakkey-warning
  27. - name: Prosody repo
  28. id: prosody_repo
  29. run: echo "deb [signed-by=/etc/apt/keyrings/prosody.gpg] https://packages.prosody.im/debian bookworm main" | sudo tee /etc/apt/sources.list.d/prosody.list
  30. - name: Jitsi repo
  31. uses: myci-actions/add-deb-repo@11
  32. with:
  33. repo: deb https://download.jitsi.org/ unstable/
  34. repo-name: jitsi
  35. keys-asc: https://download.jitsi.org/jitsi-key.gpg.key
  36. - name: Get current jicofo versions
  37. id: jicofo_version
  38. 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
  39. - name: Get current jitsi-meet-web versions
  40. id: web_version
  41. 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
  42. - name: Get current jvb versions
  43. id: jvb_version
  44. 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
  45. - name: Get current prosody versions
  46. id: prosody_version
  47. run: echo "version=$( apt-cache madison prosody | awk '{print $3;}' | head -1 | cut -d'-' -f1 )" >> $GITHUB_OUTPUT
  48. - name: Get current jibri version
  49. id: jibri_version
  50. run: echo "version=$( apt-cache show jibri | head -10 | grep Version | awk '{print $2}' )" >> $GITHUB_OUTPUT
  51. - name: Get current jigasi version
  52. id: jigasi_version
  53. run: echo "version=$( apt-cache show jigasi | head -10 | grep Version | awk '{print $2}' )" >> $GITHUB_OUTPUT
  54. base-arch:
  55. runs-on: ${{ matrix.config.os }}
  56. strategy:
  57. fail-fast: false
  58. matrix:
  59. config:
  60. - { os: ubuntu-24.04, arch: amd64 }
  61. - { os: ubuntu-24.04-arm, arch: arm64 }
  62. needs: version
  63. steps:
  64. - name: Check out code
  65. uses: actions/checkout@v4
  66. - name: Setup Docker Buildx
  67. uses: docker/setup-buildx-action@v3
  68. with:
  69. driver: docker
  70. - name: Login to DockerHub
  71. uses: docker/login-action@v3
  72. with:
  73. username: ${{ secrets.DOCKERHUB_USERNAME }}
  74. password: ${{ secrets.DOCKERHUB_TOKEN }}
  75. - name: Build and push
  76. uses: docker/build-push-action@v6
  77. with:
  78. push: true
  79. context: ./base
  80. tags: |
  81. ${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  82. ${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  83. build-args: |
  84. JITSI_RELEASE=unstable
  85. base:
  86. runs-on: ubuntu-latest
  87. needs: [version, base-arch]
  88. steps:
  89. - name: Login to DockerHub
  90. uses: docker/login-action@v3
  91. with:
  92. username: ${{ secrets.DOCKERHUB_USERNAME }}
  93. password: ${{ secrets.DOCKERHUB_TOKEN }}
  94. - name: Create Docker Manifest
  95. uses: int128/docker-manifest-create-action@v2
  96. with:
  97. tags: |
  98. ${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}
  99. ${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.date }}
  100. sources: |
  101. ${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}-amd64
  102. ${{ secrets.JITSI_REPO }}/base:${{ needs.version.outputs.base }}-arm64
  103. base-java-arch:
  104. runs-on: ${{ matrix.config.os }}
  105. strategy:
  106. fail-fast: false
  107. matrix:
  108. config:
  109. - { os: ubuntu-24.04, arch: amd64 }
  110. - { os: ubuntu-24.04-arm, arch: arm64 }
  111. needs: [version, base]
  112. steps:
  113. - name: Check out code
  114. uses: actions/checkout@v4
  115. - name: Setup Docker Buildx
  116. uses: docker/setup-buildx-action@v3
  117. with:
  118. driver: docker
  119. - name: Login to DockerHub
  120. uses: docker/login-action@v3
  121. with:
  122. username: ${{ secrets.DOCKERHUB_USERNAME }}
  123. password: ${{ secrets.DOCKERHUB_TOKEN }}
  124. - name: Build and push
  125. uses: docker/build-push-action@v6
  126. with:
  127. push: true
  128. context: ./base-java
  129. tags: |
  130. ${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  131. ${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  132. build-args: |
  133. JITSI_REPO=${{ secrets.JITSI_REPO }}
  134. BASE_TAG=${{ needs.version.outputs.base }}
  135. base-java:
  136. runs-on: ubuntu-latest
  137. needs: [version, base-java-arch]
  138. steps:
  139. - name: Login to DockerHub
  140. uses: docker/login-action@v3
  141. with:
  142. username: ${{ secrets.DOCKERHUB_USERNAME }}
  143. password: ${{ secrets.DOCKERHUB_TOKEN }}
  144. - name: Create Docker Manifest
  145. uses: int128/docker-manifest-create-action@v2
  146. with:
  147. tags: |
  148. ${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}
  149. ${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.date }}
  150. sources: |
  151. ${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}-amd64
  152. ${{ secrets.JITSI_REPO }}/base-java:${{ needs.version.outputs.base }}-arm64
  153. jibri-arch:
  154. runs-on: ${{ matrix.config.os }}
  155. strategy:
  156. fail-fast: false
  157. matrix:
  158. config:
  159. - { os: ubuntu-24.04, arch: amd64 }
  160. - { os: ubuntu-24.04-arm, arch: arm64 }
  161. needs: [version, base-java]
  162. steps:
  163. - name: Check out code
  164. uses: actions/checkout@v4
  165. - name: Setup Docker Buildx
  166. uses: docker/setup-buildx-action@v3
  167. with:
  168. driver: docker
  169. - name: Login to DockerHub
  170. uses: docker/login-action@v3
  171. with:
  172. username: ${{ secrets.DOCKERHUB_USERNAME }}
  173. password: ${{ secrets.DOCKERHUB_TOKEN }}
  174. - name: Build and push
  175. uses: docker/build-push-action@v6
  176. with:
  177. push: true
  178. context: ./jibri
  179. tags: |
  180. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  181. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  182. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.jibri_version }}-${{ matrix.config.arch }}
  183. build-args: |
  184. JITSI_REPO=${{ secrets.JITSI_REPO }}
  185. BASE_TAG=${{ needs.version.outputs.base }}
  186. jibri:
  187. runs-on: ubuntu-latest
  188. needs: [version, jibri-arch]
  189. steps:
  190. - name: Login to DockerHub
  191. uses: docker/login-action@v3
  192. with:
  193. username: ${{ secrets.DOCKERHUB_USERNAME }}
  194. password: ${{ secrets.DOCKERHUB_TOKEN }}
  195. - name: Create Docker Manifest
  196. uses: int128/docker-manifest-create-action@v2
  197. with:
  198. tags: |
  199. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}
  200. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.date }}
  201. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.jibri_version }}
  202. sources: |
  203. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}-amd64
  204. ${{ secrets.JITSI_REPO }}/jibri:${{ needs.version.outputs.base }}-arm64
  205. jicofo-arch:
  206. runs-on: ${{ matrix.config.os }}
  207. strategy:
  208. fail-fast: false
  209. matrix:
  210. config:
  211. - { os: ubuntu-24.04, arch: amd64 }
  212. - { os: ubuntu-24.04-arm, arch: arm64 }
  213. needs: [version, base-java]
  214. steps:
  215. - name: Check out code
  216. uses: actions/checkout@v4
  217. - name: Setup Docker Buildx
  218. uses: docker/setup-buildx-action@v3
  219. with:
  220. driver: docker
  221. - name: Login to DockerHub
  222. uses: docker/login-action@v3
  223. with:
  224. username: ${{ secrets.DOCKERHUB_USERNAME }}
  225. password: ${{ secrets.DOCKERHUB_TOKEN }}
  226. - name: Build and push
  227. uses: docker/build-push-action@v6
  228. with:
  229. push: true
  230. context: ./jicofo
  231. tags: |
  232. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  233. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  234. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.jicofo_version }}-${{ matrix.config.arch }}
  235. build-args: |
  236. JITSI_REPO=${{ secrets.JITSI_REPO }}
  237. BASE_TAG=${{ needs.version.outputs.base }}
  238. jicofo:
  239. runs-on: ubuntu-latest
  240. needs: [version, jicofo-arch]
  241. steps:
  242. - name: Login to DockerHub
  243. uses: docker/login-action@v3
  244. with:
  245. username: ${{ secrets.DOCKERHUB_USERNAME }}
  246. password: ${{ secrets.DOCKERHUB_TOKEN }}
  247. - name: Create Docker Manifest
  248. uses: int128/docker-manifest-create-action@v2
  249. with:
  250. tags: |
  251. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}
  252. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.date }}
  253. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.jicofo_version }}
  254. sources: |
  255. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}-amd64
  256. ${{ secrets.JITSI_REPO }}/jicofo:${{ needs.version.outputs.base }}-arm64
  257. jigasi-arch:
  258. runs-on: ${{ matrix.config.os }}
  259. strategy:
  260. fail-fast: false
  261. matrix:
  262. config:
  263. - { os: ubuntu-24.04, arch: amd64 }
  264. - { os: ubuntu-24.04-arm, arch: arm64 }
  265. needs: [version, base-java]
  266. steps:
  267. - name: Check out code
  268. uses: actions/checkout@v4
  269. - name: Setup Docker Buildx
  270. uses: docker/setup-buildx-action@v3
  271. with:
  272. driver: docker
  273. - name: Login to DockerHub
  274. uses: docker/login-action@v3
  275. with:
  276. username: ${{ secrets.DOCKERHUB_USERNAME }}
  277. password: ${{ secrets.DOCKERHUB_TOKEN }}
  278. - name: Build and push
  279. uses: docker/build-push-action@v6
  280. with:
  281. push: true
  282. context: ./jigasi
  283. tags: |
  284. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  285. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  286. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.jigasi_version }}-${{ matrix.config.arch }}
  287. build-args: |
  288. JITSI_REPO=${{ secrets.JITSI_REPO }}
  289. BASE_TAG=${{ needs.version.outputs.base }}
  290. jigasi:
  291. runs-on: ubuntu-latest
  292. needs: [version, jigasi-arch]
  293. steps:
  294. - name: Login to DockerHub
  295. uses: docker/login-action@v3
  296. with:
  297. username: ${{ secrets.DOCKERHUB_USERNAME }}
  298. password: ${{ secrets.DOCKERHUB_TOKEN }}
  299. - name: Create Docker Manifest
  300. uses: int128/docker-manifest-create-action@v2
  301. with:
  302. tags: |
  303. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}
  304. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.date }}
  305. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.jigasi_version }}
  306. sources: |
  307. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}-amd64
  308. ${{ secrets.JITSI_REPO }}/jigasi:${{ needs.version.outputs.base }}-arm64
  309. jvb-arch:
  310. runs-on: ${{ matrix.config.os }}
  311. strategy:
  312. fail-fast: false
  313. matrix:
  314. config:
  315. - { os: ubuntu-24.04, arch: amd64 }
  316. - { os: ubuntu-24.04-arm, arch: arm64 }
  317. needs: [version, base-java]
  318. steps:
  319. - name: Check out code
  320. uses: actions/checkout@v4
  321. - name: Setup Docker Buildx
  322. uses: docker/setup-buildx-action@v3
  323. with:
  324. driver: docker
  325. - name: Login to DockerHub
  326. uses: docker/login-action@v3
  327. with:
  328. username: ${{ secrets.DOCKERHUB_USERNAME }}
  329. password: ${{ secrets.DOCKERHUB_TOKEN }}
  330. - name: Build and push
  331. uses: docker/build-push-action@v6
  332. with:
  333. push: true
  334. context: ./jvb
  335. tags: |
  336. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  337. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  338. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.jvb_version }}-${{ matrix.config.arch }}
  339. build-args: |
  340. JITSI_REPO=${{ secrets.JITSI_REPO }}
  341. BASE_TAG=${{ needs.version.outputs.base }}
  342. jvb:
  343. runs-on: ubuntu-latest
  344. needs: [version, jvb-arch]
  345. steps:
  346. - name: Login to DockerHub
  347. uses: docker/login-action@v3
  348. with:
  349. username: ${{ secrets.DOCKERHUB_USERNAME }}
  350. password: ${{ secrets.DOCKERHUB_TOKEN }}
  351. - name: Create Docker Manifest
  352. uses: int128/docker-manifest-create-action@v2
  353. with:
  354. tags: |
  355. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}
  356. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.date }}
  357. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.jvb_version }}
  358. sources: |
  359. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}-amd64
  360. ${{ secrets.JITSI_REPO }}/jvb:${{ needs.version.outputs.base }}-arm64
  361. prosody-arch:
  362. runs-on: ${{ matrix.config.os }}
  363. strategy:
  364. fail-fast: false
  365. matrix:
  366. config:
  367. - { os: ubuntu-24.04, arch: amd64 }
  368. - { os: ubuntu-24.04-arm, arch: arm64 }
  369. needs: [version, base]
  370. steps:
  371. - name: Check out code
  372. uses: actions/checkout@v4
  373. - name: Setup Docker Buildx
  374. uses: docker/setup-buildx-action@v3
  375. with:
  376. driver: docker
  377. - name: Login to DockerHub
  378. uses: docker/login-action@v3
  379. with:
  380. username: ${{ secrets.DOCKERHUB_USERNAME }}
  381. password: ${{ secrets.DOCKERHUB_TOKEN }}
  382. - name: Build and push
  383. uses: docker/build-push-action@v6
  384. with:
  385. push: true
  386. context: ./prosody
  387. tags: |
  388. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  389. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  390. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.prosody_version }}-${{ matrix.config.arch }}
  391. build-args: |
  392. JITSI_REPO=${{ secrets.JITSI_REPO }}
  393. BASE_TAG=${{ needs.version.outputs.base }}
  394. prosody:
  395. runs-on: ubuntu-latest
  396. needs: [version, prosody-arch]
  397. steps:
  398. - name: Login to DockerHub
  399. uses: docker/login-action@v3
  400. with:
  401. username: ${{ secrets.DOCKERHUB_USERNAME }}
  402. password: ${{ secrets.DOCKERHUB_TOKEN }}
  403. - name: Create Docker Manifest
  404. uses: int128/docker-manifest-create-action@v2
  405. with:
  406. tags: |
  407. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}
  408. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.date }}
  409. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.prosody_version }}
  410. sources: |
  411. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}-amd64
  412. ${{ secrets.JITSI_REPO }}/prosody:${{ needs.version.outputs.base }}-arm64
  413. web-arch:
  414. runs-on: ${{ matrix.config.os }}
  415. strategy:
  416. fail-fast: false
  417. matrix:
  418. config:
  419. - { os: ubuntu-24.04, arch: amd64 }
  420. - { os: ubuntu-24.04-arm, arch: arm64 }
  421. needs: [version, base]
  422. steps:
  423. - name: Check out code
  424. uses: actions/checkout@v4
  425. - name: Setup Docker Buildx
  426. uses: docker/setup-buildx-action@v3
  427. with:
  428. driver: docker
  429. - name: Login to DockerHub
  430. uses: docker/login-action@v3
  431. with:
  432. username: ${{ secrets.DOCKERHUB_USERNAME }}
  433. password: ${{ secrets.DOCKERHUB_TOKEN }}
  434. - name: Build and push
  435. uses: docker/build-push-action@v6
  436. with:
  437. push: true
  438. context: ./web
  439. tags: |
  440. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}-${{ matrix.config.arch }}
  441. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.date }}-${{ matrix.config.arch }}
  442. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.web_version }}-${{ matrix.config.arch }}
  443. build-args: |
  444. JITSI_REPO=${{ secrets.JITSI_REPO }}
  445. BASE_TAG=${{ needs.version.outputs.base }}
  446. web:
  447. runs-on: ubuntu-latest
  448. needs: [version, web-arch]
  449. steps:
  450. - name: Login to DockerHub
  451. uses: docker/login-action@v3
  452. with:
  453. username: ${{ secrets.DOCKERHUB_USERNAME }}
  454. password: ${{ secrets.DOCKERHUB_TOKEN }}
  455. - name: Create Docker Manifest
  456. uses: int128/docker-manifest-create-action@v2
  457. with:
  458. tags: |
  459. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}
  460. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.date }}
  461. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.web_version }}
  462. sources: |
  463. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}-amd64
  464. ${{ secrets.JITSI_REPO }}/web:${{ needs.version.outputs.base }}-arm64