@@ -699,3 +699,112 @@ jobs:
699699          path : | 
700700            *.deb 
701701#  End build and sign Debian package
702+ 
703+   create-github-release :
704+     runs-on : ubuntu-latest 
705+     permissions :
706+       contents : write 
707+     needs :
708+       - create-linux-artifacts 
709+       - create-macos-artifacts 
710+       - windows_artifacts 
711+       - prereqs 
712+     if : | 
713+       success() || 
714+         (needs.create-linux-artifacts.result == 'skipped' && 
715+         needs.create-macos-artifacts.result == 'success' && 
716+         needs.windows_artifacts.result == 'success') 
717+ steps :
718+       - name : Download Windows portable (x86_64) 
719+         uses : actions/download-artifact@v4 
720+         with :
721+           name : win-portable-x86_64 
722+           path : win-portable-x86_64 
723+ 
724+       - name : Download Windows portable (aarch64) 
725+         uses : actions/download-artifact@v4 
726+         with :
727+           name : win-portable-aarch64 
728+           path : win-portable-aarch64 
729+ 
730+       - name : Download Windows installer (x86_64) 
731+         uses : actions/download-artifact@v4 
732+         with :
733+           name : win-installer-x86_64 
734+           path : win-installer-x86_64 
735+ 
736+       - name : Download Windows installer (aarch64) 
737+         uses : actions/download-artifact@v4 
738+         with :
739+           name : win-installer-aarch64 
740+           path : win-installer-aarch64 
741+ 
742+       - name : Download macOS artifacts 
743+         uses : actions/download-artifact@v4 
744+         with :
745+           name : macos-artifacts 
746+           path : macos-artifacts 
747+ 
748+       - name : Download Debian package 
749+         uses : actions/download-artifact@v4 
750+         with :
751+           name : linux-artifacts 
752+           path : deb-package 
753+ 
754+       - uses : actions/github-script@v6 
755+         with :
756+           script : | 
757+             const fs = require('fs'); 
758+             const path = require('path'); 
759+ 
760+             var releaseMetadata = { 
761+               owner: context.repo.owner, 
762+               repo: context.repo.repo 
763+             }; 
764+ 
765+             // Create the release 
766+             var tagName = "${{ needs.prereqs.outputs.tag_name }}"; 
767+             var createdRelease = await github.rest.repos.createRelease({ 
768+               ...releaseMetadata, 
769+               draft: true, 
770+               tag_name: tagName, 
771+               name: tagName 
772+             }); 
773+             releaseMetadata.release_id = createdRelease.data.id; 
774+ 
775+             // Uploads contents of directory to the release created above 
776+             async function uploadDirectoryToRelease(directory, includeExtensions=[]) { 
777+               return fs.promises.readdir(directory) 
778+                 .then(async(files) => Promise.all( 
779+                   files.filter(file => { 
780+                     return includeExtensions.length==0 || includeExtensions.includes(path.extname(file).toLowerCase()); 
781+                   }) 
782+                   .map(async (file) => { 
783+                     var filePath = path.join(directory, file); 
784+                     github.rest.repos.uploadReleaseAsset({ 
785+                       ...releaseMetadata, 
786+                       name: file, 
787+                       headers: { 
788+                         "content-length": (await fs.promises.stat(filePath)).size 
789+                       }, 
790+                       data: fs.createReadStream(filePath) 
791+                     }); 
792+                   })) 
793+                 ); 
794+             } 
795+ 
796+             await Promise.all([ 
797+               // Upload Windows x86_64 artifacts 
798+               uploadDirectoryToRelease('win-installer-x86_64', ['.exe']), 
799+               uploadDirectoryToRelease('win-portable-x86_64', ['.exe']), 
800+ 
801+               // Upload Windows aarch64 artifacts 
802+               uploadDirectoryToRelease('win-installer-aarch64', ['.exe']), 
803+               uploadDirectoryToRelease('win-portable-aarch64', ['.exe']), 
804+ 
805+               // Upload Mac artifacts 
806+               uploadDirectoryToRelease('macos-artifacts'), 
807+ 
808+               // Upload Ubuntu artifacts 
809+               uploadDirectoryToRelease('deb-package') 
810+             ]); 
0 commit comments