rustdesk лет назад: 2
Родитель
Сommit
d3a459542d
1 измененных файлов с 68 добавлено и 7 удалено
  1. 68 7
      .github/workflows/build.yaml

+ 68 - 7
.github/workflows/build.yaml

@@ -321,20 +321,21 @@ jobs:
321
           extra-images: ${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-amd64,${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-arm64v8,${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-armv7,${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-i386
321
           extra-images: ${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-amd64,${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-arm64v8,${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-armv7,${{ secrets.DOCKER_IMAGE }}:${{ env.LATEST_TAG }}-i386
322
           push: true
322
           push: true
323
 
323
 
324
-
325
             
324
             
326
-  # docker build and push of classic images
325
+  # docker build and push of single-arch images
327
   docker-classic:
326
   docker-classic:
328
 
327
 
329
-    name: Docker push classic - ${{ matrix.job.name }}
328
+    name: Docker push - ${{ matrix.job.name }}
330
     needs: build
329
     needs: build
331
     runs-on: ubuntu-22.04
330
     runs-on: ubuntu-22.04
332
     strategy:
331
     strategy:
333
       fail-fast: false
332
       fail-fast: false
334
       matrix:
333
       matrix:
335
         job:
334
         job:
336
-          - { name: "amd64",   docker_platform: "linux/amd64", tag: "latest" }
337
-          - { name: "arm64v8", docker_platform: "linux/arm64", tag: "latest-arm64v8" }
335
+          - { name: "amd64",   docker_platform: "linux/amd64" }
336
+          - { name: "arm64v8", docker_platform: "linux/arm64" }
337
+          - { name: "armv7",   docker_platform: "linux/arm/v7" }
338
+          - { name: "i386",    docker_platform: "linux/386" }
338
 
339
 
339
     steps:
340
     steps:
340
 
341
 
@@ -348,7 +349,7 @@ jobs:
348
           path: docker-classic/
349
           path: docker-classic/
349
 
350
 
350
       - name: Make binaries executable
351
       - name: Make binaries executable
351
-        run: chmod -v a+x docker-classic/hbb*
352
+        run: chmod -v a+x docker-classic/*
352
 
353
 
353
       - name: Set up QEMU
354
       - name: Set up QEMU
354
         uses: docker/setup-qemu-action@v2
355
         uses: docker/setup-qemu-action@v2
@@ -369,6 +370,14 @@ jobs:
369
         with:
370
         with:
370
           images: registry.hub.docker.com/${{ secrets.DOCKER_IMAGE_CLASSIC }}
371
           images: registry.hub.docker.com/${{ secrets.DOCKER_IMAGE_CLASSIC }}
371
 
372
 
373
+      - name: Get git tag
374
+        id: vars
375
+        run: |
376
+          T=${GITHUB_REF#refs/*/}
377
+          M=${T%%.*}
378
+          echo "GIT_TAG=$T" >> $GITHUB_ENV
379
+          echo "MAJOR_TAG=$M" >> $GITHUB_ENV
380
+
372
       - name: Build and push Docker image
381
       - name: Build and push Docker image
373
         uses: docker/build-push-action@v3
382
         uses: docker/build-push-action@v3
374
         with:
383
         with:
@@ -376,9 +385,61 @@ jobs:
376
           platforms: ${{ matrix.job.docker_platform }}
385
           platforms: ${{ matrix.job.docker_platform }}
377
           push: true
386
           push: true
378
           tags: |
387
           tags: |
379
-            ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ matrix.job.tag }}
388
+            ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.LATEST_TAG }}-${{ matrix.job.name }}
389
+            ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.GIT_TAG }}-${{ matrix.job.name }}
390
+            ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.MAJOR_TAG }}-${{ matrix.job.name }}
380
           labels: ${{ steps.meta.outputs.labels }}
391
           labels: ${{ steps.meta.outputs.labels }}
381
 
392
 
393
+  # docker build and push of multiarch images
394
+  docker-manifest-classic:
395
+
396
+    name: Docker manifest
397
+    needs: docker
398
+    runs-on: ubuntu-22.04
399
+
400
+    steps:
401
+
402
+      - name: Log in to Docker Hub
403
+        if: github.event_name != 'pull_request'
404
+        uses: docker/login-action@v2
405
+        with:
406
+          username: ${{ secrets.DOCKER_USERNAME }}
407
+          password: ${{ secrets.DOCKER_PASSWORD }}
408
+
409
+      - name: Get git tag
410
+        id: vars
411
+        run: |
412
+          T=${GITHUB_REF#refs/*/}
413
+          M=${T%%.*}
414
+          echo "GIT_TAG=$T" >> $GITHUB_ENV
415
+          echo "MAJOR_TAG=$M" >> $GITHUB_ENV
416
+
417
+      # manifest for :1.2.3 tag
418
+      #  this has to run only if invoked by a new tag
419
+      - name: Create and push manifest (:ve.rs.ion)
420
+        uses: Noelware/docker-manifest-action@master
421
+        if: github.event_name != 'workflow_dispatch'
422
+        with:
423
+          base-image: ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.GIT_TAG }}
424
+          extra-images: ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.GIT_TAG }}-amd64,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.GIT_TAG }}-arm64v8,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.GIT_TAG }}-armv7,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.GIT_TAG }}-i386
425
+          push: true
426
+
427
+      # manifest for :1 tag (major release)
428
+      - name: Create and push manifest (:major)
429
+        uses: Noelware/docker-manifest-action@master
430
+        with:
431
+          base-image: ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.MAJOR_TAG }}
432
+          extra-images: ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.MAJOR_TAG }}-amd64,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.MAJOR_TAG }}-arm64v8,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.MAJOR_TAG }}-armv7,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.MAJOR_TAG }}-i386
433
+          push: true
434
+
435
+      # manifest for :latest tag
436
+      - name: Create and push manifest (:latest)
437
+        uses: Noelware/docker-manifest-action@master
438
+        with:
439
+          base-image: ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.LATEST_TAG }}
440
+          extra-images: ${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.LATEST_TAG }}-amd64,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.LATEST_TAG }}-arm64v8,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.LATEST_TAG }}-armv7,${{ secrets.DOCKER_IMAGE_CLASSIC }}:${{ env.LATEST_TAG }}-i386
441
+          push: true
442
+
382
 
443
 
383
   deb-package:
444
   deb-package:
384
 
445