Browse Source

make classic also multiarch

rustdesk 2 years ago
parent
commit
d3a459542d
1 changed files with 68 additions and 7 deletions
  1. 68 7
      .github/workflows/build.yaml

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

@@ -321,20 +321,21 @@ jobs:
321 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 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 326
   docker-classic:
328 327
 
329
-    name: Docker push classic - ${{ matrix.job.name }}
328
+    name: Docker push - ${{ matrix.job.name }}
330 329
     needs: build
331 330
     runs-on: ubuntu-22.04
332 331
     strategy:
333 332
       fail-fast: false
334 333
       matrix:
335 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 340
     steps:
340 341
 
@@ -348,7 +349,7 @@ jobs:
348 349
           path: docker-classic/
349 350
 
350 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 354
       - name: Set up QEMU
354 355
         uses: docker/setup-qemu-action@v2
@@ -369,6 +370,14 @@ jobs:
369 370
         with:
370 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 381
       - name: Build and push Docker image
373 382
         uses: docker/build-push-action@v3
374 383
         with:
@@ -376,9 +385,61 @@ jobs:
376 385
           platforms: ${{ matrix.job.docker_platform }}
377 386
           push: true
378 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 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 444
   deb-package:
384 445