unstable.yml 19 KB

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