Merge pull request #2736 from Kingtous/feat/macos/rcodesign
feat: add macos p12 codesign for nightly build
This commit is contained in:
		
						commit
						6886a8948b
					
				
							
								
								
									
										56
									
								
								.github/workflows/flutter-nightly.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										56
									
								
								.github/workflows/flutter-nightly.yml
									
									
									
									
										vendored
									
									
								
							@ -142,13 +142,42 @@ jobs:
 | 
			
		||||
        job:
 | 
			
		||||
          - {
 | 
			
		||||
              target: x86_64-apple-darwin,
 | 
			
		||||
              os: macos-10.15,
 | 
			
		||||
              os: macos-latest,
 | 
			
		||||
              extra-build-args: "",
 | 
			
		||||
            }
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout source code
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
 | 
			
		||||
      - name: Import the codesign cert
 | 
			
		||||
        uses: apple-actions/import-codesign-certs@v1
 | 
			
		||||
        with: 
 | 
			
		||||
          p12-file-base64: ${{ secrets.MACOS_P12_BASE64 }}
 | 
			
		||||
          p12-password: ${{ secrets.MACOS_P12_PASSWORD }}
 | 
			
		||||
          keychain: rustdesk
 | 
			
		||||
      
 | 
			
		||||
      - name: Check sign and import sign key
 | 
			
		||||
        run: |
 | 
			
		||||
          security default-keychain -s rustdesk.keychain
 | 
			
		||||
          security find-identity -v
 | 
			
		||||
 | 
			
		||||
      - name: Import notarize key
 | 
			
		||||
        uses: timheuer/base64-to-file@v1.2
 | 
			
		||||
        with:
 | 
			
		||||
          # https://gregoryszorc.com/docs/apple-codesign/stable/apple_codesign_rcodesign.html#notarizing-and-stapling
 | 
			
		||||
          fileName: rustdesk.json
 | 
			
		||||
          fileDir: ${{ github.workspace }}
 | 
			
		||||
          encodedString: ${{ secrets.MACOS_NOTARIZE_JSON }}
 | 
			
		||||
          
 | 
			
		||||
      - name: Install rcodesign tool
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: | 
 | 
			
		||||
          pushd /tmp
 | 
			
		||||
          wget https://github.com/indygreg/apple-platform-rs/releases/download/apple-codesign%2F0.22.0/apple-codesign-0.22.0-macos-universal.tar.gz
 | 
			
		||||
          tar -zxvf apple-codesign-0.22.0-macos-universal.tar.gz
 | 
			
		||||
          mv apple-codesign-0.22.0-macos-universal/rcodesign /usr/local/bin
 | 
			
		||||
          popd
 | 
			
		||||
 | 
			
		||||
      - name: Install build runtime
 | 
			
		||||
        run: |
 | 
			
		||||
          brew install llvm create-dmg nasm yasm cmake gcc wget ninja
 | 
			
		||||
@ -158,7 +187,6 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          channel: "stable"
 | 
			
		||||
          flutter-version: ${{ env.FLUTTER_VERSION }}
 | 
			
		||||
          cache: true
 | 
			
		||||
 | 
			
		||||
      - name: Install Rust toolchain
 | 
			
		||||
        uses: actions-rs/toolchain@v1
 | 
			
		||||
@ -177,8 +205,12 @@ jobs:
 | 
			
		||||
        run: |
 | 
			
		||||
          dart pub global activate ffigen --version 5.0.1
 | 
			
		||||
          # flutter_rust_bridge
 | 
			
		||||
          pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 && popd
 | 
			
		||||
          pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . && popd
 | 
			
		||||
          pushd /tmp
 | 
			
		||||
            wget https://github.com/Kingtous/flutter_rust_bridge/releases/download/1.32.0-rustdesk/flutter_rust_bridge_codegen-x86_64-darwin.tgz
 | 
			
		||||
            tar -zxvf flutter_rust_bridge_codegen-x86_64-darwin.tgz
 | 
			
		||||
            mkdir -p ~/.cargo/bin
 | 
			
		||||
            mv flutter_rust_bridge_codegen ~/.cargo/bin; chmod +x ~/.cargo/bin/flutter_rust_bridge_codegen
 | 
			
		||||
          popd
 | 
			
		||||
          pushd flutter && flutter pub get && popd
 | 
			
		||||
          ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
 | 
			
		||||
 | 
			
		||||
@ -192,10 +224,6 @@ jobs:
 | 
			
		||||
        run: |
 | 
			
		||||
          $VCPKG_ROOT/vcpkg install libvpx libyuv opus
 | 
			
		||||
 | 
			
		||||
      - name: Install cargo bundle tools
 | 
			
		||||
        run: |
 | 
			
		||||
          cargo install cargo-bundle
 | 
			
		||||
 | 
			
		||||
      - name: Show version information (Rust, cargo, Clang)
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
@ -211,6 +239,18 @@ jobs:
 | 
			
		||||
          # --hwcodec not supported on macos yet
 | 
			
		||||
          ./build.py --flutter ${{ matrix.job.extra-build-args }}
 | 
			
		||||
 | 
			
		||||
      - name: Codesign app and create signed dmg
 | 
			
		||||
        run: |
 | 
			
		||||
          security default-keychain -s rustdesk.keychain
 | 
			
		||||
          security unlock-keychain -p ${{ secrets.MACOS_P12_PASSWORD }} rustdesk.keychain
 | 
			
		||||
          # start sign the rustdesk.app and dmg
 | 
			
		||||
          rm rustdesk-${{ env.VERSION }}.dmg || true
 | 
			
		||||
          codesign --force --options runtime -s ${{ secrets.MACOS_CODESIGN_IDENTITY }} --deep ./flutter/build/macos/Build/Products/Release/rustdesk.app -v
 | 
			
		||||
          create-dmg --icon "rustdesk.app" 200 190 --hide-extension "rustdesk.app" --window-size 800 400 --app-drop-link 600 185 rustdesk-${{ env.VERSION }}.dmg ./flutter/build/macos/Build/Products/Release/rustdesk.app
 | 
			
		||||
          codesign --force --options runtime -s ${{ secrets.MACOS_CODESIGN_IDENTITY }} --deep rustdesk-${{ env.VERSION }}.dmg -v
 | 
			
		||||
          # notarize the rustdesk-${{ env.VERSION }}.dmg
 | 
			
		||||
          rcodesign notary-submit --api-key-path ${{ github.workspace }}/rustdesk.json  --staple rustdesk-${{ env.VERSION }}.dmg
 | 
			
		||||
 | 
			
		||||
      - name: Rename rustdesk
 | 
			
		||||
        run: |
 | 
			
		||||
          for name in rustdesk*??.dmg; do
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								build.py
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								build.py
									
									
									
									
									
								
							@ -305,7 +305,8 @@ def build_flutter_deb(version, features):
 | 
			
		||||
 | 
			
		||||
def build_flutter_dmg(version, features):
 | 
			
		||||
    if not skip_cargo:
 | 
			
		||||
        os.system(f'cargo build --features {features} --lib --release')
 | 
			
		||||
        # set minimum osx build target, now is 10.14, which is the same as the flutter xcode project
 | 
			
		||||
        os.system(f'MACOSX_DEPLOYMENT_TARGET=10.14 cargo build --features {features} --lib --release')
 | 
			
		||||
    # copy dylib
 | 
			
		||||
    os.system(
 | 
			
		||||
        "cp target/release/liblibrustdesk.dylib target/release/librustdesk.dylib")
 | 
			
		||||
 | 
			
		||||
@ -411,6 +411,7 @@
 | 
			
		||||
				CODE_SIGN_IDENTITY = "-";
 | 
			
		||||
				COPY_PHASE_STRIP = NO;
 | 
			
		||||
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 | 
			
		||||
				ENABLE_HARDENED_RUNTIME = YES;
 | 
			
		||||
				ENABLE_NS_ASSERTIONS = NO;
 | 
			
		||||
				ENABLE_STRICT_OBJC_MSGSEND = YES;
 | 
			
		||||
				GCC_C_LANGUAGE_STANDARD = gnu11;
 | 
			
		||||
@ -436,8 +437,11 @@
 | 
			
		||||
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 | 
			
		||||
				CLANG_ENABLE_MODULES = YES;
 | 
			
		||||
				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
 | 
			
		||||
				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
 | 
			
		||||
				CODE_SIGN_STYLE = Automatic;
 | 
			
		||||
				COMBINE_HIDPI_IMAGES = YES;
 | 
			
		||||
				DEVELOPMENT_TEAM = "";
 | 
			
		||||
				ENABLE_HARDENED_RUNTIME = YES;
 | 
			
		||||
				INFOPLIST_FILE = Runner/Info.plist;
 | 
			
		||||
				LD_RUNPATH_SEARCH_PATHS = (
 | 
			
		||||
					"$(inherited)",
 | 
			
		||||
@ -492,6 +496,7 @@
 | 
			
		||||
				CODE_SIGN_IDENTITY = "-";
 | 
			
		||||
				COPY_PHASE_STRIP = NO;
 | 
			
		||||
				DEBUG_INFORMATION_FORMAT = dwarf;
 | 
			
		||||
				ENABLE_HARDENED_RUNTIME = YES;
 | 
			
		||||
				ENABLE_STRICT_OBJC_MSGSEND = YES;
 | 
			
		||||
				ENABLE_TESTABILITY = YES;
 | 
			
		||||
				GCC_C_LANGUAGE_STANDARD = gnu11;
 | 
			
		||||
@ -546,6 +551,7 @@
 | 
			
		||||
				CODE_SIGN_IDENTITY = "-";
 | 
			
		||||
				COPY_PHASE_STRIP = NO;
 | 
			
		||||
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 | 
			
		||||
				ENABLE_HARDENED_RUNTIME = YES;
 | 
			
		||||
				ENABLE_NS_ASSERTIONS = NO;
 | 
			
		||||
				ENABLE_STRICT_OBJC_MSGSEND = YES;
 | 
			
		||||
				GCC_C_LANGUAGE_STANDARD = gnu11;
 | 
			
		||||
@ -558,15 +564,15 @@
 | 
			
		||||
				MACOSX_DEPLOYMENT_TARGET = 10.14;
 | 
			
		||||
				MTL_ENABLE_DEBUG_INFO = NO;
 | 
			
		||||
				ONLY_ACTIVE_ARCH = YES;
 | 
			
		||||
				SDKROOT = macosx;
 | 
			
		||||
				SWIFT_COMPILATION_MODE = wholemodule;
 | 
			
		||||
				SWIFT_OPTIMIZATION_LEVEL = "-O";
 | 
			
		||||
				OTHER_LDFLAGS = (
 | 
			
		||||
					"-sectcreate",
 | 
			
		||||
					__CGPreLoginApp,
 | 
			
		||||
					__cgpreloginapp,
 | 
			
		||||
					/dev/null,
 | 
			
		||||
				);
 | 
			
		||||
				SDKROOT = macosx;
 | 
			
		||||
				SWIFT_COMPILATION_MODE = wholemodule;
 | 
			
		||||
				SWIFT_OPTIMIZATION_LEVEL = "-O";
 | 
			
		||||
			};
 | 
			
		||||
			name = Release;
 | 
			
		||||
		};
 | 
			
		||||
@ -577,8 +583,11 @@
 | 
			
		||||
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 | 
			
		||||
				CLANG_ENABLE_MODULES = YES;
 | 
			
		||||
				CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
 | 
			
		||||
				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
 | 
			
		||||
				CODE_SIGN_STYLE = Automatic;
 | 
			
		||||
				COMBINE_HIDPI_IMAGES = YES;
 | 
			
		||||
				DEVELOPMENT_TEAM = "";
 | 
			
		||||
				ENABLE_HARDENED_RUNTIME = YES;
 | 
			
		||||
				INFOPLIST_FILE = Runner/Info.plist;
 | 
			
		||||
				LD_RUNPATH_SEARCH_PATHS = (
 | 
			
		||||
					"$(inherited)",
 | 
			
		||||
@ -604,8 +613,11 @@
 | 
			
		||||
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 | 
			
		||||
				CLANG_ENABLE_MODULES = YES;
 | 
			
		||||
				CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
 | 
			
		||||
				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
 | 
			
		||||
				CODE_SIGN_STYLE = Automatic;
 | 
			
		||||
				COMBINE_HIDPI_IMAGES = YES;
 | 
			
		||||
				DEVELOPMENT_TEAM = "";
 | 
			
		||||
				ENABLE_HARDENED_RUNTIME = YES;
 | 
			
		||||
				INFOPLIST_FILE = Runner/Info.plist;
 | 
			
		||||
				LD_RUNPATH_SEARCH_PATHS = (
 | 
			
		||||
					"$(inherited)",
 | 
			
		||||
@ -616,16 +628,16 @@
 | 
			
		||||
					../../target/release,
 | 
			
		||||
				);
 | 
			
		||||
				MACOSX_DEPLOYMENT_TARGET = 10.14;
 | 
			
		||||
				PRODUCT_BUNDLE_IDENTIFIER = com.carriez.rustdesk;
 | 
			
		||||
				PROVISIONING_PROFILE_SPECIFIER = "";
 | 
			
		||||
				"SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = Runner/bridge_generated.h;
 | 
			
		||||
				SWIFT_VERSION = 5.0;
 | 
			
		||||
				OTHER_LDFLAGS = (
 | 
			
		||||
					"-sectcreate",
 | 
			
		||||
					__CGPreLoginApp,
 | 
			
		||||
					__cgpreloginapp,
 | 
			
		||||
					/dev/null,
 | 
			
		||||
				);
 | 
			
		||||
				PRODUCT_BUNDLE_IDENTIFIER = com.carriez.rustdesk;
 | 
			
		||||
				PROVISIONING_PROFILE_SPECIFIER = "";
 | 
			
		||||
				"SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = Runner/bridge_generated.h;
 | 
			
		||||
				SWIFT_VERSION = 5.0;
 | 
			
		||||
			};
 | 
			
		||||
			name = Release;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,8 @@
 | 
			
		||||
	<false/>
 | 
			
		||||
	<key>com.apple.security.cs.allow-jit</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
	<key>com.apple.security.device.audio-input</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
	<key>com.apple.security.network.server</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
</dict>
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,10 @@
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>com.apple.security.app-sandbox</key>
 | 
			
		||||
	<false/>
 | 
			
		||||
	<key>com.apple.security.cs.allow-jit</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
	<key>com.apple.security.device.audio-input</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
	<key>com.apple.security.network.client</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
</dict>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user