@@ -1249,24 +1249,39 @@ def velopack_package_finish(self):
12491249
12501250 # The .app bundle path (e.g., "/path/to/Second Life Release.app")
12511251 app_bundle = self .get_dst_prefix ()
1252+ # Bundle ID from args (e.g., "com.secondlife.viewer")
1253+ bundle_id = self .args .get ('bundleid' , 'com.secondlife.indra.viewer' )
1254+
1255+ # Icon path for macOS
1256+ icon_path = os .path .join (self .get_src_prefix (), self .icon_path (), 'secondlife.icns' )
1257+
1258+ # The main executable inside Contents/MacOS/ is named after the channel
1259+ main_exe = self .channel ()
1260+
1261+ # In CI, defer Velopack packaging to the sign step where code signing
1262+ # credentials are available. Emit metadata as GitHub outputs so the
1263+ # sign step can run vpk pack after signing the app bundle.
1264+ if os .getenv ('GITHUB_ACTIONS' ):
1265+ self .set_github_output ('velopack_mac_pack_id' , pack_id )
1266+ self .set_github_output ('velopack_mac_pack_version' , pack_version )
1267+ self .set_github_output ('velopack_mac_pack_title' , pack_title )
1268+ self .set_github_output ('velopack_mac_main_exe' , main_exe )
1269+ self .set_github_output ('velopack_mac_bundle_id' , bundle_id )
1270+ print ("CI mode: macOS Velopack packaging deferred to sign step" )
1271+ return
1272+
1273+ # Local builds: run vpk pack directly (unsigned)
1274+
12521275 # Parent directory containing the .app bundle - this is where we run vpk from
12531276 # and where the Releases directory will be created
12541277 work_dir = os .path .dirname (app_bundle )
1255- # Bundle ID from args (e.g., "com.secondlife.viewer")
1256- bundle_id = self .args .get ('bundleid' , 'com.secondlife.indra.viewer' )
12571278
12581279 # Output directory for releases - clean it first to avoid version conflicts
12591280 releases_dir = os .path .join (work_dir , 'Releases' )
12601281 if os .path .exists (releases_dir ):
12611282 print ("Cleaning existing Releases directory: %s" % releases_dir )
12621283 shutil .rmtree (releases_dir )
12631284
1264- # Icon path for macOS
1265- icon_path = os .path .join (self .get_src_prefix (), self .icon_path (), 'secondlife.icns' )
1266-
1267- # The main executable inside Contents/MacOS/ is named after the channel
1268- main_exe = self .channel ()
1269-
12701285 # Build vpk command for macOS
12711286 # See: https://docs.velopack.io/reference/cli/content/vpk-osx
12721287 vpk_args = [
0 commit comments