unstable.yml 18 KB

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