@@ -407,6 +407,108 @@ jobs:
407
407
path : ArduinoCreateAgent*
408
408
if-no-files-found : error
409
409
410
+ # This job will generate a dmg mac installer, sign/notarize it.
411
+ generate-sign-dmg :
412
+ needs : notarize-macos
413
+ strategy :
414
+ matrix :
415
+ arch : [amd64]
416
+
417
+ runs-on : macos-12
418
+ steps :
419
+ - name : Checkout repo with icons/background
420
+ uses : actions/checkout@v3
421
+ with :
422
+ repository : ' bcmi-labs/arduino-create-agent-installer' # the repo which contains the icons/background
423
+ token : ${{ secrets.ARDUINO_CREATE_AGENT_CI_PAT }}
424
+
425
+ - name : Download artifact
426
+ uses : actions/download-artifact@v3
427
+ with :
428
+ name : ArduinoCreateAgent.app_${{ matrix.arch }}_notarized
429
+ path : ArduinoCreateAgent.app
430
+
431
+ - name : unzip artifact
432
+ working-directory : ArduinoCreateAgent.app
433
+ run : |
434
+ unzip ArduinoCreateAgent.app_${{ matrix.arch }}_notarized.zip
435
+ rm ArduinoCreateAgent.app_${{ matrix.arch }}_notarized.zip
436
+
437
+ - name : Install create-dmg
438
+ run : brew install create-dmg
439
+
440
+ - name : Genarate DMG
441
+ run : |
442
+ create-dmg \
443
+ --volname "ArduinoCreateAgent" \
444
+ --background "installer_icons/background.tiff" \
445
+ --window-pos 200 120 \
446
+ --window-size 500 320 \
447
+ --icon-size 80 \
448
+ --icon "ArduinoCreateAgent.app" 125 150 \
449
+ --app-drop-link 375 150 \
450
+ "ArduinoCreateAgent-${GITHUB_REF##*/}-osx-${{ matrix.arch }}-installer.dmg" \
451
+ "ArduinoCreateAgent.app"
452
+
453
+ - name : Import Code-Signing Certificates
454
+ run : |
455
+ echo "${{ secrets.INSTALLER_CERT_MAC_P12 }}" | base64 --decode > "${{ env.INSTALLER_CERT_MAC_PATH }}"
456
+ security create-keychain -p "${{ env.KEYCHAIN_PASSWORD }}" "${{ env.KEYCHAIN }}"
457
+ security default-keychain -s "${{ env.KEYCHAIN }}"
458
+ security unlock-keychain -p "${{ env.KEYCHAIN_PASSWORD }}" "${{ env.KEYCHAIN }}"
459
+ security import \
460
+ "${{ env.INSTALLER_CERT_MAC_PATH }}" \
461
+ -k "${{ env.KEYCHAIN }}" \
462
+ -f pkcs12 \
463
+ -A \
464
+ -T "/usr/bin/codesign" \
465
+ -P "${{ secrets.INSTALLER_CERT_MAC_PASSWORD }}"
466
+ security set-key-partition-list \
467
+ -S apple-tool:,apple: \
468
+ -s \
469
+ -k "${{ env.KEYCHAIN_PASSWORD }}" \
470
+ "${{ env.KEYCHAIN }}"
471
+
472
+ - name : Install gon for code signing and app notarization
473
+ run : |
474
+ wget -q https://github.com/mitchellh/gon/releases/download/v0.2.5/gon_macos.zip
475
+ unzip gon_macos.zip -d /usr/local/bin
476
+
477
+ - name : Write gon config to file
478
+ # gon does not allow env variables in config file (https://github.com/mitchellh/gon/issues/20)
479
+ run : |
480
+ cat > gon.config_installer.hcl <<EOF
481
+ source = ["ArduinoCreateAgent-${GITHUB_REF##*/}-osx-${{ matrix.arch }}-installer.dmg"]
482
+ bundle_id = "cc.arduino.${{ env.PROJECT_NAME }}-installer"
483
+
484
+ sign {
485
+ application_identity = "Developer ID Application: ARDUINO SA (7KT7ZWMCJT)"
486
+ }
487
+
488
+ # Ask Gon for zip output to force notarization process to take place.
489
+ # The CI will not upload the zip output
490
+ zip {
491
+ output_path = "ArduinoCreateAgent.app_${{ matrix.arch }}_notarized.zip"
492
+ }
493
+ EOF
494
+
495
+ - name : Code sign and notarize app
496
+ run : |
497
+ echo "gon will notarize executable in ArduinoCreateAgent-osx/ArduinoCreateAgent-${GITHUB_REF##*/}-osx-${{ matrix.arch }}-installer.dmg"
498
+ gon -log-level=debug -log-json gon.config_installer.hcl
499
+ timeout-minutes : 30
500
+
501
+ # tar dmg file to keep executable permission
502
+ - name : Tar files to keep permissions
503
+ run : tar -cvf ArduinoCreateAgent-${GITHUB_REF##*/}-osx-${{ matrix.arch }}-installer.tar ArduinoCreateAgent-${GITHUB_REF##*/}-osx-${{ matrix.arch }}-installer.dmg
504
+
505
+ - name : Upload artifacts
506
+ uses : actions/upload-artifact@v3
507
+ with :
508
+ name : ArduinoCreateAgent-osx-${{ matrix.arch }}
509
+ path : ArduinoCreateAgent*.tar
510
+ if-no-files-found : error
511
+
410
512
create-release :
411
513
runs-on : ubuntu-20.04
412
514
needs : [build, package]
0 commit comments